Skip to content

Commit 7e3ccf9

Browse files
authored
Add avaje-jsonb v0.11 (fabienrenaud#44)
1 parent 118e076 commit 7e3ccf9

File tree

14 files changed

+135
-2
lines changed

14 files changed

+135
-2
lines changed

build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ dependencies {
8585
implementation group: 'com.github.javadev', name: 'underscore', version: '1.71'
8686
//purejson
8787
implementation group: 'io.github.senthilganeshs', name: 'purejson', version: '1.0.1'
88+
// avaje-jsonb
89+
implementation group: 'io.avaje', name: 'avaje-jsonb', version: '0.11'
90+
implementation group: 'io.avaje', name: 'avaje-jsonb-jackson', version: '0.11'
91+
annotationProcessor group: 'io.avaje', name: 'avaje-jsonb-generator', version: '0.11'
8892

8993
// Test
9094
testImplementation group: 'junit', name: 'junit', version: '4.13.2'

src/main/java/com/github/fabienrenaud/jjb/JsonBench.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,12 @@ public Object underscore_java() throws Exception {
114114
public Object purejson() throws Exception {
115115
return null;
116116
}
117+
118+
public Object avajejsonb_jackson() throws Exception {
119+
return null;
120+
}
121+
122+
public Object avajejsonb() throws Exception {
123+
return null;
124+
}
117125
}

src/main/java/com/github/fabienrenaud/jjb/databind/Deserialization.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,20 @@ public Object dsljson_reflection() throws Exception {
9393
return JSON_SOURCE().provider().dsljson_reflection().deserialize(JSON_SOURCE().pojoType(), buffer, buffer.length);
9494
}
9595

96+
@Benchmark
97+
@Override
98+
public Object avajejsonb_jackson() throws Exception {
99+
byte[] buffer = JSON_SOURCE().nextByteArray();
100+
return JSON_SOURCE().provider().avajeJsonb_jackson().fromJson(buffer);
101+
}
102+
103+
@Benchmark
104+
@Override
105+
public Object avajejsonb() throws Exception {
106+
byte[] buffer = JSON_SOURCE().nextByteArray();
107+
return JSON_SOURCE().provider().avajeJsonb_default().fromJson(buffer);
108+
}
109+
96110
@Benchmark
97111
@Override
98112
public Object logansquare() throws Exception {

src/main/java/com/github/fabienrenaud/jjb/databind/Serialization.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,22 @@ public Object dsljson_reflection() throws Exception {
114114
return baos;
115115
}
116116

117+
@Benchmark
118+
@Override
119+
public Object avajejsonb_jackson() {
120+
ByteArrayOutputStream baos = JsonUtils.byteArrayOutputStream();
121+
JSON_SOURCE().provider().avajeJsonb_jackson().toJson(JSON_SOURCE().nextPojo(), baos);
122+
return baos;
123+
}
124+
125+
@Benchmark
126+
@Override
127+
public Object avajejsonb() {
128+
ByteArrayOutputStream baos = JsonUtils.byteArrayOutputStream();
129+
JSON_SOURCE().provider().avajeJsonb_default().toJson(JSON_SOURCE().nextPojo(), baos);
130+
return baos;
131+
}
132+
117133
@Benchmark
118134
@Override
119135
public Object logansquare() throws Exception {

src/main/java/com/github/fabienrenaud/jjb/model/Clients.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.Objects;
1616
import java.util.UUID;
1717

18+
@io.avaje.jsonb.Json
1819
@JsonObject
1920
@CompiledJson
2021
@jodd.json.meta.JSON
@@ -44,6 +45,7 @@ public String toString() {
4445
return "Clients{" + "clients=" + clients + '}';
4546
}
4647

48+
@io.avaje.jsonb.Json
4749
@JsonObject
4850
public static final class Client {
4951

@@ -217,6 +219,7 @@ public static EyeColor fromNumber(int i) {
217219
}
218220
}
219221

222+
@io.avaje.jsonb.Json
220223
@JsonObject
221224
public static final class Partner {
222225

src/main/java/com/github/fabienrenaud/jjb/model/Users.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
/**
1212
* Created by frenaud on 7/3/16.
1313
*/
14+
@io.avaje.jsonb.Json
1415
@JsonObject
1516
@CompiledJson
1617
@jodd.json.meta.JSON
@@ -40,6 +41,7 @@ public String toString() {
4041
return "Users{" + "users=" + users + '}';
4142
}
4243

44+
@io.avaje.jsonb.Json
4345
@JsonObject
4446
@CompiledJson
4547
public static final class User {
@@ -137,6 +139,7 @@ public String toString() {
137139
}
138140
}
139141

142+
@io.avaje.jsonb.Json
140143
@JsonObject
141144
@CompiledJson
142145
public static final class Friend {

src/main/java/com/github/fabienrenaud/jjb/provider/ClientsJsonProvider.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import flexjson.JSONDeserializer;
2626
import flexjson.JSONSerializer;
2727
import flexjson.transformer.AbstractTransformer;
28+
import io.avaje.jsonb.jackson.JacksonAdapter;
29+
import io.avaje.jsonb.stream.JsonStream;
2830
import jodd.json.TypeJsonSerializer;
2931
import jodd.typeconverter.TypeConverter;
3032
import jodd.typeconverter.TypeConverterManager;
@@ -144,6 +146,13 @@ public void toJson(com.squareup.moshi.JsonWriter writer, @Nullable OffsetDateTim
144146
private final DslJson<Object> dsljson = new DslJson<>(Settings.withRuntime().includeServiceLoader());
145147
private final DslJson<Object> dsljson_reflection = new DslJson<>(Settings.withRuntime());//don't include generated classes
146148

149+
private final io.avaje.jsonb.JsonType<Clients> avajeJsonb_jackson = io.avaje.jsonb.Jsonb
150+
.newBuilder()
151+
.adapter(new JacksonAdapter(/* serializeNulls */ true, /* serializeEmpty */ true, /* failOnUnknown */ false)).build().type(Clients.class);
152+
private final io.avaje.jsonb.JsonType<Clients> avajeJsonb_default = io.avaje.jsonb.Jsonb
153+
.newBuilder()
154+
.adapter(new JsonStream(/* serializeNulls */ true, /* serializeEmpty */ true, /* failOnUnknown */ false)).build().type(Clients.class);
155+
147156
private final Map<String, Object> jsonioStreamOptions = new HashMap<>();
148157

149158
public ClientsJsonProvider() {
@@ -234,6 +243,16 @@ public DslJson<Object> dsljson_reflection() {
234243
return dsljson_reflection;
235244
}
236245

246+
@Override
247+
public io.avaje.jsonb.JsonType<Clients> avajeJsonb_jackson() {
248+
return avajeJsonb_jackson;
249+
}
250+
251+
@Override
252+
public io.avaje.jsonb.JsonType<Clients> avajeJsonb_default() {
253+
return avajeJsonb_default;
254+
}
255+
237256
@Override
238257
public jodd.json.JsonParser joddDeser() {
239258
return JODD_DESER.get();

src/main/java/com/github/fabienrenaud/jjb/provider/JsonProvider.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,8 @@ public interface JsonProvider<T> {
5151
jodd.json.JsonSerializer joddSer();
5252

5353
com.squareup.moshi.JsonAdapter<T> moshi();
54+
55+
io.avaje.jsonb.JsonType<T> avajeJsonb_jackson();
56+
57+
io.avaje.jsonb.JsonType<T> avajeJsonb_default();
5458
}

src/main/java/com/github/fabienrenaud/jjb/provider/UsersJsonProvider.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.cedarsoftware.util.io.JsonReader;
44
import com.cedarsoftware.util.io.JsonWriter;
5-
import com.dslplatform.json.ConfigureJava8;
65
import com.dslplatform.json.DslJson;
76
import com.dslplatform.json.runtime.Settings;
87
import com.fasterxml.jackson.core.JsonFactory;
@@ -15,6 +14,9 @@
1514

1615
import flexjson.JSONDeserializer;
1716
import flexjson.JSONSerializer;
17+
import io.avaje.jsonb.JsonType;
18+
import io.avaje.jsonb.stream.JsonStream;
19+
import io.avaje.jsonb.jackson.JacksonAdapter;
1820
import org.apache.johnzon.core.JsonProviderImpl;
1921
import org.apache.johnzon.mapper.Mapper;
2022
import org.eclipse.yasson.JsonBindingProvider;
@@ -52,6 +54,9 @@ public class UsersJsonProvider implements JsonProvider<Users> {
5254

5355
private final Map<String, Object> jsonioStreamOptions = new HashMap<>();
5456

57+
private io.avaje.jsonb.JsonType<Users> avajeJsonb_jackson = io.avaje.jsonb.Jsonb.newBuilder().adapter(new JacksonAdapter(/* serializeNulls */ true, /* serializeEmpty */ true, /* failOnUnknown */ false)).build().type(Users.class);
58+
private io.avaje.jsonb.JsonType<Users> avajeJsonb_default = io.avaje.jsonb.Jsonb.newBuilder().adapter(new JsonStream(/* serializeNulls */ true, /* serializeEmpty */ true, /* failOnUnknown */ false)).build().type(Users.class);
59+
5560
public UsersJsonProvider() {
5661
jacksonAfterburner.registerModule(new AfterburnerModule());
5762

@@ -150,6 +155,16 @@ public com.squareup.moshi.JsonAdapter<Users> moshi() {
150155
return moshi;
151156
}
152157

158+
@Override
159+
public JsonType<Users> avajeJsonb_jackson() {
160+
return avajeJsonb_jackson;
161+
}
162+
163+
@Override
164+
public JsonType<Users> avajeJsonb_default() {
165+
return avajeJsonb_default;
166+
}
167+
153168
private static final ThreadLocal<flexjson.JSONSerializer> FLEXJSON_SER = new ThreadLocal<flexjson.JSONSerializer>() {
154169
@Override
155170
protected JSONSerializer initialValue() {

src/main/java/com/github/fabienrenaud/jjb/stream/Deserialization.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.github.fabienrenaud.jjb.stream;
22

3-
import java.io.BufferedInputStream;
43
import java.io.ByteArrayInputStream;
54
import java.io.IOException;
65
import java.io.InputStream;
@@ -62,6 +61,18 @@ public Object jackson() throws IOException {
6261
}
6362
}
6463

64+
@Benchmark
65+
@Override
66+
public Object avajejsonb_jackson() throws IOException {
67+
return JSON_SOURCE().provider().avajeJsonb_jackson().fromJson(JSON_SOURCE().nextByteArray());
68+
}
69+
70+
@Benchmark
71+
@Override
72+
public Object avajejsonb() throws IOException {
73+
return JSON_SOURCE().provider().avajeJsonb_default().fromJson(JSON_SOURCE().nextByteArray());
74+
}
75+
6576
@Benchmark
6677
@Override
6778
public Object gson() throws Exception {

0 commit comments

Comments
 (0)