diff --git a/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java b/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java deleted file mode 100644 index 26adbf12d2..0000000000 --- a/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.baeldung.jacksonjr; - -import com.fasterxml.jackson.jr.annotationsupport.JacksonAnnotationExtension; -import com.fasterxml.jackson.jr.ob.JSON; -import com.fasterxml.jackson.jr.ob.JacksonJrExtension; -import com.fasterxml.jackson.jr.ob.api.ExtensionContext; - -import java.io.IOException; -import java.util.LinkedHashMap; - -public class JacksonJrFeatures { - - public static String jsonObject() throws IOException { - return JSON.std - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .asString(new LinkedHashMap() {{ - put("name", "John Doe"); - put("age", 30); - }}); - } - - public static String jsonComposer() throws IOException { - return JSON.std - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .composeString() - .startObject() - .startArrayField("objectArray") - .startObject() - .put("name", "name1") - .put("age", 11) - .end() - .startObject() - .put("name", "name2") - .put("age", 12) - .end() - .end() - .startArrayField("array") - .add(1) - .add(2) - .add(3) - .end() - .startObjectField("object") - .put("name", "name3") - .put("age", 13) - .end() - .put("last", true) - .end() - .finish(); - } - - public static String objectSerialization(Person person) throws IOException { - return JSON.std - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .asString(person); - } - - public static String objectAnnotationSerialization(Person person) throws IOException { - return JSON.builder() - .register(JacksonAnnotationExtension.std) - .build() - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .asString(person); - } - - public static String customObjectSerialization(Person person) throws IOException { - return JSON.builder() - .register(new JacksonJrExtension() { - @Override - protected void register (ExtensionContext extensionContext) { - extensionContext.insertProvider(new MyHandlerProvider()); - } - }) - .build() - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .asString(person); - } - - public static Person objectDeserialization(String json) throws IOException { - return JSON.std - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .beanFrom(Person.class, json); - } - - public static Person customObjectDeserialization(String json) throws IOException { - return JSON.builder() - .register(new JacksonJrExtension() { - @Override - protected void register (ExtensionContext extensionContext) { - extensionContext.insertProvider(new MyHandlerProvider()); - } - }) - .build() - .with(JSON.Feature.PRETTY_PRINT_OUTPUT) - .beanFrom(Person.class, json); - } -} diff --git a/jackson-jr/pom.xml b/jackson-modules/jackson-jr/pom.xml similarity index 78% rename from jackson-jr/pom.xml rename to jackson-modules/jackson-jr/pom.xml index 0dcb62fdae..7f806f0d89 100644 --- a/jackson-jr/pom.xml +++ b/jackson-modules/jackson-jr/pom.xml @@ -9,9 +9,8 @@ com.baeldung - parent-java + jackson-modules 0.0.1-SNAPSHOT - ../parent-java @@ -35,4 +34,14 @@ + + jackson-jr + + + src/main/resources + true + + + + \ No newline at end of file diff --git a/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java similarity index 81% rename from jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java rename to jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java index df977de966..3edaee8be0 100644 --- a/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java +++ b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateDeserializer.java @@ -1,22 +1,22 @@ package com.baeldung.jacksonjr; -import com.fasterxml.jackson.jr.ob.api.ValueReader; -import com.fasterxml.jackson.jr.ob.impl.JSONReader; -import com.fasterxml.jackson.jr.private_.JsonParser; - import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import com.fasterxml.jackson.jr.ob.api.ValueReader; +import com.fasterxml.jackson.jr.ob.impl.JSONReader; +import com.fasterxml.jackson.jr.private_.JsonParser; + public class CustomDateDeserializer extends ValueReader { private final static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - public CustomDateDeserializer () { + public CustomDateDeserializer() { super(LocalDate.class); } @Override - public Object read (JSONReader jsonReader, JsonParser jsonParser) throws IOException { + public Object read(JSONReader jsonReader, JsonParser jsonParser) throws IOException { return LocalDate.parse(jsonParser.getText(), dtf); } } diff --git a/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java similarity index 74% rename from jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java rename to jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java index 9b2596cd2c..cfd08548c6 100644 --- a/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java +++ b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/CustomDateSerializer.java @@ -1,20 +1,20 @@ package com.baeldung.jacksonjr; +import java.io.IOException; +import java.time.LocalDate; + import com.fasterxml.jackson.jr.ob.api.ValueWriter; import com.fasterxml.jackson.jr.ob.impl.JSONWriter; import com.fasterxml.jackson.jr.private_.JsonGenerator; -import java.io.IOException; -import java.time.LocalDate; - public class CustomDateSerializer implements ValueWriter { @Override - public void writeValue (JSONWriter jsonWriter, JsonGenerator jsonGenerator, Object o) throws IOException { + public void writeValue(JSONWriter jsonWriter, JsonGenerator jsonGenerator, Object o) throws IOException { jsonGenerator.writeString(o.toString()); } @Override - public Class valueType () { + public Class valueType() { return LocalDate.class; } } diff --git a/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java new file mode 100644 index 0000000000..b05b7e1cb6 --- /dev/null +++ b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/JacksonJrFeatures.java @@ -0,0 +1,92 @@ +package com.baeldung.jacksonjr; + +import java.io.IOException; +import java.util.LinkedHashMap; + +import com.fasterxml.jackson.jr.annotationsupport.JacksonAnnotationExtension; +import com.fasterxml.jackson.jr.ob.JSON; +import com.fasterxml.jackson.jr.ob.JacksonJrExtension; +import com.fasterxml.jackson.jr.ob.api.ExtensionContext; + +public class JacksonJrFeatures { + + public static String jsonObject() throws IOException { + return JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .asString(new LinkedHashMap() {{ + put("name", "John Doe"); + put("age", 30); + }}); + } + + public static String jsonComposer() throws IOException { + return JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .composeString() + .startObject() + .startArrayField("objectArray") + .startObject() + .put("name", "name1") + .put("age", 11) + .end() + .startObject() + .put("name", "name2") + .put("age", 12) + .end() + .end() + .startArrayField("array") + .add(1) + .add(2) + .add(3) + .end() + .startObjectField("object") + .put("name", "name3") + .put("age", 13) + .end() + .put("last", true) + .end() + .finish(); + } + + public static String objectSerialization(Person person) throws IOException { + return JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .asString(person); + } + + public static String objectAnnotationSerialization(Person person) throws IOException { + return JSON.builder() + .register(JacksonAnnotationExtension.std) + .build() + .with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .asString(person); + } + + public static String customObjectSerialization(Person person) throws IOException { + return JSON.builder() + .register(new JacksonJrExtension() { + @Override + protected void register(ExtensionContext extensionContext) { + extensionContext.insertProvider(new MyHandlerProvider()); + } + }) + .build() + .with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .asString(person); + } + + public static Person objectDeserialization(String json) throws IOException { + return JSON.std.with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .beanFrom(Person.class, json); + } + + public static Person customObjectDeserialization(String json) throws IOException { + return JSON.builder() + .register(new JacksonJrExtension() { + @Override + protected void register(ExtensionContext extensionContext) { + extensionContext.insertProvider(new MyHandlerProvider()); + } + }) + .build() + .with(JSON.Feature.PRETTY_PRINT_OUTPUT) + .beanFrom(Person.class, json); + } +} diff --git a/jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java similarity index 82% rename from jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java rename to jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java index 266a09eecc..8fc67c6591 100644 --- a/jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java +++ b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/MyHandlerProvider.java @@ -1,17 +1,17 @@ package com.baeldung.jacksonjr; +import java.time.LocalDate; + import com.fasterxml.jackson.jr.ob.api.ReaderWriterProvider; import com.fasterxml.jackson.jr.ob.api.ValueReader; import com.fasterxml.jackson.jr.ob.api.ValueWriter; import com.fasterxml.jackson.jr.ob.impl.JSONReader; import com.fasterxml.jackson.jr.ob.impl.JSONWriter; -import java.time.LocalDate; - public class MyHandlerProvider extends ReaderWriterProvider { @Override - public ValueWriter findValueWriter (JSONWriter writeContext, Class type) { + public ValueWriter findValueWriter(JSONWriter writeContext, Class type) { if (type == LocalDate.class) { return new CustomDateSerializer(); } @@ -19,7 +19,7 @@ public class MyHandlerProvider extends ReaderWriterProvider { } @Override - public ValueReader findValueReader (JSONReader readContext, Class type) { + public ValueReader findValueReader(JSONReader readContext, Class type) { if (type.equals(LocalDate.class)) { return new CustomDateDeserializer(); } diff --git a/jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java similarity index 88% rename from jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java rename to jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java index 8effc64cd9..12c48c3270 100644 --- a/jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java +++ b/jackson-modules/jackson-jr/src/main/java/com/baeldung/jacksonjr/Person.java @@ -1,13 +1,13 @@ package com.baeldung.jacksonjr; -import com.fasterxml.jackson.annotation.JsonFormat; +import java.time.LocalDate; + import com.fasterxml.jackson.annotation.JsonProperty; + import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDate; - @Data @NoArgsConstructor @AllArgsConstructor diff --git a/jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java b/jackson-modules/jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java similarity index 92% rename from jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java rename to jackson-modules/jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java index db17d2e175..04719c9303 100644 --- a/jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java +++ b/jackson-modules/jackson-jr/src/test/java/com/baeldung/jacksonjr/JacksonJrFeaturesUnitTest.java @@ -1,11 +1,13 @@ package com.baeldung.jacksonjr; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.time.LocalDate; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; public class JacksonJrFeaturesUnitTest { diff --git a/jackson-modules/pom.xml b/jackson-modules/pom.xml index 531d5628f7..1f4a22e379 100644 --- a/jackson-modules/pom.xml +++ b/jackson-modules/pom.xml @@ -21,6 +21,7 @@ jackson-core jackson-custom-conversions jackson-exceptions + jackson-jr diff --git a/pom.xml b/pom.xml index 3af4c1b6a7..1e4e8530b7 100644 --- a/pom.xml +++ b/pom.xml @@ -779,7 +779,6 @@ custom-pmd data-structures ddd-contexts - jackson-jr jackson-modules jmh deeplearning4j