Skip to content

Commit bcd75eb

Browse files
committed
Add serialise/deseriliser examples and file move
1 parent 3c4e40c commit bcd75eb

23 files changed

+327
-57
lines changed

json-b-1-0/src/main/java/com/readlearncode/BookAdapter.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

json-b-1-0/src/main/java/com/readlearncode/JsonBindingExample.java

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package com.readlearncode;
22

3+
import com.readlearncode.devWorks.overview.BookletAdapter;
34
import com.readlearncode.domain.Book;
45

56
import javax.json.bind.Jsonb;
67
import javax.json.bind.JsonbBuilder;
78
import javax.json.bind.JsonbConfig;
9+
import javax.json.bind.config.BinaryDataStrategy;
810
import javax.json.bind.config.PropertyNamingStrategy;
911
import javax.json.bind.config.PropertyOrderStrategy;
12+
import javax.json.bind.config.PropertyVisibilityStrategy;
13+
import java.lang.reflect.Field;
14+
import java.lang.reflect.Method;
1015
import java.util.ArrayList;
1116
import java.util.List;
17+
import java.util.Locale;
1218

1319
/**
1420
* Source code github.com/readlearncode
@@ -39,7 +45,7 @@ public String serializeArrayOfBooks() {
3945
}
4046

4147
public String serializeArrayOfStrings() {
42-
return JsonbBuilder.create().toJson(new String[]{"Java EE","Java SE"});
48+
return JsonbBuilder.create().toJson(new String[]{"Java EE", "Java SE"});
4349
}
4450

4551
public String customizedMapping() {
@@ -56,35 +62,63 @@ public String customizedMapping() {
5662
return jsonb.toJson(book1);
5763
}
5864

59-
public String annotationPropertiesMapping(){
65+
public String annotationPropertiesMapping() {
6066
return JsonbBuilder.create().toJson(magazine);
6167
}
6268

63-
public String annotationMethodMapping(){
69+
public String annotationMethodMapping() {
6470
return JsonbBuilder.create().toJson(newspaper);
6571
}
6672

67-
public String annotationPropertyAndMethodMapping(){
73+
public String annotationPropertyAndMethodMapping() {
6874
return JsonbBuilder.create().toJson(booklet);
6975
}
7076

71-
public String bookAdapterToJson(){
72-
JsonbConfig jsonbConfig = new JsonbConfig().withAdapters(new BookAdapter());
77+
public String bookAdapterToJson() {
78+
JsonbConfig jsonbConfig = new JsonbConfig().withAdapters(new BookletAdapter());
7379
Jsonb jsonb = JsonbBuilder.create(jsonbConfig);
7480
return jsonb.toJson(book1);
7581
}
7682

77-
public Book bookAdapterToBook(){
78-
JsonbConfig jsonbConfig = new JsonbConfig().withAdapters(new BookAdapter());
83+
public Book bookAdapterToBook() {
84+
JsonbConfig jsonbConfig = new JsonbConfig().withAdapters(new BookletAdapter());
7985
Jsonb jsonb = JsonbBuilder.create(jsonbConfig);
8086
String json = "{\"isbn\":\"1234567890\",\"bookTitle\":\"Professional Java EE Design Patterns\",\"firstName\":\"Alex\",\"lastName\":\"Theedom\"}";
8187
return jsonb.fromJson(json, Book.class);
8288
}
8389

8490

85-
public void usingAProvider(){
86-
91+
public void usingAProvider() {
8792
JsonbBuilder builder = JsonbBuilder.newBuilder("aProvider");
93+
}
94+
95+
96+
public String allCustomizedMapping() {
8897

98+
PropertyVisibilityStrategy vis = new PropertyVisibilityStrategy() {
99+
@Override
100+
public boolean isVisible(Field field) {
101+
return false;
102+
}
103+
104+
@Override
105+
public boolean isVisible(Method method) {
106+
return false;
107+
}
108+
};
109+
110+
JsonbConfig jsonbConfig = new JsonbConfig()
111+
.withPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CASE_WITH_DASHES)
112+
.withPropertyOrderStrategy(PropertyOrderStrategy.LEXICOGRAPHICAL)
113+
.withPropertyVisibilityStrategy(vis)
114+
.withStrictIJSON(true)
115+
.withFormatting(true)
116+
.withNullValues(true)
117+
.withBinaryDataStrategy(BinaryDataStrategy.BASE_64_URL)
118+
.withDateFormat("MM/dd/yyyy", Locale.ENGLISH);
119+
120+
Jsonb jsonb = JsonbBuilder.create(jsonbConfig);
121+
122+
return jsonb.toJson(book1);
89123
}
90124
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.readlearncode.devWorks.overview;
2+
3+
import com.readlearncode.devWorks.overview.domain.Book;
4+
5+
import javax.json.bind.serializer.DeserializationContext;
6+
import javax.json.bind.serializer.JsonbDeserializer;
7+
import javax.json.stream.JsonParser;
8+
import java.lang.reflect.Type;
9+
10+
/**
11+
* Source code github.com/readlearncode
12+
*
13+
* @author Alex Theedom www.readlearncode.com
14+
* @version 1.0
15+
*/
16+
public class BookDeserializer implements JsonbDeserializer<Book> {
17+
18+
@Override
19+
public Book deserialize(JsonParser parser, DeserializationContext ctx, Type rtType) {
20+
Book book = null;
21+
while (parser.hasNext()) {
22+
JsonParser.Event event = parser.next();
23+
if (event == JsonParser.Event.KEY_NAME) {
24+
String className = parser.getString();
25+
parser.next();
26+
try {
27+
book = ctx.deserialize(Class.forName(className).asSubclass(Book.class), parser);
28+
} catch (ClassNotFoundException e) {
29+
e.printStackTrace();
30+
}
31+
}
32+
}
33+
return book;
34+
}
35+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.readlearncode.devWorks.overview;
2+
3+
import com.readlearncode.devWorks.overview.domain.Book;
4+
5+
import javax.json.bind.serializer.JsonbSerializer;
6+
import javax.json.bind.serializer.SerializationContext;
7+
import javax.json.stream.JsonGenerator;
8+
9+
/**
10+
* Source code github.com/readlearncode
11+
*
12+
* @author Alex Theedom www.readlearncode.com
13+
* @version 1.0
14+
*/
15+
public class BookSerializer implements JsonbSerializer<Book> {
16+
17+
@Override
18+
public void serialize(Book book, JsonGenerator generator, SerializationContext ctx) {
19+
20+
if (book != null) {
21+
generator.writeStartObject();
22+
ctx.serialize(book.getClass().getName(), book, generator);
23+
generator.writeEnd();
24+
} else {
25+
ctx.serialize(null, generator);
26+
}
27+
}
28+
}

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/bookletAdapter.java renamed to json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/BookletAdapter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.readlearncode.devWorks.overview;
22

3-
import com.readlearncode.domain.Author;
3+
import com.readlearncode.devWorks.overview.domain.Author;
4+
import com.readlearncode.devWorks.overview.domain.Booklet;
45

56
import javax.json.Json;
67
import javax.json.JsonObject;
@@ -12,7 +13,7 @@
1213
* @author Alex Theedom www.readlearncode.com
1314
* @version 1.0
1415
*/
15-
public class bookletAdapter implements JsonbAdapter<Booklet, JsonObject> {
16+
public class BookletAdapter implements JsonbAdapter<Booklet, JsonObject> {
1617

1718
@Override
1819
public JsonObject adaptToJson(Booklet booklet) throws Exception {

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/ComprehensiveExample.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.readlearncode.devWorks.overview;
22

33

4+
import com.readlearncode.devWorks.overview.domain.Author;
5+
import com.readlearncode.devWorks.overview.domain.Binding;
6+
import com.readlearncode.devWorks.overview.domain.Magazine;
7+
48
import javax.json.bind.JsonbBuilder;
59
import java.net.MalformedURLException;
610
import java.net.URL;

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/EnumExample.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.readlearncode.devWorks.overview;
22

3+
import com.readlearncode.devWorks.overview.domain.Binding;
4+
35
import javax.json.bind.JsonbBuilder;
46

57
/**
@@ -11,7 +13,7 @@
1113
public class EnumExample {
1214

1315
public String enumSerialisation() {
14-
return JsonbBuilder.create().toJson(Binding.HARD_BACK);
16+
return JsonbBuilder.create().toJson(Binding.HARD_BACK.name());
1517
}
1618

1719
public class container {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.readlearncode.devWorks.overview;
2+
3+
import com.readlearncode.devWorks.overview.domain.Magazine;
4+
5+
import javax.json.bind.serializer.JsonbSerializer;
6+
import javax.json.bind.serializer.SerializationContext;
7+
import javax.json.stream.JsonGenerator;
8+
9+
/**
10+
* Source code github.com/readlearncode
11+
*
12+
* @author Alex Theedom www.readlearncode.com
13+
* @version 1.0
14+
*/
15+
public class MagazineSerializer implements JsonbSerializer<Magazine> {
16+
17+
@Override
18+
public void serialize(Magazine magazine, JsonGenerator generator, SerializationContext ctx) {
19+
20+
if (magazine != null) {
21+
generator.writeStartObject();
22+
ctx.serialize("name", magazine.getAuthor(), generator);
23+
generator.writeEnd();
24+
} else {
25+
ctx.serialize(null, generator);
26+
}
27+
28+
}
29+
}

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/MinimalExample.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.readlearncode.devWorks.overview;
22

3+
import com.readlearncode.devWorks.overview.domain.Book;
4+
35
import javax.json.bind.Jsonb;
46
import javax.json.bind.JsonbBuilder;
57

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/NestedClassExample.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.readlearncode.devWorks.overview;
22

3+
import com.readlearncode.devWorks.overview.domain.OuterClass;
4+
35
import javax.json.bind.Jsonb;
46
import javax.json.bind.JsonbBuilder;
57

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.readlearncode.devWorks.overview.domain;
2+
3+
import java.util.Objects;
4+
5+
/**
6+
* Source code github.com/readlearncode
7+
*
8+
* @author Alex Theedom www.readlearncode.com
9+
* @version 1.0
10+
*/
11+
public class Author {
12+
13+
private String firstName;
14+
private String lastName;
15+
16+
public Author() {
17+
}
18+
19+
public Author(String firstName, String lastName) {
20+
this.firstName = firstName;
21+
this.lastName = lastName;
22+
}
23+
24+
public String getFirstName() {
25+
return firstName;
26+
}
27+
28+
public void setFirstName(String firstName) {
29+
this.firstName = firstName;
30+
}
31+
32+
public String getLastName() {
33+
return lastName;
34+
}
35+
36+
public void setLastName(String lastName) {
37+
this.lastName = lastName;
38+
}
39+
40+
@Override
41+
public boolean equals(Object o) {
42+
if (this == o) return true;
43+
if (o == null || getClass() != o.getClass()) return false;
44+
Author author = (Author) o;
45+
return Objects.equals(firstName, author.firstName) &&
46+
Objects.equals(lastName, author.lastName);
47+
}
48+
49+
@Override
50+
public int hashCode() {
51+
return Objects.hash(firstName, lastName);
52+
}
53+
54+
@Override
55+
public String toString() {
56+
return "Author{" +
57+
"firstName='" + firstName + '\'' +
58+
", lastName='" + lastName + '\'' +
59+
'}';
60+
}
61+
}

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/Binding.java renamed to json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/domain/Binding.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.readlearncode.devWorks.overview;
1+
package com.readlearncode.devWorks.overview.domain;
22

33
/**
44
* Source code github.com/readlearncode

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/Book.java renamed to json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/domain/Book.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.readlearncode.devWorks.overview;
1+
package com.readlearncode.devWorks.overview.domain;
22

33
import java.util.Objects;
44

json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/Booklet.java renamed to json-b-1-0/src/main/java/com/readlearncode/devWorks/overview/domain/Booklet.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
package com.readlearncode.devWorks.overview;
1+
package com.readlearncode.devWorks.overview.domain;
22

3-
import com.readlearncode.domain.Author;
3+
import com.readlearncode.devWorks.overview.BookletAdapter;
44

5+
import javax.json.bind.annotation.JsonbTypeAdapter;
56
import java.util.Objects;
67

78
/**
@@ -10,6 +11,7 @@
1011
* @author Alex Theedom www.readlearncode.com
1112
* @version 1.0
1213
*/
14+
@JsonbTypeAdapter(BookletAdapter.class)
1315
public class Booklet {
1416

1517
private String title;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy