Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
plugins {
id 'net.researchgate.release' version '3.0.0'
id 'net.researchgate.release' version '3.1.0'
id 'java'
id 'maven-publish'
id 'signing'
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
}

group = 'fr.maif'

ext {
vavrVersion = "0.10.6"
jacksonVersion = "2.18.4"
lombokVersion = "1.18.38"
jupiterVersion = "5.13.3"
vavrVersion = "1.0.1"
jacksonVersion = "3.1.1"
lombokVersion = "1.18.44"
jupiterVersion = "5.13.1"
}
repositories {
mavenCentral()
Expand All @@ -31,12 +31,10 @@ dependencies {
annotationProcessor "org.projectlombok:lombok:$lombokVersion"

implementation "io.vavr:vavr:$vavrVersion"
implementation "io.vavr:vavr-jackson:0.10.3"
implementation "com.fasterxml.jackson.core:jackson-core:$jacksonVersion"
implementation "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion"
implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$jacksonVersion"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jacksonVersion"
implementation "io.vavr:vavr-jackson:1.0.0"
implementation "tools.jackson.core:jackson-core:$jacksonVersion"
implementation "com.fasterxml.jackson.core:jackson-annotations:2.21"
implementation "tools.jackson.core:jackson-databind:$jacksonVersion"

testCompileOnly "org.projectlombok:lombok:$lombokVersion"
testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion"
Expand All @@ -45,7 +43,7 @@ dependencies {
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")

testImplementation "org.assertj:assertj-core:3.27.3"
testImplementation "org.assertj:assertj-core:3.27.7"
testImplementation "com.github.erosb:everit-json-schema:1.14.6"
}

Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=1.7.0-SNAPSHOT
version=2.0.0-SNAPSHOT
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
70 changes: 32 additions & 38 deletions src/main/java/fr/maif/json/Json.java
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package fr.maif.json;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.json.JsonWriteFeature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.BooleanNode;
import com.fasterxml.jackson.databind.node.IntNode;
import com.fasterxml.jackson.databind.node.LongNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import tools.jackson.core.json.JsonWriteFeature;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.ObjectWriter;
import tools.jackson.databind.SerializationFeature;
import tools.jackson.databind.cfg.DateTimeFeature;
import tools.jackson.databind.json.JsonMapper;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.databind.node.BooleanNode;
import tools.jackson.databind.node.IntNode;
import tools.jackson.databind.node.LongNode;
import tools.jackson.databind.node.ObjectNode;
import tools.jackson.databind.node.StringNode;
import io.vavr.collection.List;
import io.vavr.collection.Traversable;
import io.vavr.control.Option;
Expand All @@ -30,15 +30,13 @@ public class Json {
private static ObjectMapper defaultObjectMapper = newDefaultMapper();

public static ObjectMapper newDefaultMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new VavrModule());
mapper.registerModule(new Jdk8Module());
mapper.registerModule(new JavaTimeModule());
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_ABSENT);
return mapper;
return JsonMapper.builder()
.addModule(new VavrModule())
.configure(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
.changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_ABSENT))
.build();
}

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


