diff --git a/jackson/pom.xml b/jackson/pom.xml
index e9008a81a7..f63ec08b48 100644
--- a/jackson/pom.xml
+++ b/jackson/pom.xml
@@ -60,7 +60,7 @@
com.fasterxml.jackson.module
jackson-module-jsonSchema
- 2.6.0
+ 2.7.2
diff --git a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBean.java b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBean.java
deleted file mode 100644
index ec67b3c67a..0000000000
--- a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBean.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.baeldung.jackson.annotation.extra;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.databind.annotation.JsonAppend;
-
-@JsonAppend(attrs = {@JsonAppend.Attr(value = "appendedProperty", include = JsonInclude.Include.ALWAYS)})
-public class AppendBean {
- private int id;
- private String name;
-
- public AppendBean(int id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
\ No newline at end of file
diff --git a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBeans.java b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBeans.java
new file mode 100644
index 0000000000..7b75c205c9
--- /dev/null
+++ b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/AppendBeans.java
@@ -0,0 +1,58 @@
+package com.baeldung.jackson.annotation.extra;
+
+import com.fasterxml.jackson.databind.annotation.JsonAppend;
+
+public class AppendBeans {
+ public static class BeanWithoutAppend {
+ private int id;
+ private String name;
+
+ public BeanWithoutAppend(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ @JsonAppend(attrs = { @JsonAppend.Attr(value = "version") })
+ public static class BeanWithAppend {
+ private int id;
+ private String name;
+
+ public BeanWithAppend(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/ExtraAnnotationTest.java b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/ExtraAnnotationTest.java
index db6993da0f..79aae1dd04 100644
--- a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/ExtraAnnotationTest.java
+++ b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/ExtraAnnotationTest.java
@@ -1,38 +1,69 @@
package com.baeldung.jackson.annotation.extra;
-import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.junit.Test;
-
+import com.baeldung.jackson.annotation.extra.AppendBeans.BeanWithAppend;
+import com.baeldung.jackson.annotation.extra.AppendBeans.BeanWithoutAppend;
+import com.baeldung.jackson.annotation.extra.IdentityReferenceBeans.BeanWithIdentityReference;
+import com.baeldung.jackson.annotation.extra.IdentityReferenceBeans.BeanWithoutIdentityReference;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
+import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
public class ExtraAnnotationTest {
+ @Test
+ public void whenNotUsingJsonIdentityReferenceAnnotation_thenCorrect() throws JsonProcessingException {
+ ObjectMapper mapper = new ObjectMapper();
+ BeanWithoutIdentityReference bean = new BeanWithoutIdentityReference(1, "Bean Without Identity Reference Annotation");
+ String jsonString = mapper.writeValueAsString(bean);
+
+ assertThat(jsonString, containsString("Bean Without Identity Reference Annotation"));
+ }
+
@Test
public void whenUsingJsonIdentityReferenceAnnotation_thenCorrect() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
- IdentityReferenceBean bean = new IdentityReferenceBean(1, "Identity Reference Bean");
+ BeanWithIdentityReference bean = new BeanWithIdentityReference(1, "Bean With Identity Reference Annotation");
String jsonString = mapper.writeValueAsString(bean);
assertEquals("1", jsonString);
}
+ @Test
+ public void whenNotUsingJsonAppendAnnotation_thenCorrect() throws JsonProcessingException {
+ ObjectMapper mapper = new ObjectMapper();
+
+ BeanWithoutAppend bean = new BeanWithoutAppend(2, "Bean Without Append Annotation");
+ ObjectWriter writer = mapper.writerFor(BeanWithoutAppend.class).withAttribute("version", "1.0");
+ String jsonString = writer.writeValueAsString(bean);
+
+ assertThat(jsonString, not(containsString("version")));
+ assertThat(jsonString, not(containsString("1.0")));
+ }
+
@Test
public void whenUsingJsonAppendAnnotation_thenCorrect() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
- AppendBean bean = new AppendBean(2, "Append Bean");
- String jsonString = mapper.writeValueAsString(bean);
- assertThat(jsonString, containsString("appendedProperty"));
+ BeanWithAppend bean = new BeanWithAppend(2, "Bean With Append Annotation");
+ ObjectWriter writer = mapper.writerFor(BeanWithAppend.class).withAttribute("version", "1.0");
+ String jsonString = writer.writeValueAsString(bean);
+
+ assertThat(jsonString, containsString("version"));
+ assertThat(jsonString, containsString("1.0"));
}
@Test
@@ -40,7 +71,7 @@ public class ExtraAnnotationTest {
ObjectMapper mapper = new ObjectMapper();
NamingBean bean = new NamingBean(3, "Naming Bean");
String jsonString = mapper.writeValueAsString(bean);
-
+
assertThat(jsonString, containsString("bean_name"));
}
@@ -51,7 +82,7 @@ public class ExtraAnnotationTest {
mapper.acceptJsonFormatVisitor(PropertyDescriptionBean.class, wrapper);
JsonSchema jsonSchema = wrapper.finalSchema();
String jsonString = mapper.writeValueAsString(jsonSchema);
-
+ System.out.println(jsonString);
assertThat(jsonString, containsString("This is a description of the name property"));
}
@@ -86,7 +117,7 @@ public class ExtraAnnotationTest {
TypeIdResolverStructure.BeanContainer serializedContainer = new TypeIdResolverStructure.BeanContainer();
serializedContainer.setBeans(beans);
-
+
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(serializedContainer);
assertThat(jsonString, containsString("bean1"));
diff --git a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBean.java b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBean.java
deleted file mode 100644
index 7f9cd0fdba..0000000000
--- a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.baeldung.jackson.annotation.extra;
-
-import com.fasterxml.jackson.annotation.JsonIdentityInfo;
-import com.fasterxml.jackson.annotation.JsonIdentityReference;
-import com.fasterxml.jackson.annotation.ObjectIdGenerators;
-
-@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
-@JsonIdentityReference(alwaysAsId = true)
-public class IdentityReferenceBean {
- private int id;
- private String name;
-
- public IdentityReferenceBean(int id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
\ No newline at end of file
diff --git a/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBeans.java b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBeans.java
new file mode 100644
index 0000000000..495bb7de43
--- /dev/null
+++ b/jackson/src/test/java/com/baeldung/jackson/annotation/extra/IdentityReferenceBeans.java
@@ -0,0 +1,63 @@
+package com.baeldung.jackson.annotation.extra;
+
+import com.fasterxml.jackson.annotation.JsonIdentityInfo;
+import com.fasterxml.jackson.annotation.JsonIdentityReference;
+import com.fasterxml.jackson.annotation.ObjectIdGenerators;
+
+
+public class IdentityReferenceBeans {
+ @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
+ public static class BeanWithoutIdentityReference {
+ private int id;
+ private String name;
+
+ public BeanWithoutIdentityReference(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
+ @JsonIdentityReference(alwaysAsId = true)
+ public static class BeanWithIdentityReference {
+ private int id;
+ private String name;
+
+ public BeanWithIdentityReference(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+}
\ No newline at end of file