diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/Item.java b/jackson/src/test/java/org/baeldung/jackson/dtos/Item.java index db834a0733..75f4e8266d 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/Item.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/Item.java @@ -3,12 +3,12 @@ package org.baeldung.jackson.dtos; public class Item { public final int id; public final String itemNr; - public final User createdBy; + public final User owner; - public Item(final int id, final String itemNr, final User createdBy) { + public Item(final int id, final String itemNr, final User owner) { this.id = id; this.itemNr = itemNr; - this.createdBy = createdBy; + this.owner = owner; } // API @@ -21,8 +21,8 @@ public class Item { return itemNr; } - public User getCreatedBy() { - return createdBy; + public User getOwner() { + return owner; } } \ No newline at end of file diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/ItemWithSerializer.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ItemWithSerializer.java new file mode 100644 index 0000000000..13f748ce2f --- /dev/null +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ItemWithSerializer.java @@ -0,0 +1,33 @@ +package org.baeldung.jackson.dtos; + +import org.baeldung.jackson.serialization.ItemSerializerOnClass; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + +@JsonSerialize(using = ItemSerializerOnClass.class) +public class ItemWithSerializer { + public final int id; + public final String itemNr; + public final User owner; + + public ItemWithSerializer(final int id, final String itemNr, final User owner) { + this.id = id; + this.itemNr = itemNr; + this.owner = owner; + } + + // API + + public int getId() { + return id; + } + + public String getItemNr() { + return itemNr; + } + + public User getOwner() { + return owner; + } + +} \ No newline at end of file diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreField.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreField.java similarity index 94% rename from jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreField.java rename to jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreField.java index 78d493ae60..4e3aecd0d2 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreField.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreField.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.dtos; +package org.baeldung.jackson.dtos.ignore; import com.fasterxml.jackson.annotation.JsonIgnore; diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreFieldByName.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreFieldByName.java similarity index 95% rename from jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreFieldByName.java rename to jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreFieldByName.java index 7902214571..d752e0576d 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreFieldByName.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreFieldByName.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.dtos; +package org.baeldung.jackson.dtos.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreNull.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreNull.java similarity index 96% rename from jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreNull.java rename to jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreNull.java index 239df13187..0e28e43024 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreNull.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreNull.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.dtos; +package org.baeldung.jackson.dtos.ignore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreType.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreType.java similarity index 96% rename from jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreType.java rename to jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreType.java index fc77ec6d02..58876aec79 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreType.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreType.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.dtos; +package org.baeldung.jackson.dtos.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreUnknown.java b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreUnknown.java similarity index 96% rename from jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreUnknown.java rename to jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreUnknown.java index fb4fa2f724..ca702343eb 100644 --- a/jackson/src/test/java/org/baeldung/jackson/dtos/MyDtoIgnoreUnknown.java +++ b/jackson/src/test/java/org/baeldung/jackson/dtos/ignore/MyDtoIgnoreUnknown.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.dtos; +package org.baeldung.jackson.dtos.ignore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/jackson/src/test/java/org/baeldung/jackson/try1/ItemSerializer.java b/jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializer.java similarity index 86% rename from jackson/src/test/java/org/baeldung/jackson/try1/ItemSerializer.java rename to jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializer.java index 42cdfe92be..860a290398 100644 --- a/jackson/src/test/java/org/baeldung/jackson/try1/ItemSerializer.java +++ b/jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializer.java @@ -1,4 +1,4 @@ -package org.baeldung.jackson.try1; +package org.baeldung.jackson.serialization; import java.io.IOException; @@ -16,7 +16,7 @@ public class ItemSerializer extends JsonSerializer { jgen.writeStartObject(); jgen.writeNumberField("id", value.id); jgen.writeStringField("itemNr", value.itemNr); - jgen.writeNumberField("createdBy", value.createdBy.id); + jgen.writeNumberField("createdBy", value.owner.id); jgen.writeEndObject(); } diff --git a/jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializerOnClass.java b/jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializerOnClass.java new file mode 100644 index 0000000000..669ce2f2f8 --- /dev/null +++ b/jackson/src/test/java/org/baeldung/jackson/serialization/ItemSerializerOnClass.java @@ -0,0 +1,23 @@ +package org.baeldung.jackson.serialization; + +import java.io.IOException; + +import org.baeldung.jackson.dtos.ItemWithSerializer; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +public class ItemSerializerOnClass extends JsonSerializer { + + @Override + public final void serialize(final ItemWithSerializer value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonProcessingException { + jgen.writeStartObject(); + jgen.writeNumberField("id", value.id); + jgen.writeStringField("itemNr", value.itemNr); + jgen.writeNumberField("createdBy", value.owner.id); + jgen.writeEndObject(); + } + +} \ No newline at end of file diff --git a/jackson/src/test/java/org/baeldung/jackson/test/JacksonDeserializationUnitTest.java b/jackson/src/test/java/org/baeldung/jackson/test/JacksonDeserializationUnitTest.java index 6938c0c276..71e1f4c69d 100644 --- a/jackson/src/test/java/org/baeldung/jackson/test/JacksonDeserializationUnitTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/test/JacksonDeserializationUnitTest.java @@ -7,7 +7,7 @@ import static org.junit.Assert.assertThat; import java.io.IOException; import org.baeldung.jackson.dtos.MyDto; -import org.baeldung.jackson.dtos.MyDtoIgnoreUnknown; +import org.baeldung.jackson.dtos.ignore.MyDtoIgnoreUnknown; import org.junit.Test; import com.fasterxml.jackson.core.JsonFactory; diff --git a/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationIgnoreUnitTest.java b/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationIgnoreUnitTest.java index 81881fb699..e9608ad7f0 100644 --- a/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationIgnoreUnitTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationIgnoreUnitTest.java @@ -7,12 +7,12 @@ import static org.junit.Assert.assertThat; import java.io.IOException; import org.baeldung.jackson.dtos.MyDto; -import org.baeldung.jackson.dtos.MyDtoIgnoreField; -import org.baeldung.jackson.dtos.MyDtoIgnoreFieldByName; -import org.baeldung.jackson.dtos.MyDtoIgnoreNull; import org.baeldung.jackson.dtos.MyDtoIncludeNonDefault; import org.baeldung.jackson.dtos.MyDtoWithFilter; import org.baeldung.jackson.dtos.MyMixInForString; +import org.baeldung.jackson.dtos.ignore.MyDtoIgnoreField; +import org.baeldung.jackson.dtos.ignore.MyDtoIgnoreFieldByName; +import org.baeldung.jackson.dtos.ignore.MyDtoIgnoreNull; import org.junit.Test; import com.fasterxml.jackson.annotation.JsonInclude.Include; diff --git a/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationUnitTest.java b/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationUnitTest.java index ad7aa1b296..4a34f168c7 100644 --- a/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationUnitTest.java +++ b/jackson/src/test/java/org/baeldung/jackson/test/JacksonSerializationUnitTest.java @@ -1,30 +1,27 @@ package org.baeldung.jackson.test; -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.apache.commons.lang3.RandomStringUtils.randomNumeric; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import java.io.IOException; -import java.io.StringWriter; import java.util.List; import org.baeldung.jackson.dtos.Item; +import org.baeldung.jackson.dtos.ItemWithSerializer; import org.baeldung.jackson.dtos.MyDto; import org.baeldung.jackson.dtos.MyDtoFieldNameChanged; import org.baeldung.jackson.dtos.MyDtoNoAccessors; import org.baeldung.jackson.dtos.MyDtoNoAccessorsAndFieldVisibility; import org.baeldung.jackson.dtos.User; -import org.baeldung.jackson.try1.ItemSerializer; +import org.baeldung.jackson.serialization.ItemSerializer; import org.junit.Test; import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.core.JsonGenerationException; import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; @@ -101,20 +98,32 @@ public class JacksonSerializationUnitTest { // tests - custom serializer + @Test + public final void whenSerializing_thenNoExceptions() throws JsonGenerationException, JsonMappingException, IOException { + final Item myItem = new Item(1, "theItem", new User(2, "theUser")); + final String serialized = new ObjectMapper().writeValueAsString(myItem); + System.out.println(serialized); + } + @Test public final void whenSerializingWithCustomSerializer_thenNoExceptions() throws JsonGenerationException, JsonMappingException, IOException { - final Item myItem = new Item(Integer.parseInt(randomNumeric(2)), randomAlphabetic(8), new User(Integer.parseInt(randomNumeric(2)), randomAlphabetic(8))); + final Item myItem = new Item(1, "theItem", new User(2, "theUser")); final ObjectMapper mapper = new ObjectMapper(); - final SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1, 0, 0, null)); + final SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Item.class, new ItemSerializer()); - // simpleModule.addSerializer(User.class, new UserSerializer()); mapper.registerModule(simpleModule); - final StringWriter writer = new StringWriter(); - mapper.writeValue(writer, myItem); - final String serialized = writer.toString(); + final String serialized = mapper.writeValueAsString(myItem); + System.out.println(serialized); + } + + @Test + public final void givenSerializerRegisteredOnClass_whenSerializingWithCustomSerializer_thenNoExceptions() throws JsonGenerationException, JsonMappingException, IOException { + final ItemWithSerializer myItem = new ItemWithSerializer(1, "theItem", new User(2, "theUser")); + + final String serialized = new ObjectMapper().writeValueAsString(myItem); System.out.println(serialized); }