private static String generateJson(Object o, boolean prettyPrint, boolean escapeNonASCII) {
try {
ObjectWriter writer = mapper().writer();
if (prettyPrint) {
writer = writer.with(SerializationFeature.INDENT_OUTPUT);
}
if (escapeNonASCII) {
writer = writer.with(JsonWriteFeature.ESCAPE_NON_ASCII);
}
return writer.writeValueAsString(o);
} catch (IOException e) {
throw new RuntimeException(e);
ObjectWriter writer = mapper().writer();
if (prettyPrint) {
writer = writer.with(SerializationFeature.INDENT_OUTPUT);
}
if (escapeNonASCII) {
writer = writer.with(JsonWriteFeature.ESCAPE_NON_ASCII);
}
return writer.writeValueAsString(o);
}

/**
Expand Down Expand Up @@ -201,7 +195,7 @@ public static ObjectNode obj(ObjectNode obj, JsPair ...pairs) {
}

public static ObjectNode merge(ObjectNode obj, ObjectNode obj2) {
obj.fields().forEachRemaining(e ->
obj.properties().forEach(e ->
obj2.set(e.getKey(), e.getValue())
);
return obj2;
Expand Down Expand Up @@ -261,7 +255,7 @@ public static ArrayNode arr(Traversable<JsonNode> nodes) {
*/
public static ArrayNode arr(String ...nodes) {
ArrayNode obj = newArray();
List.of(nodes).map(TextNode::new).forEach(obj::add);
List.of(nodes).map(StringNode::new).forEach(obj::add);
return obj;
}

Expand Down Expand Up @@ -309,7 +303,7 @@ public static ArrayNode arr(String ...nodes) {
* @return the field name / value pair
*/
public static JsPair $(String field, Option<String> value) {
return new JsPair(field, value.map(TextNode::new));
return new JsPair(field, value.map(StringNode::new));
}
/**
* An object field for a string option.
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/fr/maif/json/JsonFormat.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package fr.maif.json;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.databind.node.ObjectNode;
import io.vavr.collection.List;

import java.math.BigDecimal;
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/fr/maif/json/JsonRead.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package fr.maif.json;


import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.databind.node.NullNode;
import tools.jackson.databind.node.ObjectNode;
import io.vavr.API;
import io.vavr.Tuple;
import io.vavr.Tuple2;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/fr/maif/json/JsonSchema.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package fr.maif.json;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.TextNode;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.ObjectNode;
import tools.jackson.databind.node.StringNode;
import io.vavr.collection.List;
import io.vavr.control.Option;
import lombok.EqualsAndHashCode;
Expand Down Expand Up @@ -321,7 +321,7 @@ public EnumSchema(Class<E> enumClass) {
public ObjectNode toJson() {
return Json.obj(
$$("type", "string"),
$$("enum", Json.arr(List.of(enumClass.getEnumConstants()).map(Enum::name).map(TextNode::new)))
$$("enum", Json.arr(List.of(enumClass.getEnumConstants()).map(Enum::name).map(StringNode::new)))
);
}
}
Expand Down
16 changes: 8 additions & 8 deletions src/main/java/fr/maif/json/JsonWrite.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package fr.maif.json;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.*;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.node.*;
import io.vavr.collection.Traversable;

import java.math.BigDecimal;
Expand Down Expand Up @@ -35,7 +35,7 @@ static <T> JsonWrite<T> auto() {
* @return the writer
*/
static JsonWrite<LocalDate> $localdate(DateTimeFormatter formatter) {
return localdate -> new TextNode(formatter.format(localdate));
return localdate -> new StringNode(formatter.format(localdate));
}


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

/**
Expand All @@ -65,7 +65,7 @@ static <T> JsonWrite<T> auto() {
* @return the writer
*/
static JsonWrite<Instant> $instant(DateTimeFormatter formatter) {
return instant -> new TextNode(formatter.format(instant));
return instant -> new StringNode(formatter.format(instant));
}

/**
Expand All @@ -91,7 +91,7 @@ static <T> JsonWrite<T> auto() {
* @return the writer
*/
static JsonWrite<String> $string() {
return TextNode::new;
return StringNode::new;
}

/**
Expand Down Expand Up @@ -140,7 +140,7 @@ static <T> JsonWrite<T> auto() {
* @return the writer
*/
static JsonWrite<BigDecimal> $bigdecimal() {
return value -> new TextNode(value.setScale(2, RoundingMode.HALF_UP).toString());
return value -> new StringNode(value.setScale(2, RoundingMode.HALF_UP).toString());
}

/**
Expand All @@ -167,7 +167,7 @@ static <T> JsonWrite<T> auto() {
* @return the writer
*/
static <T extends Enum<T>> JsonWrite<T> $enum() {
return en -> new TextNode(en.name());
return en -> new StringNode(en.name());
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/fr/maif/json/Example.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fr.maif.json;

import com.fasterxml.jackson.databind.JsonNode;
import tools.jackson.databind.JsonNode;
import io.vavr.control.Option;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down
Loading
Loading