From 42d17c1c4dfd7904b52478ca6badadedda006e85 Mon Sep 17 00:00:00 2001 From: eugenp Date: Thu, 11 Sep 2014 18:38:42 +0300 Subject: [PATCH] gson cleanup work --- gson/.project | 2 +- .../serialization/GsonSerializationTest.java | 80 ---------------- ...ngFieldsNotMatchingCriteriaSerializer.java | 27 ++++++ .../test/GsonSerializationTest.java | 93 +++++++++++++++++++ 4 files changed, 121 insertions(+), 81 deletions(-) delete mode 100644 gson/src/test/java/org/baeldung/gson/serialization/GsonSerializationTest.java create mode 100644 gson/src/test/java/org/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java create mode 100644 gson/src/test/java/org/baeldung/gson/serialization/test/GsonSerializationTest.java diff --git a/gson/.project b/gson/.project index ea8ae1a67f..010b65738c 100644 --- a/gson/.project +++ b/gson/.project @@ -1,6 +1,6 @@ - jackson + gson diff --git a/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializationTest.java b/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializationTest.java deleted file mode 100644 index 93a44647e3..0000000000 --- a/gson/src/test/java/org/baeldung/gson/serialization/GsonSerializationTest.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.baeldung.gson.serialization; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Date; - -import org.junit.Test; - -import com.google.common.collect.Lists; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -public class GsonSerializationTest { - - @Test - public void givenCollection_whenSerializing_thenCorrect() { - final Collection sourceCollection = Lists.newArrayList(new SourceClass(1, "one"), new SourceClass(2, "two")); - final Type sourceCollectionType = new TypeToken>() { - }.getType(); - final String jsonCollection = new Gson().toJson(sourceCollection, sourceCollectionType); - - // test - final String estimatedResult = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; - assertEquals(estimatedResult, jsonCollection); - } - - @Test - public void givenArrayOfObjects_whenSerializing_thenCorrect() { - final SourceClass[] sourceArray = { new SourceClass(1, "one"), new SourceClass(2, "two") }; - final String jsonString = new Gson().toJson(sourceArray); - - // test - final String estimatedResult = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; - assertEquals(estimatedResult, jsonString); - } - - @Test - public void givenUsingCustomSerializer_whenChangingNameOfFieldOnSerializing_thenCorrect() { - final SourceClass sourceObject = new SourceClass(7, "seven"); - final GsonBuilder gsonBuildr = new GsonBuilder(); - gsonBuildr.registerTypeAdapter(SourceClass.class, new DifferentNameSerializer()); - final Gson gson = gsonBuildr.create(); - final String jsonString = gson.toJson(sourceObject); - - // test - final String estimatedResult = "{\"otherIntValue\":7,\"otherStringValue\":\"seven\"}"; - assertEquals(estimatedResult, jsonString); - } - - @Test - public void givenIgnoringAField_whenSerializingWithCustomSerializer_thenFieldIgnored() { - final SourceClass sourceObject = new SourceClass(7, "seven"); - final GsonBuilder gsonBuildr = new GsonBuilder(); - gsonBuildr.registerTypeAdapter(SourceClass.class, new IgnoringFieldsSerializer()); - final Gson gson = gsonBuildr.create(); - final String jsonString = gson.toJson(sourceObject); - - // test - final String estimatedResult = "{\"intValue\":7}"; - assertEquals(estimatedResult, jsonString); - } - - @Test - public void givenDate_whenSerializing_thenCorrect() { - final Date sourceDate = new Date(1000000L); - final Gson gson = new Gson(); - final Type sourceDateType = new TypeToken() { - }.getType(); - final String jsonDate = gson.toJson(sourceDate, sourceDateType); - - // test - final String estimatedResult = "\"Jan 1, 1970 3:16:40 AM\""; - assertTrue(jsonDate.equals(estimatedResult)); - } - -} \ No newline at end of file diff --git a/gson/src/test/java/org/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java b/gson/src/test/java/org/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java new file mode 100644 index 0000000000..4a6c1a14d3 --- /dev/null +++ b/gson/src/test/java/org/baeldung/gson/serialization/IgnoringFieldsNotMatchingCriteriaSerializer.java @@ -0,0 +1,27 @@ +package org.baeldung.gson.serialization; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; + +public class IgnoringFieldsNotMatchingCriteriaSerializer implements JsonSerializer { + @Override + public JsonElement serialize(SourceClass src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject jObject = new JsonObject(); + + // Criteria: intValue >= 0 + if (src.getIntValue() >= 0) { + String intValue = "intValue"; + jObject.addProperty(intValue, src.getIntValue()); + } + + String stringValue = "stringValue"; + jObject.addProperty(stringValue, src.getStringValue()); + + return jObject; + } + +} diff --git a/gson/src/test/java/org/baeldung/gson/serialization/test/GsonSerializationTest.java b/gson/src/test/java/org/baeldung/gson/serialization/test/GsonSerializationTest.java new file mode 100644 index 0000000000..a7ad7b67fa --- /dev/null +++ b/gson/src/test/java/org/baeldung/gson/serialization/test/GsonSerializationTest.java @@ -0,0 +1,93 @@ +package org.baeldung.gson.serialization.test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.Date; + +import org.baeldung.gson.serialization.DifferentNameSerializer; +import org.baeldung.gson.serialization.IgnoringFieldsNotMatchingCriteriaSerializer; +import org.baeldung.gson.serialization.IgnoringFieldsSerializer; +import org.baeldung.gson.serialization.SourceClass; +import org.junit.Test; + +import com.google.common.collect.Lists; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; + +public class GsonSerializationTest { + + @Test + public void givenArrayOfObjects_whenSerializing_thenCorrect() { + final SourceClass[] sourceArray = { new SourceClass(1, "one"), new SourceClass(2, "two") }; + final String jsonString = new Gson().toJson(sourceArray); + + // test + final String expectedResult = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; + assertEquals(expectedResult, jsonString); + } + + @Test + public void givenCollection_whenSerializing_thenCorrect() { + final Collection sourceCollection = Lists.newArrayList(new SourceClass(1, "one"), new SourceClass(2, "two")); + final Type sourceCollectionType = new TypeToken>() { + }.getType(); + final String jsonCollection = new Gson().toJson(sourceCollection, sourceCollectionType); + + final String expectedResult = "[{\"intValue\":1,\"stringValue\":\"one\"},{\"intValue\":2,\"stringValue\":\"two\"}]"; + assertEquals(expectedResult, jsonCollection); + } + + @Test + public void givenUsingCustomSerializer_whenChangingNameOfFieldOnSerializing_thenCorrect() { + final SourceClass sourceObject = new SourceClass(7, "seven"); + final GsonBuilder gsonBuildr = new GsonBuilder(); + gsonBuildr.registerTypeAdapter(SourceClass.class, new DifferentNameSerializer()); + final String jsonString = gsonBuildr.create().toJson(sourceObject); + + final String expectedResult = "{\"otherIntValue\":7,\"otherStringValue\":\"seven\"}"; + assertEquals(expectedResult, jsonString); + } + + @Test + public void givenIgnoringAField_whenSerializingWithCustomSerializer_thenFieldIgnored() { + final SourceClass sourceObject = new SourceClass(7, "seven"); + final GsonBuilder gsonBuildr = new GsonBuilder(); + gsonBuildr.registerTypeAdapter(SourceClass.class, new IgnoringFieldsSerializer()); + final String jsonString = gsonBuildr.create().toJson(sourceObject); + + final String expectedResult = "{\"intValue\":7}"; + assertEquals(expectedResult, jsonString); + } + + @Test + public void givenDate_whenSerializing_thenCorrect() { + Date sourceDate = new Date(1000000L); + Gson gson = new Gson(); + Type sourceDateType = new TypeToken() { + }.getType(); + String jsonDate = gson.toJson(sourceDate, sourceDateType); + // test + System.out.println("jsonDate:\n" + jsonDate); + String estimatedResult = "\"Jan 1, 1970 3:16:40 AM\""; + assertTrue(jsonDate.equals(estimatedResult)); + } + + @Test + public void givenUsingCustomDeserializer_whenFieldNotMatchesCriteria_thenIgnoringIt() { + SourceClass sourceObject = new SourceClass(-1, "minus 1"); + GsonBuilder gsonBuildr = new GsonBuilder(); + gsonBuildr.registerTypeAdapter(SourceClass.class, new IgnoringFieldsNotMatchingCriteriaSerializer()); + Gson gson = gsonBuildr.create(); + Type sourceObjectType = new TypeToken() { + }.getType(); + String jsonString = gson.toJson(sourceObject, sourceObjectType); + // test + String estimatedResult = "{\"stringValue\":\"minus 1\"}"; + assertEquals(estimatedResult, jsonString); + } + +} \ No newline at end of file