Skip to content

Commit 83239b0

Browse files
authored
Upgrade to jackson 3
2 parents 3ecb4f0 + 825ffe4 commit 83239b0

File tree

14 files changed

+102
-111
lines changed

14 files changed

+102
-111
lines changed

build.gradle

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
plugins {
2-
id 'net.researchgate.release' version '3.0.0'
2+
id 'net.researchgate.release' version '3.1.0'
33
id 'java'
44
id 'maven-publish'
55
id 'signing'
6-
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
6+
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
77
}
88

99
group = 'fr.maif'
1010

1111
ext {
12-
vavrVersion = "0.10.6"
13-
jacksonVersion = "2.18.4"
14-
lombokVersion = "1.18.38"
15-
jupiterVersion = "5.13.3"
12+
vavrVersion = "1.0.1"
13+
jacksonVersion = "3.1.1"
14+
lombokVersion = "1.18.44"
15+
jupiterVersion = "5.13.1"
1616
}
1717
repositories {
1818
mavenCentral()
@@ -31,12 +31,10 @@ dependencies {
3131
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
3232

3333
implementation "io.vavr:vavr:$vavrVersion"
34-
implementation "io.vavr:vavr-jackson:0.10.3"
35-
implementation "com.fasterxml.jackson.core:jackson-core:$jacksonVersion"
36-
implementation "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
37-
implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
38-
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$jacksonVersion"
39-
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion"
34+
implementation "io.vavr:vavr-jackson:1.0.0"
35+
implementation "tools.jackson.core:jackson-core:$jacksonVersion"
36+
implementation "com.fasterxml.jackson.core:jackson-annotations:2.21"
37+
implementation "tools.jackson.core:jackson-databind:$jacksonVersion"
4038

4139
testCompileOnly "org.projectlombok:lombok:$lombokVersion"
4240
testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion"
@@ -45,7 +43,7 @@ dependencies {
4543
testImplementation("org.junit.jupiter:junit-jupiter")
4644
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
4745

48-
testImplementation "org.assertj:assertj-core:3.27.3"
46+
testImplementation "org.assertj:assertj-core:3.27.7"
4947
testImplementation "com.github.erosb:everit-json-schema:1.14.6"
5048
}
5149

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=1.7.0-SNAPSHOT
1+
version=2.0.0-SNAPSHOT

gradle/wrapper/gradle-wrapper.jar

-19.7 KB
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/main/java/fr/maif/json/Json.java

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package fr.maif.json;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
4-
import com.fasterxml.jackson.core.json.JsonWriteFeature;
5-
import com.fasterxml.jackson.core.type.TypeReference;
6-
import com.fasterxml.jackson.databind.DeserializationFeature;
7-
import com.fasterxml.jackson.databind.JsonNode;
8-
import com.fasterxml.jackson.databind.ObjectMapper;
9-
import com.fasterxml.jackson.databind.ObjectWriter;
10-
import com.fasterxml.jackson.databind.SerializationFeature;
11-
import com.fasterxml.jackson.databind.node.ArrayNode;
12-
import com.fasterxml.jackson.databind.node.BooleanNode;
13-
import com.fasterxml.jackson.databind.node.IntNode;
14-
import com.fasterxml.jackson.databind.node.LongNode;
15-
import com.fasterxml.jackson.databind.node.ObjectNode;
16-
import com.fasterxml.jackson.databind.node.TextNode;
17-
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
18-
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
4+
import tools.jackson.core.json.JsonWriteFeature;
5+
import tools.jackson.core.type.TypeReference;
6+
import tools.jackson.databind.DeserializationFeature;
7+
import tools.jackson.databind.JsonNode;
8+
import tools.jackson.databind.ObjectMapper;
9+
import tools.jackson.databind.ObjectWriter;
10+
import tools.jackson.databind.SerializationFeature;
11+
import tools.jackson.databind.cfg.DateTimeFeature;
12+
import tools.jackson.databind.json.JsonMapper;
13+
import tools.jackson.databind.node.ArrayNode;
14+
import tools.jackson.databind.node.BooleanNode;
15+
import tools.jackson.databind.node.IntNode;
16+
import tools.jackson.databind.node.LongNode;
17+
import tools.jackson.databind.node.ObjectNode;
18+
import tools.jackson.databind.node.StringNode;
1919
import io.vavr.collection.List;
2020
import io.vavr.collection.Traversable;
2121
import io.vavr.control.Option;
@@ -30,15 +30,13 @@ public class Json {
3030
private static ObjectMapper defaultObjectMapper = newDefaultMapper();
3131

3232
public static ObjectMapper newDefaultMapper() {
33-
ObjectMapper mapper = new ObjectMapper();
34-
mapper.registerModule(new VavrModule());
35-
mapper.registerModule(new Jdk8Module());
36-
mapper.registerModule(new JavaTimeModule());
37-
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
38-
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
39-
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
40-
mapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
41-
return mapper;
33+
return JsonMapper.builder()
34+
.addModule(new VavrModule())
35+
.configure(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS, false)
36+
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
37+
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
38+
.changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_ABSENT))
39+
.build();
4240
}
4341

4442
/**
@@ -63,18 +61,14 @@ public static ObjectMapper mapper() {
6361

6462

6563
private static String generateJson(Object o, boolean prettyPrint, boolean escapeNonASCII) {
66-
try {
67-
ObjectWriter writer = mapper().writer();
68-
if (prettyPrint) {
69-
writer = writer.with(SerializationFeature.INDENT_OUTPUT);
70-
}
71-
if (escapeNonASCII) {
72-
writer = writer.with(JsonWriteFeature.ESCAPE_NON_ASCII);
73-
}
74-
return writer.writeValueAsString(o);
75-
} catch (IOException e) {
76-
throw new RuntimeException(e);
64+
ObjectWriter writer = mapper().writer();
65+
if (prettyPrint) {
66+
writer = writer.with(SerializationFeature.INDENT_OUTPUT);
67+
}
68+
if (escapeNonASCII) {
69+
writer = writer.with(JsonWriteFeature.ESCAPE_NON_ASCII);
7770
}
71+
return writer.writeValueAsString(o);
7872
}
7973

8074
/**
@@ -201,7 +195,7 @@ public static ObjectNode obj(ObjectNode obj, JsPair ...pairs) {
201195
}
202196

203197
public static ObjectNode merge(ObjectNode obj, ObjectNode obj2) {
204-
obj.fields().forEachRemaining(e ->
198+
obj.properties().forEach(e ->
205199
obj2.set(e.getKey(), e.getValue())
206200
);
207201
return obj2;
@@ -261,7 +255,7 @@ public static ArrayNode arr(Traversable<JsonNode> nodes) {
261255
*/
262256
public static ArrayNode arr(String ...nodes) {
263257
ArrayNode obj = newArray();
264-
List.of(nodes).map(TextNode::new).forEach(obj::add);
258+
List.of(nodes).map(StringNode::new).forEach(obj::add);
265259
return obj;
266260
}
267261

@@ -309,7 +303,7 @@ public static ArrayNode arr(String ...nodes) {
309303
* @return the field name / value pair
310304
*/
311305
public static JsPair $(String field, Option<String> value) {
312-
return new JsPair(field, value.map(TextNode::new));
306+
return new JsPair(field, value.map(StringNode::new));
313307
}
314308
/**
315309
* An object field for a string option.

src/main/java/fr/maif/json/JsonFormat.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package fr.maif.json;
22

3-
import com.fasterxml.jackson.core.type.TypeReference;
4-
import com.fasterxml.jackson.databind.JsonNode;
5-
import com.fasterxml.jackson.databind.node.ArrayNode;
6-
import com.fasterxml.jackson.databind.node.ObjectNode;
3+
import tools.jackson.core.type.TypeReference;
4+
import tools.jackson.databind.JsonNode;
5+
import tools.jackson.databind.node.ArrayNode;
6+
import tools.jackson.databind.node.ObjectNode;
77
import io.vavr.collection.List;
88

99
import java.math.BigDecimal;

src/main/java/fr/maif/json/JsonRead.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package fr.maif.json;
22

33

4-
import com.fasterxml.jackson.core.type.TypeReference;
5-
import com.fasterxml.jackson.databind.JsonNode;
6-
import com.fasterxml.jackson.databind.node.ArrayNode;
7-
import com.fasterxml.jackson.databind.node.NullNode;
8-
import com.fasterxml.jackson.databind.node.ObjectNode;
4+
import tools.jackson.core.type.TypeReference;
5+
import tools.jackson.databind.JsonNode;
6+
import tools.jackson.databind.node.ArrayNode;
7+
import tools.jackson.databind.node.NullNode;
8+
import tools.jackson.databind.node.ObjectNode;
99
import io.vavr.API;
1010
import io.vavr.Tuple;
1111
import io.vavr.Tuple2;

src/main/java/fr/maif/json/JsonSchema.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package fr.maif.json;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
4-
import com.fasterxml.jackson.databind.node.ObjectNode;
5-
import com.fasterxml.jackson.databind.node.TextNode;
3+
import tools.jackson.databind.JsonNode;
4+
import tools.jackson.databind.node.ObjectNode;
5+
import tools.jackson.databind.node.StringNode;
66
import io.vavr.collection.List;
77
import io.vavr.control.Option;
88
import lombok.EqualsAndHashCode;
@@ -321,7 +321,7 @@ public EnumSchema(Class<E> enumClass) {
321321
public ObjectNode toJson() {
322322
return Json.obj(
323323
$$("type", "string"),
324-
$$("enum", Json.arr(List.of(enumClass.getEnumConstants()).map(Enum::name).map(TextNode::new)))
324+
$$("enum", Json.arr(List.of(enumClass.getEnumConstants()).map(Enum::name).map(StringNode::new)))
325325
);
326326
}
327327
}

src/main/java/fr/maif/json/JsonWrite.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package fr.maif.json;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
4-
import com.fasterxml.jackson.databind.node.*;
3+
import tools.jackson.databind.JsonNode;
4+
import tools.jackson.databind.node.*;
55
import io.vavr.collection.Traversable;
66

77
import java.math.BigDecimal;
@@ -35,7 +35,7 @@ static <T> JsonWrite<T> auto() {
3535
* @return the writer
3636
*/
3737
static JsonWrite<LocalDate> $localdate(DateTimeFormatter formatter) {
38-
return localdate -> new TextNode(formatter.format(localdate));
38+
return localdate -> new StringNode(formatter.format(localdate));
3939
}
4040

4141

@@ -46,7 +46,7 @@ static <T> JsonWrite<T> auto() {
4646
* @return the writer
4747
*/
4848
static JsonWrite<LocalDateTime> $localdatetime(DateTimeFormatter formatter) {
49-
return localdate -> new TextNode(formatter.format(localdate));
49+
return localdate -> new StringNode(formatter.format(localdate));
5050
}
5151

5252
/**
@@ -65,7 +65,7 @@ static <T> JsonWrite<T> auto() {
6565
* @return the writer
6666
*/
6767
static JsonWrite<Instant> $instant(DateTimeFormatter formatter) {
68-
return instant -> new TextNode(formatter.format(instant));
68+
return instant -> new StringNode(formatter.format(instant));
6969
}
7070

7171
/**
@@ -91,7 +91,7 @@ static <T> JsonWrite<T> auto() {
9191
* @return the writer
9292
*/
9393
static JsonWrite<String> $string() {
94-
return TextNode::new;
94+
return StringNode::new;
9595
}
9696

9797
/**
@@ -140,7 +140,7 @@ static <T> JsonWrite<T> auto() {
140140
* @return the writer
141141
*/
142142
static JsonWrite<BigDecimal> $bigdecimal() {
143-
return value -> new TextNode(value.setScale(2, RoundingMode.HALF_UP).toString());
143+
return value -> new StringNode(value.setScale(2, RoundingMode.HALF_UP).toString());
144144
}
145145

146146
/**
@@ -167,7 +167,7 @@ static <T> JsonWrite<T> auto() {
167167
* @return the writer
168168
*/
169169
static <T extends Enum<T>> JsonWrite<T> $enum() {
170-
return en -> new TextNode(en.name());
170+
return en -> new StringNode(en.name());
171171
}
172172

173173
/**

src/test/java/fr/maif/json/Example.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package fr.maif.json;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
3+
import tools.jackson.databind.JsonNode;
44
import io.vavr.control.Option;
55
import lombok.AllArgsConstructor;
66
import lombok.Builder;

0 commit comments

Comments
 (0)