From f2d258a20561231260cb2d3021e03fe7151488c5 Mon Sep 17 00:00:00 2001 From: Javier Date: Mon, 3 Dec 2018 21:33:53 +0100 Subject: [PATCH 01/14] BAEL-2412 Working with primitive values in Gson. --- .../fromJsonPrimitiveTypes.java | 17 +++++++++++ .../toJsonPrimitiveTypes.java | 13 +++++++++ ...JsonIntegerRepresentationBooleanValue.java | 17 +++++++++++ ...nInvalidValueWithinStringBooleanValue.java | 16 +++++++++++ .../JsonYesRepresentationBooleanValue.java | 16 +++++++++++ .../byte_value/ToJsonBitString.java | 27 ++++++++++++++++++ .../byte_value/fromJsonBitString.java | 28 +++++++++++++++++++ .../char_value/JsonUnicodeCharValue.java | 16 +++++++++++ .../models/GsonBitString.java | 9 ++++++ .../models/GsonBoolean.java | 9 ++++++ .../gsonprimitivetypes/models/GsonBundle.java | 19 +++++++++++++ .../gsonprimitivetypes/models/GsonFloat.java | 9 ++++++ .../models/GsonLatinChar.java | 9 ++++++ .../JsonNonCompatibleNumberTypeValue.java | 15 ++++++++++ .../number_value/JsonOverflowValue.java | 15 ++++++++++ .../JsonPrecissionMismatchValue.java | 15 ++++++++++ .../special_value/JsonEmptyValue.java | 15 ++++++++++ .../special_value/JsonInvalidStringValue.java | 15 ++++++++++ .../special_value/JsonInvalidValue.java | 15 ++++++++++ .../special_value/JsonNullValue.java | 15 ++++++++++ .../special_value/JsonValidStringValue.java | 15 ++++++++++ 21 files changed, 325 insertions(+) create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java create mode 100644 gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java new file mode 100644 index 0000000000..259a9ca1ce --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java @@ -0,0 +1,17 @@ +package com.baeldung.gson_primitive_types.all_primitive_values; + +import com.baeldung.gson_primitive_types.models.GsonBundle; +import com.google.gson.Gson; + +public class fromJsonPrimitiveTypes { + public static void main(String[] args) { + String json = "{\"value\": 17, \"shortValue\": 3, \"intValue\": 3, " + + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + + ", \"booleanValue\": true, \"charValue\": \"a\"}"; + + Gson gson = new Gson(); + GsonBundle gsonBundle = gson.fromJson(json, GsonBundle.class); + + System.out.println(gsonBundle); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java new file mode 100644 index 0000000000..a55ba85e4f --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java @@ -0,0 +1,13 @@ +package com.baeldung.gson_primitive_types.all_primitive_values; + +import com.baeldung.gson_primitive_types.models.GsonBundle; +import com.google.gson.Gson; + +public class toJsonPrimitiveTypes { + public static void main(String[] args) { + GsonBundle gsonBundle = new GsonBundle(); + Gson gson = new Gson(); + + System.out.println(gson.toJson(gsonBundle)); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java new file mode 100644 index 0000000000..5a90e39fce --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java @@ -0,0 +1,17 @@ +package com.baeldung.gson_primitive_types.boolean_value; + +import com.baeldung.gson_primitive_types.models.GsonBoolean; +import com.baeldung.gson_primitive_types.models.GsonFloat; +import com.google.gson.Gson; + +public class JsonIntegerRepresentationBooleanValue { + public static void main(String[] args) { + // Raises exception. + String json = "{\"value\": 1}"; + Gson gson = new Gson(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java new file mode 100644 index 0000000000..58fbed6a8f --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java @@ -0,0 +1,16 @@ +package com.baeldung.gson_primitive_types.boolean_value; + +import com.baeldung.gson_primitive_types.models.GsonBoolean; +import com.google.gson.Gson; + +public class JsonInvalidValueWithinStringBooleanValue { + public static void main(String[] args) { + // It is ignored. + String json = "{\"value\": \"15x\"}"; + Gson gson = new Gson(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java new file mode 100644 index 0000000000..f6061c1cea --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java @@ -0,0 +1,16 @@ +package com.baeldung.gson_primitive_types.boolean_value; + +import com.baeldung.gson_primitive_types.models.GsonBoolean; +import com.google.gson.Gson; + +public class JsonYesRepresentationBooleanValue { + public static void main(String[] args) { + // It fails silently. + String json = "{\"value\": yes}"; + Gson gson = new Gson(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java new file mode 100644 index 0000000000..f9b8045d6c --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java @@ -0,0 +1,27 @@ +package com.baeldung.gson_primitive_types.byte_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.*; + +import java.lang.reflect.Type; + +public class ToJsonBitString { + public static void main(String[] args) { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(GsonBitString.class, new GsonBitStringSerializer()); + + Gson gson = builder.create(); + GsonBitString model = new GsonBitString(); + model.value = (byte) 0b1111; + + System.out.println(gson.toJson(model)); + } + + static class GsonBitStringSerializer implements JsonSerializer { + @Override public JsonElement serialize(GsonBitString gsonBundle, Type type, JsonSerializationContext jsonSerializationContext) { + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("value", Integer.toBinaryString(gsonBundle.value)); + return jsonObject; + } + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java new file mode 100644 index 0000000000..4bd404d811 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java @@ -0,0 +1,28 @@ +package com.baeldung.gson_primitive_types.byte_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.*; + +import java.lang.reflect.Type; + +public class fromJsonBitString { + public static void main(String[] args) { + String json = "{\"value\": \"1111\"}"; + GsonBuilder gsonBuilder = new GsonBuilder(); + gsonBuilder.registerTypeAdapter(GsonBitString.class, new GsonBitStringDeserializer()); + + Gson gson = gsonBuilder.create(); + + System.out.println(gson.fromJson(json, GsonBitString.class)); + } + + static class GsonBitStringDeserializer implements JsonDeserializer { + @Override public GsonBitString deserialize(JsonElement jsonElement, + Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + GsonBitString gsonBitString = new GsonBitString(); + gsonBitString.value = (byte) Integer.parseInt( + jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsString(), 2); + return gsonBitString; + } + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java new file mode 100644 index 0000000000..d98fd823d1 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java @@ -0,0 +1,16 @@ +package com.baeldung.gson_primitive_types.char_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.baeldung.gson_primitive_types.models.GsonLatinChar; +import com.google.gson.Gson; + +public class JsonUnicodeCharValue { + public static void main(String[] args) { + // The field is converted. + Gson gson = new Gson(); + String json = "{\"value\": \"\\u00AE\"}"; + GsonLatinChar model = gson.fromJson(json, GsonLatinChar.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java new file mode 100644 index 0000000000..7598b718be --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java @@ -0,0 +1,9 @@ +package com.baeldung.gson_primitive_types.models; + +public class GsonBitString { + public byte value = (byte) 1; + + public String toString() { + return "{byte: " + value + "}"; + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java new file mode 100644 index 0000000000..ce54276228 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java @@ -0,0 +1,9 @@ +package com.baeldung.gson_primitive_types.models; + +public class GsonBoolean { + public boolean value; + + public String toString() { + return "{boolean: " + value + "}"; + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java new file mode 100644 index 0000000000..51c68198ca --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java @@ -0,0 +1,19 @@ +package com.baeldung.gson_primitive_types.models; + +public class GsonBundle { + public byte byteValue = (byte) 0x00001111; + public short shortValue = (short) 3; + public int intValue = 3; + public long longValue = 3; + public float floatValue = 3.5f; + public double doubleValue = 3.5; + public boolean booleanValue = true; + public char charValue = 'a'; + + public String toString() { + return "{" + "byte: " + byteValue + ", " + "short: " + shortValue + ", " + + "int: " + intValue + ", " + "long: " + longValue + ", " + "float: " + + floatValue + ", " + "double: " + doubleValue + ", " + "boolean: " + + booleanValue + ", " + "char: " + charValue + "}"; + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java new file mode 100644 index 0000000000..bf4abf9fbb --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java @@ -0,0 +1,9 @@ +package com.baeldung.gson_primitive_types.models; + +public class GsonFloat { + public float value; + + public String toString() { + return "{float: " + value + "}"; + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java new file mode 100644 index 0000000000..73b73f6bb4 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java @@ -0,0 +1,9 @@ +package com.baeldung.gson_primitive_types.models; + +public class GsonLatinChar { + public char value; + + public String toString() { + return "{char: " + value + "}"; + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java new file mode 100644 index 0000000000..848248fd77 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.number_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonNonCompatibleNumberTypeValue { + public static void main(String[] args) { + // Raises an exception. + Gson gson = new Gson(); + String json = "{\"value\": 2.3}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java new file mode 100644 index 0000000000..6b63ee791e --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.number_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonOverflowValue { + public static void main(String[] args) { + // Overflow happens unnoticed. + Gson gson = new Gson(); + String json = "{\"value\": \"300\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java new file mode 100644 index 0000000000..6abe7101ee --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.number_value; + +import com.baeldung.gson_primitive_types.models.GsonFloat; +import com.google.gson.Gson; + +public class JsonPrecissionMismatchValue { + public static void main(String[] args) { + String json = "{\"value\": 12.123456789123456}"; + Gson gson = new Gson(); + + GsonFloat model = gson.fromJson(json, GsonFloat.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java new file mode 100644 index 0000000000..401e355efb --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.special_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonEmptyValue { + public static void main(String[] args) { + // Raises an exception. + Gson gson = new Gson(); + String json = "{\"value\": \"\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java new file mode 100644 index 0000000000..3100d0b939 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.special_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonInvalidStringValue { + public static void main(String[] args) { + // Raises an exception. + Gson gson = new Gson(); + String json = "{\"value\": \"15x\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java new file mode 100644 index 0000000000..cfa88258d4 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.special_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonInvalidValue { + public static void main(String[] args) { + // Raises an exception. + Gson gson = new Gson(); + String json = "{\"value\": s15s}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java new file mode 100644 index 0000000000..075a029f5e --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.special_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonNullValue { + public static void main(String[] args) { + // The field will just be ignored. + Gson gson = new Gson(); + String json = "{\"value\": null}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java new file mode 100644 index 0000000000..8b13a2b84d --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java @@ -0,0 +1,15 @@ +package com.baeldung.gson_primitive_types.special_value; + +import com.baeldung.gson_primitive_types.models.GsonBitString; +import com.google.gson.Gson; + +public class JsonValidStringValue { + public static void main(String[] args) { + // The field is converted. + Gson gson = new Gson(); + String json = "{\"value\": \"15\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + System.out.println(model); + } +} From 44e5a0b6a2cae868e7f98112feb096fd8b6d6e61 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 4 Dec 2018 06:46:41 +0100 Subject: [PATCH 02/14] BAEL-2412 Renaming packages. --- .../allprimitives}/fromJsonPrimitiveTypes.java | 4 ++-- .../allprimitives}/toJsonPrimitiveTypes.java | 4 ++-- .../JsonIntegerRepresentationBooleanValue.java | 5 ++--- .../JsonInvalidValueWithinStringBooleanValue.java | 5 ++--- .../booleanvalue}/JsonYesRepresentationBooleanValue.java | 4 ++-- .../bytevalue}/ToJsonBitString.java | 4 ++-- .../bytevalue}/fromJsonBitString.java | 4 ++-- .../charvalue}/JsonUnicodeCharValue.java | 7 +++---- .../models/GsonBitString.java | 2 +- .../models/GsonBoolean.java | 2 +- .../models/GsonBundle.java | 2 +- .../GsonLatinChar.java => primitives/models/GsonChar.java} | 4 ++-- .../models/GsonFloat.java | 2 +- .../numbervalue}/JsonNonCompatibleNumberTypeValue.java | 4 ++-- .../numbervalue}/JsonOverflowValue.java | 4 ++-- .../numbervalue}/JsonPrecissionMismatchValue.java | 4 ++-- .../specialvalue}/JsonEmptyValue.java | 4 ++-- .../specialvalue}/JsonInvalidStringValue.java | 4 ++-- .../specialvalue}/JsonInvalidValue.java | 4 ++-- .../specialvalue}/JsonNullValue.java | 4 ++-- .../specialvalue}/JsonValidStringValue.java | 4 ++-- 21 files changed, 39 insertions(+), 42 deletions(-) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/all_primitive_values => primitives/allprimitives}/fromJsonPrimitiveTypes.java (79%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/all_primitive_values => primitives/allprimitives}/toJsonPrimitiveTypes.java (67%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/boolean_value => primitives/booleanvalue}/JsonIntegerRepresentationBooleanValue.java (65%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/boolean_value => primitives/booleanvalue}/JsonInvalidValueWithinStringBooleanValue.java (59%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/boolean_value => primitives/booleanvalue}/JsonYesRepresentationBooleanValue.java (74%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/byte_value => primitives/bytevalue}/ToJsonBitString.java (88%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/byte_value => primitives/bytevalue}/fromJsonBitString.java (89%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/char_value => primitives/charvalue}/JsonUnicodeCharValue.java (52%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes => primitives}/models/GsonBitString.java (74%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes => primitives}/models/GsonBoolean.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes => primitives}/models/GsonBundle.java (93%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/models/GsonLatinChar.java => primitives/models/GsonChar.java} (56%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes => primitives}/models/GsonFloat.java (72%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/number_value => primitives/numbervalue}/JsonNonCompatibleNumberTypeValue.java (74%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/number_value => primitives/numbervalue}/JsonOverflowValue.java (74%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/number_value => primitives/numbervalue}/JsonPrecissionMismatchValue.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/special_value => primitives/specialvalue}/JsonEmptyValue.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/special_value => primitives/specialvalue}/JsonInvalidStringValue.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/special_value => primitives/specialvalue}/JsonInvalidValue.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/special_value => primitives/specialvalue}/JsonNullValue.java (73%) rename gson/src/main/java/org/baeldung/gson/{gsonprimitivetypes/special_value => primitives/specialvalue}/JsonValidStringValue.java (73%) diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java similarity index 79% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java rename to gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java index 259a9ca1ce..66e4d9dc77 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/fromJsonPrimitiveTypes.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.all_primitive_values; +package org.baeldung.gson.primitives.allprimitives; -import com.baeldung.gson_primitive_types.models.GsonBundle; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBundle; public class fromJsonPrimitiveTypes { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java similarity index 67% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java rename to gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java index a55ba85e4f..ce35f37490 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/all_primitive_values/toJsonPrimitiveTypes.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java @@ -1,6 +1,6 @@ -package com.baeldung.gson_primitive_types.all_primitive_values; +package org.baeldung.gson.primitives.allprimitives; -import com.baeldung.gson_primitive_types.models.GsonBundle; +import org.baeldung.gson.primitives.models.GsonBundle; import com.google.gson.Gson; public class toJsonPrimitiveTypes { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java similarity index 65% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java index 5a90e39fce..7cbc1f7869 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonIntegerRepresentationBooleanValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java @@ -1,8 +1,7 @@ -package com.baeldung.gson_primitive_types.boolean_value; +package org.baeldung.gson.primitives.booleanvalue; -import com.baeldung.gson_primitive_types.models.GsonBoolean; -import com.baeldung.gson_primitive_types.models.GsonFloat; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBoolean; public class JsonIntegerRepresentationBooleanValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java similarity index 59% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java index 58fbed6a8f..a345d5e6f9 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonInvalidValueWithinStringBooleanValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java @@ -1,6 +1,5 @@ -package com.baeldung.gson_primitive_types.boolean_value; +package org.baeldung.gson.primitives.booleanvalue; -import com.baeldung.gson_primitive_types.models.GsonBoolean; import com.google.gson.Gson; public class JsonInvalidValueWithinStringBooleanValue { @@ -9,7 +8,7 @@ public class JsonInvalidValueWithinStringBooleanValue { String json = "{\"value\": \"15x\"}"; Gson gson = new Gson(); - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + org.baeldung.gson.primitives.models.GsonBoolean model = gson.fromJson(json, org.baeldung.gson.primitives.models.GsonBoolean.class); System.out.println(model); } diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java similarity index 74% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java index f6061c1cea..b5e2e74a9a 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/boolean_value/JsonYesRepresentationBooleanValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.boolean_value; +package org.baeldung.gson.primitives.booleanvalue; -import com.baeldung.gson_primitive_types.models.GsonBoolean; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBoolean; public class JsonYesRepresentationBooleanValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java similarity index 88% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java rename to gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java index f9b8045d6c..20247efbff 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/ToJsonBitString.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.byte_value; +package org.baeldung.gson.primitives.bytevalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.*; +import org.baeldung.gson.primitives.models.GsonBitString; import java.lang.reflect.Type; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java similarity index 89% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java rename to gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java index 4bd404d811..18471ff365 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/byte_value/fromJsonBitString.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.byte_value; +package org.baeldung.gson.primitives.bytevalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.*; +import org.baeldung.gson.primitives.models.GsonBitString; import java.lang.reflect.Type; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java b/gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java similarity index 52% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java index d98fd823d1..9164607e8d 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/char_value/JsonUnicodeCharValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java @@ -1,15 +1,14 @@ -package com.baeldung.gson_primitive_types.char_value; +package org.baeldung.gson.primitives.charvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; -import com.baeldung.gson_primitive_types.models.GsonLatinChar; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonChar; public class JsonUnicodeCharValue { public static void main(String[] args) { // The field is converted. Gson gson = new Gson(); String json = "{\"value\": \"\\u00AE\"}"; - GsonLatinChar model = gson.fromJson(json, GsonLatinChar.class); + GsonChar model = gson.fromJson(json, GsonChar.class); System.out.println(model); } diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java similarity index 74% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java index 7598b718be..f84a7f82f2 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBitString.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java @@ -1,4 +1,4 @@ -package com.baeldung.gson_primitive_types.models; +package org.baeldung.gson.primitives.models; public class GsonBitString { public byte value = (byte) 1; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java index ce54276228..228f89fa3b 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBoolean.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java @@ -1,4 +1,4 @@ -package com.baeldung.gson_primitive_types.models; +package org.baeldung.gson.primitives.models; public class GsonBoolean { public boolean value; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java similarity index 93% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java index 51c68198ca..1fff9a8a29 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonBundle.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java @@ -1,4 +1,4 @@ -package com.baeldung.gson_primitive_types.models; +package org.baeldung.gson.primitives.models; public class GsonBundle { public byte byteValue = (byte) 0x00001111; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java similarity index 56% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java index 73b73f6bb4..6983f7bfff 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonLatinChar.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java @@ -1,6 +1,6 @@ -package com.baeldung.gson_primitive_types.models; +package org.baeldung.gson.primitives.models; -public class GsonLatinChar { +public class GsonChar { public char value; public String toString() { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java similarity index 72% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java index bf4abf9fbb..43d1d9af16 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/models/GsonFloat.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java @@ -1,4 +1,4 @@ -package com.baeldung.gson_primitive_types.models; +package org.baeldung.gson.primitives.models; public class GsonFloat { public float value; diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java similarity index 74% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java index 848248fd77..8aba292858 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonNonCompatibleNumberTypeValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.number_value; +package org.baeldung.gson.primitives.numbervalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonNonCompatibleNumberTypeValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java similarity index 74% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java index 6b63ee791e..0cceff042d 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonOverflowValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.number_value; +package org.baeldung.gson.primitives.numbervalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonOverflowValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java index 6abe7101ee..40bc6532fb 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/number_value/JsonPrecissionMismatchValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.number_value; +package org.baeldung.gson.primitives.numbervalue; -import com.baeldung.gson_primitive_types.models.GsonFloat; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonFloat; public class JsonPrecissionMismatchValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java index 401e355efb..3460383704 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonEmptyValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.special_value; +package org.baeldung.gson.primitives.specialvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonEmptyValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java index 3100d0b939..9453fc1215 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidStringValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.special_value; +package org.baeldung.gson.primitives.specialvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonInvalidStringValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java index cfa88258d4..92094f98bd 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonInvalidValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.special_value; +package org.baeldung.gson.primitives.specialvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonInvalidValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java index 075a029f5e..47d8df7b54 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonNullValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.special_value; +package org.baeldung.gson.primitives.specialvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonNullValue { public static void main(String[] args) { diff --git a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java similarity index 73% rename from gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java rename to gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java index 8b13a2b84d..315bf2a73d 100644 --- a/gson/src/main/java/org/baeldung/gson/gsonprimitivetypes/special_value/JsonValidStringValue.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java @@ -1,7 +1,7 @@ -package com.baeldung.gson_primitive_types.special_value; +package org.baeldung.gson.primitives.specialvalue; -import com.baeldung.gson_primitive_types.models.GsonBitString; import com.google.gson.Gson; +import org.baeldung.gson.primitives.models.GsonBitString; public class JsonValidStringValue { public static void main(String[] args) { From 4c0ce1d7464ccb173bc1380959088034001c6128 Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 4 Dec 2018 20:32:02 +0100 Subject: [PATCH 03/14] BAEL-2412 Replace main apps by unit tests. --- .../allprimitives/fromJsonPrimitiveTypes.java | 17 -- .../allprimitives/toJsonPrimitiveTypes.java | 13 -- ...JsonIntegerRepresentationBooleanValue.java | 16 -- ...nInvalidValueWithinStringBooleanValue.java | 15 -- .../JsonYesRepresentationBooleanValue.java | 16 -- .../primitives/bytevalue/ToJsonBitString.java | 27 --- .../bytevalue/fromJsonBitString.java | 28 --- .../charvalue/JsonUnicodeCharValue.java | 15 -- .../JsonNonCompatibleNumberTypeValue.java | 15 -- .../numbervalue/JsonOverflowValue.java | 15 -- .../JsonPrecissionMismatchValue.java | 15 -- .../specialvalue/JsonEmptyValue.java | 15 -- .../specialvalue/JsonInvalidStringValue.java | 15 -- .../specialvalue/JsonInvalidValue.java | 15 -- .../specialvalue/JsonNullValue.java | 15 -- .../specialvalue/JsonValidStringValue.java | 15 -- .../baeldung/gson/primitives/UnitTest.java | 180 ++++++++++++++++++ 17 files changed, 180 insertions(+), 267 deletions(-) delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java create mode 100644 gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java deleted file mode 100644 index 66e4d9dc77..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/fromJsonPrimitiveTypes.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung.gson.primitives.allprimitives; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBundle; - -public class fromJsonPrimitiveTypes { - public static void main(String[] args) { - String json = "{\"value\": 17, \"shortValue\": 3, \"intValue\": 3, " - + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" - + ", \"booleanValue\": true, \"charValue\": \"a\"}"; - - Gson gson = new Gson(); - GsonBundle gsonBundle = gson.fromJson(json, GsonBundle.class); - - System.out.println(gsonBundle); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java b/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java deleted file mode 100644 index ce35f37490..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/allprimitives/toJsonPrimitiveTypes.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.baeldung.gson.primitives.allprimitives; - -import org.baeldung.gson.primitives.models.GsonBundle; -import com.google.gson.Gson; - -public class toJsonPrimitiveTypes { - public static void main(String[] args) { - GsonBundle gsonBundle = new GsonBundle(); - Gson gson = new Gson(); - - System.out.println(gson.toJson(gsonBundle)); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java deleted file mode 100644 index 7cbc1f7869..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonIntegerRepresentationBooleanValue.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.gson.primitives.booleanvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBoolean; - -public class JsonIntegerRepresentationBooleanValue { - public static void main(String[] args) { - // Raises exception. - String json = "{\"value\": 1}"; - Gson gson = new Gson(); - - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java deleted file mode 100644 index a345d5e6f9..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonInvalidValueWithinStringBooleanValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.booleanvalue; - -import com.google.gson.Gson; - -public class JsonInvalidValueWithinStringBooleanValue { - public static void main(String[] args) { - // It is ignored. - String json = "{\"value\": \"15x\"}"; - Gson gson = new Gson(); - - org.baeldung.gson.primitives.models.GsonBoolean model = gson.fromJson(json, org.baeldung.gson.primitives.models.GsonBoolean.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java b/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java deleted file mode 100644 index b5e2e74a9a..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/booleanvalue/JsonYesRepresentationBooleanValue.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.baeldung.gson.primitives.booleanvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBoolean; - -public class JsonYesRepresentationBooleanValue { - public static void main(String[] args) { - // It fails silently. - String json = "{\"value\": yes}"; - Gson gson = new Gson(); - - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java deleted file mode 100644 index 20247efbff..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/ToJsonBitString.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.baeldung.gson.primitives.bytevalue; - -import com.google.gson.*; -import org.baeldung.gson.primitives.models.GsonBitString; - -import java.lang.reflect.Type; - -public class ToJsonBitString { - public static void main(String[] args) { - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(GsonBitString.class, new GsonBitStringSerializer()); - - Gson gson = builder.create(); - GsonBitString model = new GsonBitString(); - model.value = (byte) 0b1111; - - System.out.println(gson.toJson(model)); - } - - static class GsonBitStringSerializer implements JsonSerializer { - @Override public JsonElement serialize(GsonBitString gsonBundle, Type type, JsonSerializationContext jsonSerializationContext) { - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("value", Integer.toBinaryString(gsonBundle.value)); - return jsonObject; - } - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java deleted file mode 100644 index 18471ff365..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/bytevalue/fromJsonBitString.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.baeldung.gson.primitives.bytevalue; - -import com.google.gson.*; -import org.baeldung.gson.primitives.models.GsonBitString; - -import java.lang.reflect.Type; - -public class fromJsonBitString { - public static void main(String[] args) { - String json = "{\"value\": \"1111\"}"; - GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(GsonBitString.class, new GsonBitStringDeserializer()); - - Gson gson = gsonBuilder.create(); - - System.out.println(gson.fromJson(json, GsonBitString.class)); - } - - static class GsonBitStringDeserializer implements JsonDeserializer { - @Override public GsonBitString deserialize(JsonElement jsonElement, - Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - GsonBitString gsonBitString = new GsonBitString(); - gsonBitString.value = (byte) Integer.parseInt( - jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsString(), 2); - return gsonBitString; - } - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java b/gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java deleted file mode 100644 index 9164607e8d..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/charvalue/JsonUnicodeCharValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.charvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonChar; - -public class JsonUnicodeCharValue { - public static void main(String[] args) { - // The field is converted. - Gson gson = new Gson(); - String json = "{\"value\": \"\\u00AE\"}"; - GsonChar model = gson.fromJson(json, GsonChar.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java deleted file mode 100644 index 8aba292858..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonNonCompatibleNumberTypeValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.numbervalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonNonCompatibleNumberTypeValue { - public static void main(String[] args) { - // Raises an exception. - Gson gson = new Gson(); - String json = "{\"value\": 2.3}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java deleted file mode 100644 index 0cceff042d..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonOverflowValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.numbervalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonOverflowValue { - public static void main(String[] args) { - // Overflow happens unnoticed. - Gson gson = new Gson(); - String json = "{\"value\": \"300\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java b/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java deleted file mode 100644 index 40bc6532fb..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/numbervalue/JsonPrecissionMismatchValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.numbervalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonFloat; - -public class JsonPrecissionMismatchValue { - public static void main(String[] args) { - String json = "{\"value\": 12.123456789123456}"; - Gson gson = new Gson(); - - GsonFloat model = gson.fromJson(json, GsonFloat.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java deleted file mode 100644 index 3460383704..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonEmptyValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.specialvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonEmptyValue { - public static void main(String[] args) { - // Raises an exception. - Gson gson = new Gson(); - String json = "{\"value\": \"\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java deleted file mode 100644 index 9453fc1215..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidStringValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.specialvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonInvalidStringValue { - public static void main(String[] args) { - // Raises an exception. - Gson gson = new Gson(); - String json = "{\"value\": \"15x\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java deleted file mode 100644 index 92094f98bd..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonInvalidValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.specialvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonInvalidValue { - public static void main(String[] args) { - // Raises an exception. - Gson gson = new Gson(); - String json = "{\"value\": s15s}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java deleted file mode 100644 index 47d8df7b54..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonNullValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.specialvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonNullValue { - public static void main(String[] args) { - // The field will just be ignored. - Gson gson = new Gson(); - String json = "{\"value\": null}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java b/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java deleted file mode 100644 index 315bf2a73d..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/specialvalue/JsonValidStringValue.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.baeldung.gson.primitives.specialvalue; - -import com.google.gson.Gson; -import org.baeldung.gson.primitives.models.GsonBitString; - -public class JsonValidStringValue { - public static void main(String[] args) { - // The field is converted. - Gson gson = new Gson(); - String json = "{\"value\": \"15\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); - - System.out.println(model); - } -} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java new file mode 100644 index 0000000000..da91f02447 --- /dev/null +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -0,0 +1,180 @@ +package org.baeldung.gson.primitives; + +import com.google.gson.*; +import org.baeldung.gson.primitives.models.*; +import org.junit.Test; + +import java.lang.reflect.Type; + +import static junit.framework.TestCase.*; + +public class UnitTest { + @Test public void toJsonAllPrimitives() { + GsonBundle gsonBundle = new GsonBundle(); + Gson gson = new Gson(); + + String expected = "{\"byteValue\":17,\"shortValue\":3,\"intValue\":3," + "\"longValue\":3,\"floatValue\":3.5" + ",\"doubleValue\":3.5" + ",\"booleanValue\":true,\"charValue\":\"a\"}"; + + assertEquals(expected, gson.toJson(gsonBundle)); + } + + @Test public void fromJsonAllPrimitives() { + String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + ", \"booleanValue\": true, \"charValue\": \"a\"}"; + + Gson gson = new Gson(); + GsonBundle model = gson.fromJson(json, GsonBundle.class); + + assertEquals(17, model.byteValue); + assertEquals(3, model.shortValue); + assertEquals(3, model.intValue); + assertEquals(3, model.longValue); + assertEquals(3.5, model.floatValue, 0.0001); + assertEquals(3.5, model.doubleValue, 0.0001); + assertTrue(model.booleanValue); + assertEquals('a', model.charValue); + } + + @Test public void toJsonByteToBitString() { + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(GsonBitString.class, new GsonBitStringSerializer()); + + Gson gson = builder.create(); + GsonBitString model = new GsonBitString(); + model.value = (byte) 0b1111; + + assertEquals("{\"value\":\"1111\"}", gson.toJson(model)); + } + + @Test public void fromJsonByteFromBitString() { + String json = "{\"value\": \"1111\"}"; + GsonBuilder gsonBuilder = new GsonBuilder(); + gsonBuilder.registerTypeAdapter(GsonBitString.class, new GsonBitStringDeserializer()); + + Gson gson = gsonBuilder.create(); + + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + assertEquals(15, model.value); + } + + @Test public void fromJsonPrecissionMismatch() { + String json = "{\"value\": 12.123456789123456}"; + Gson gson = new Gson(); + GsonFloat model = gson.fromJson(json, GsonFloat.class); + assertEquals(12.123457f, model.value, 0.000001); + } + + @Test public void fromJsonOverflow() { + Gson gson = new Gson(); + String json = "{\"value\": \"300\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + assertEquals(44, model.value); + } + + @Test public void fromJsonNonCompatibleNumberTypes() { + Gson gson = new Gson(); + String json = "{\"value\": 2.3}"; + try { + gson.fromJson(json, GsonBitString.class); + } catch (Exception ex) { + assertTrue(ex instanceof JsonSyntaxException); + assertTrue(ex.getCause() instanceof NumberFormatException); + return; + } + + fail(); + } + + @Test public void fromJsonUnicodeChar() { + Gson gson = new Gson(); + String json = "{\"value\": \"\\u00AE\"}"; + GsonChar model = gson.fromJson(json, GsonChar.class); + + assertEquals('\u00AE', model.value); + } + + @Test public void fromJsonNull() { + Gson gson = new Gson(); + String json = "{\"value\": null}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + assertEquals(1, model.value); + } + + @Test(expected = JsonSyntaxException.class) public void fromJsonEmptyString() { + Gson gson = new Gson(); + String json = "{\"value\": \"\"}"; + gson.fromJson(json, GsonBitString.class); + } + + @Test public void fromJsonValidValueWithinString() { + Gson gson = new Gson(); + String json = "{\"value\": \"15\"}"; + GsonBitString model = gson.fromJson(json, GsonBitString.class); + + assertEquals(15, model.value); + } + + @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueWithinString() { + Gson gson = new Gson(); + String json = "{\"value\": \"15x\"}"; + gson.fromJson(json, GsonBitString.class); + } + + @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueNotInAString() { + Gson gson = new Gson(); + String json = "{\"value\": s15s}"; + gson.fromJson(json, GsonBitString.class); + } + + @Test public void fromJsonBooleanFrom2ValueInteger() { + String json = "{\"value\": 1}"; + Gson gson = new Gson(); + + try { + gson.fromJson(json, GsonBoolean.class); + } catch (Exception ex) { + assertTrue(ex instanceof JsonSyntaxException); + assertTrue(ex.getCause() instanceof IllegalStateException); + return; + } + + fail(); + } + + @Test public void fromJsonBooleanfromYes() { + String json = "{\"value\": yes}"; + Gson gson = new Gson(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + // pay attention here that we are deserializing yes. + assertFalse(model.value); + } + + @Test public void fromJsonBooleanFromInvalidValue() { + String json = "{\"value\": \"15x\"}"; + Gson gson = new Gson(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + assertFalse(model.value); + } + + static class GsonBitStringDeserializer implements JsonDeserializer { + @Override public GsonBitString deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + GsonBitString gsonBitString = new GsonBitString(); + gsonBitString.value = (byte) Integer.parseInt(jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsString(), 2); + return gsonBitString; + } + } + + static class GsonBitStringSerializer implements JsonSerializer { + @Override public JsonElement serialize(GsonBitString gsonBundle, Type type, JsonSerializationContext jsonSerializationContext) { + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("value", Integer.toBinaryString(gsonBundle.value)); + return jsonObject; + } + } +} From 19ed35aef4979947448d0d13b50add52db428069 Mon Sep 17 00:00:00 2001 From: Javier Date: Thu, 6 Dec 2018 10:13:20 +0100 Subject: [PATCH 04/14] BAEL-2412 Change name of a class. Move class init code to tests. Add solution to deserializing a boolean from an 2-value integer. Change formatting for long sentences, mainly the serializers/deserializers. --- .../{GsonBundle.java => PrimitiveBundle.java} | 18 ++-- .../baeldung/gson/primitives/UnitTest.java | 87 ++++++++++++++++--- 2 files changed, 83 insertions(+), 22 deletions(-) rename gson/src/main/java/org/baeldung/gson/primitives/models/{GsonBundle.java => PrimitiveBundle.java} (55%) diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java similarity index 55% rename from gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java index 1fff9a8a29..30bc4d0d9f 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBundle.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java @@ -1,14 +1,14 @@ package org.baeldung.gson.primitives.models; -public class GsonBundle { - public byte byteValue = (byte) 0x00001111; - public short shortValue = (short) 3; - public int intValue = 3; - public long longValue = 3; - public float floatValue = 3.5f; - public double doubleValue = 3.5; - public boolean booleanValue = true; - public char charValue = 'a'; +public class PrimitiveBundle { + public byte byteValue; + public short shortValue; + public int intValue; + public long longValue; + public float floatValue; + public double doubleValue; + public boolean booleanValue; + public char charValue; public String toString() { return "{" + "byte: " + byteValue + ", " + "short: " + shortValue + ", " diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index da91f02447..890e6eefd7 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -10,28 +10,42 @@ import static junit.framework.TestCase.*; public class UnitTest { @Test public void toJsonAllPrimitives() { - GsonBundle gsonBundle = new GsonBundle(); + PrimitiveBundle primitiveBundle = new PrimitiveBundle(); + + // @formatter:off + primitiveBundle.byteValue = (byte) 0x00001111; + primitiveBundle.shortValue = (short) 3; + primitiveBundle.intValue = 3; + primitiveBundle.longValue = 3; + primitiveBundle.floatValue = 3.5f; + primitiveBundle.doubleValue = 3.5; + primitiveBundle.booleanValue = true; + primitiveBundle.charValue = 'a'; + // @formatter:on + Gson gson = new Gson(); String expected = "{\"byteValue\":17,\"shortValue\":3,\"intValue\":3," + "\"longValue\":3,\"floatValue\":3.5" + ",\"doubleValue\":3.5" + ",\"booleanValue\":true,\"charValue\":\"a\"}"; - assertEquals(expected, gson.toJson(gsonBundle)); + assertEquals(expected, gson.toJson(primitiveBundle)); } @Test public void fromJsonAllPrimitives() { String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + ", \"booleanValue\": true, \"charValue\": \"a\"}"; Gson gson = new Gson(); - GsonBundle model = gson.fromJson(json, GsonBundle.class); + PrimitiveBundle model = gson.fromJson(json, PrimitiveBundle.class); - assertEquals(17, model.byteValue); - assertEquals(3, model.shortValue); - assertEquals(3, model.intValue); - assertEquals(3, model.longValue); + // @formatter:off + assertEquals(17, model.byteValue); + assertEquals(3, model.shortValue); + assertEquals(3, model.intValue); + assertEquals(3, model.longValue); assertEquals(3.5, model.floatValue, 0.0001); assertEquals(3.5, model.doubleValue, 0.0001); - assertTrue(model.booleanValue); + assertTrue( model.booleanValue); assertEquals('a', model.charValue); + // @formatter:on } @Test public void toJsonByteToBitString() { @@ -143,7 +157,19 @@ public class UnitTest { fail(); } - @Test public void fromJsonBooleanfromYes() { + @Test public void fromJsonBooleanFrom2ValueIntegerSolution() { + String json = "{\"value\": 1}"; + GsonBuilder builder = new GsonBuilder(); + builder.registerTypeAdapter(GsonBoolean.class, new GsonBoolean2ValueIntegerDeserializer()); + + Gson gson = builder.create(); + + GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + + assertTrue(model.value); + } + + @Test public void fromJsonBooleanFromYes() { String json = "{\"value\": yes}"; Gson gson = new Gson(); @@ -162,19 +188,54 @@ public class UnitTest { assertFalse(model.value); } + // @formatter:off static class GsonBitStringDeserializer implements JsonDeserializer { - @Override public GsonBitString deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + @Override public GsonBitString deserialize( + JsonElement jsonElement, + Type type, + JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + GsonBitString gsonBitString = new GsonBitString(); - gsonBitString.value = (byte) Integer.parseInt(jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsString(), 2); + gsonBitString.value = (byte) Integer.parseInt( + jsonElement.getAsJsonObject() + .getAsJsonPrimitive("value") + .getAsString() + , 2); return gsonBitString; } } static class GsonBitStringSerializer implements JsonSerializer { - @Override public JsonElement serialize(GsonBitString gsonBundle, Type type, JsonSerializationContext jsonSerializationContext) { + @Override public JsonElement serialize( + GsonBitString model, + Type type, + JsonSerializationContext jsonSerializationContext) { + JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("value", Integer.toBinaryString(gsonBundle.value)); + jsonObject.addProperty("value", Integer.toBinaryString(model.value)); return jsonObject; } } + + static class GsonBoolean2ValueIntegerDeserializer implements JsonDeserializer { + @Override public GsonBoolean deserialize( + JsonElement jsonElement, + Type type, + JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { + + GsonBoolean model = new GsonBoolean(); + int value = jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsInt(); + if (value == 0) { + model.value = false; + } else if (value == 1) { + model.value = true; + } else { + throw new JsonParseException("Unexpected value. Trying to deserialize " + + "a boolean from an integer different than 0 and 1."); + } + + return model; + } + } + // @formatter:on } From cdd6968c318d3aedbb5a0715a465ce93b53ed64b Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 7 Dec 2018 10:57:30 +0100 Subject: [PATCH 05/14] BAEL-2412 Changes PR. --- .../{GsonBoolean.java => BooleanExample.java} | 2 +- .../{GsonBitString.java => ByteExample.java} | 2 +- .../{GsonChar.java => CharExample.java} | 2 +- .../{GsonFloat.java => FloatExample.java} | 2 +- .../baeldung/gson/primitives/UnitTest.java | 56 +++++++++---------- 5 files changed, 32 insertions(+), 32 deletions(-) rename gson/src/main/java/org/baeldung/gson/primitives/models/{GsonBoolean.java => BooleanExample.java} (83%) rename gson/src/main/java/org/baeldung/gson/primitives/models/{GsonBitString.java => ByteExample.java} (84%) rename gson/src/main/java/org/baeldung/gson/primitives/models/{GsonChar.java => CharExample.java} (84%) rename gson/src/main/java/org/baeldung/gson/primitives/models/{GsonFloat.java => FloatExample.java} (84%) diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java b/gson/src/main/java/org/baeldung/gson/primitives/models/BooleanExample.java similarity index 83% rename from gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/BooleanExample.java index 228f89fa3b..1fe87650de 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBoolean.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/BooleanExample.java @@ -1,6 +1,6 @@ package org.baeldung.gson.primitives.models; -public class GsonBoolean { +public class BooleanExample { public boolean value; public String toString() { diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java b/gson/src/main/java/org/baeldung/gson/primitives/models/ByteExample.java similarity index 84% rename from gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/ByteExample.java index f84a7f82f2..2e1c68ee51 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonBitString.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/ByteExample.java @@ -1,6 +1,6 @@ package org.baeldung.gson.primitives.models; -public class GsonBitString { +public class ByteExample { public byte value = (byte) 1; public String toString() { diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java b/gson/src/main/java/org/baeldung/gson/primitives/models/CharExample.java similarity index 84% rename from gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/CharExample.java index 6983f7bfff..ccac913f23 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonChar.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/CharExample.java @@ -1,6 +1,6 @@ package org.baeldung.gson.primitives.models; -public class GsonChar { +public class CharExample { public char value; public String toString() { diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java b/gson/src/main/java/org/baeldung/gson/primitives/models/FloatExample.java similarity index 84% rename from gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java rename to gson/src/main/java/org/baeldung/gson/primitives/models/FloatExample.java index 43d1d9af16..00a97f68fc 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/GsonFloat.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/FloatExample.java @@ -1,6 +1,6 @@ package org.baeldung.gson.primitives.models; -public class GsonFloat { +public class FloatExample { public float value; public String toString() { diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 890e6eefd7..87d5cbbb60 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -50,10 +50,10 @@ public class UnitTest { @Test public void toJsonByteToBitString() { GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(GsonBitString.class, new GsonBitStringSerializer()); + builder.registerTypeAdapter(ByteExample.class, new GsonBitStringSerializer()); Gson gson = builder.create(); - GsonBitString model = new GsonBitString(); + ByteExample model = new ByteExample(); model.value = (byte) 0b1111; assertEquals("{\"value\":\"1111\"}", gson.toJson(model)); @@ -62,11 +62,11 @@ public class UnitTest { @Test public void fromJsonByteFromBitString() { String json = "{\"value\": \"1111\"}"; GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(GsonBitString.class, new GsonBitStringDeserializer()); + gsonBuilder.registerTypeAdapter(ByteExample.class, new GsonBitStringDeserializer()); Gson gson = gsonBuilder.create(); - GsonBitString model = gson.fromJson(json, GsonBitString.class); + ByteExample model = gson.fromJson(json, ByteExample.class); assertEquals(15, model.value); } @@ -74,14 +74,14 @@ public class UnitTest { @Test public void fromJsonPrecissionMismatch() { String json = "{\"value\": 12.123456789123456}"; Gson gson = new Gson(); - GsonFloat model = gson.fromJson(json, GsonFloat.class); + FloatExample model = gson.fromJson(json, FloatExample.class); assertEquals(12.123457f, model.value, 0.000001); } @Test public void fromJsonOverflow() { Gson gson = new Gson(); String json = "{\"value\": \"300\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); + ByteExample model = gson.fromJson(json, ByteExample.class); assertEquals(44, model.value); } @@ -90,7 +90,7 @@ public class UnitTest { Gson gson = new Gson(); String json = "{\"value\": 2.3}"; try { - gson.fromJson(json, GsonBitString.class); + gson.fromJson(json, ByteExample.class); } catch (Exception ex) { assertTrue(ex instanceof JsonSyntaxException); assertTrue(ex.getCause() instanceof NumberFormatException); @@ -103,7 +103,7 @@ public class UnitTest { @Test public void fromJsonUnicodeChar() { Gson gson = new Gson(); String json = "{\"value\": \"\\u00AE\"}"; - GsonChar model = gson.fromJson(json, GsonChar.class); + CharExample model = gson.fromJson(json, CharExample.class); assertEquals('\u00AE', model.value); } @@ -111,7 +111,7 @@ public class UnitTest { @Test public void fromJsonNull() { Gson gson = new Gson(); String json = "{\"value\": null}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); + ByteExample model = gson.fromJson(json, ByteExample.class); assertEquals(1, model.value); } @@ -119,13 +119,13 @@ public class UnitTest { @Test(expected = JsonSyntaxException.class) public void fromJsonEmptyString() { Gson gson = new Gson(); String json = "{\"value\": \"\"}"; - gson.fromJson(json, GsonBitString.class); + gson.fromJson(json, ByteExample.class); } @Test public void fromJsonValidValueWithinString() { Gson gson = new Gson(); String json = "{\"value\": \"15\"}"; - GsonBitString model = gson.fromJson(json, GsonBitString.class); + ByteExample model = gson.fromJson(json, ByteExample.class); assertEquals(15, model.value); } @@ -133,13 +133,13 @@ public class UnitTest { @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueWithinString() { Gson gson = new Gson(); String json = "{\"value\": \"15x\"}"; - gson.fromJson(json, GsonBitString.class); + gson.fromJson(json, ByteExample.class); } @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueNotInAString() { Gson gson = new Gson(); String json = "{\"value\": s15s}"; - gson.fromJson(json, GsonBitString.class); + gson.fromJson(json, ByteExample.class); } @Test public void fromJsonBooleanFrom2ValueInteger() { @@ -147,7 +147,7 @@ public class UnitTest { Gson gson = new Gson(); try { - gson.fromJson(json, GsonBoolean.class); + gson.fromJson(json, BooleanExample.class); } catch (Exception ex) { assertTrue(ex instanceof JsonSyntaxException); assertTrue(ex.getCause() instanceof IllegalStateException); @@ -160,11 +160,11 @@ public class UnitTest { @Test public void fromJsonBooleanFrom2ValueIntegerSolution() { String json = "{\"value\": 1}"; GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(GsonBoolean.class, new GsonBoolean2ValueIntegerDeserializer()); + builder.registerTypeAdapter(BooleanExample.class, new BooleanAs2ValueIntegerDeserializer()); Gson gson = builder.create(); - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + BooleanExample model = gson.fromJson(json, BooleanExample.class); assertTrue(model.value); } @@ -173,7 +173,7 @@ public class UnitTest { String json = "{\"value\": yes}"; Gson gson = new Gson(); - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + BooleanExample model = gson.fromJson(json, BooleanExample.class); // pay attention here that we are deserializing yes. assertFalse(model.value); @@ -183,31 +183,31 @@ public class UnitTest { String json = "{\"value\": \"15x\"}"; Gson gson = new Gson(); - GsonBoolean model = gson.fromJson(json, GsonBoolean.class); + BooleanExample model = gson.fromJson(json, BooleanExample.class); assertFalse(model.value); } // @formatter:off - static class GsonBitStringDeserializer implements JsonDeserializer { - @Override public GsonBitString deserialize( + static class GsonBitStringDeserializer implements JsonDeserializer { + @Override public ByteExample deserialize( JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - GsonBitString gsonBitString = new GsonBitString(); - gsonBitString.value = (byte) Integer.parseInt( + ByteExample byteExample = new ByteExample(); + byteExample.value = (byte) Integer.parseInt( jsonElement.getAsJsonObject() .getAsJsonPrimitive("value") .getAsString() , 2); - return gsonBitString; + return byteExample; } } - static class GsonBitStringSerializer implements JsonSerializer { + static class GsonBitStringSerializer implements JsonSerializer { @Override public JsonElement serialize( - GsonBitString model, + ByteExample model, Type type, JsonSerializationContext jsonSerializationContext) { @@ -217,13 +217,13 @@ public class UnitTest { } } - static class GsonBoolean2ValueIntegerDeserializer implements JsonDeserializer { - @Override public GsonBoolean deserialize( + static class BooleanAs2ValueIntegerDeserializer implements JsonDeserializer { + @Override public BooleanExample deserialize( JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - GsonBoolean model = new GsonBoolean(); + BooleanExample model = new BooleanExample(); int value = jsonElement.getAsJsonObject().getAsJsonPrimitive("value").getAsInt(); if (value == 0) { model.value = false; From e3b698620c557b51c205f13b3e12fca59c0a7c78 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 7 Dec 2018 23:42:35 +0100 Subject: [PATCH 06/14] BAEL-2412 Add tests with all the primitive values. Remove those that weren't expected to work. --- .../primitives/models/PrimitiveBundle.java | 6 +- .../models/PrimitiveBundleInitialized.java | 21 ++++++ .../baeldung/gson/primitives/UnitTest.java | 73 ++++++++++++------- 3 files changed, 72 insertions(+), 28 deletions(-) create mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java index 30bc4d0d9f..ad7309a2f7 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundle.java @@ -12,8 +12,8 @@ public class PrimitiveBundle { public String toString() { return "{" + "byte: " + byteValue + ", " + "short: " + shortValue + ", " - + "int: " + intValue + ", " + "long: " + longValue + ", " + "float: " - + floatValue + ", " + "double: " + doubleValue + ", " + "boolean: " - + booleanValue + ", " + "char: " + charValue + "}"; + + "int: " + intValue + ", " + "long: " + longValue + ", " + + "float: " + floatValue + ", " + "double: " + doubleValue + ", " + + "boolean: " + booleanValue + ", " + "char: " + charValue + "}"; } } diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java new file mode 100644 index 0000000000..6fa99f4e3d --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java @@ -0,0 +1,21 @@ +package org.baeldung.gson.primitives.models; + +public class PrimitiveBundleInitialized { + // @formatter:off + public byte byteValue = (byte) 1; + public short shortValue = (short) 1; + public int intValue = 1; + public long longValue = 1L; + public float floatValue = 1.0f; + public double doubleValue = 1; + public boolean booleanValue = true; + public char charValue = 'a'; + // @formatter:on + + public String toString() { + return "{" + "byte: " + byteValue + ", " + "short: " + shortValue + ", " + + "int: " + intValue + ", " + "long: " + longValue + ", " + + "float: " + floatValue + ", " + "double: " + doubleValue + ", " + + "boolean: " + booleanValue + ", " + "char: " + charValue + "}"; + } +} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 87d5cbbb60..475eb42fc0 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -25,13 +25,17 @@ public class UnitTest { Gson gson = new Gson(); - String expected = "{\"byteValue\":17,\"shortValue\":3,\"intValue\":3," + "\"longValue\":3,\"floatValue\":3.5" + ",\"doubleValue\":3.5" + ",\"booleanValue\":true,\"charValue\":\"a\"}"; + String expected = "{\"byteValue\":17,\"shortValue\":3,\"intValue\":3," + + "\"longValue\":3,\"floatValue\":3.5" + ",\"doubleValue\":3.5" + + ",\"booleanValue\":true,\"charValue\":\"a\"}"; assertEquals(expected, gson.toJson(primitiveBundle)); } @Test public void fromJsonAllPrimitives() { - String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + ", \"booleanValue\": true, \"charValue\": \"a\"}"; + String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + + ", \"booleanValue\": true, \"charValue\": \"a\"}"; Gson gson = new Gson(); PrimitiveBundle model = gson.fromJson(json, PrimitiveBundle.class); @@ -50,7 +54,8 @@ public class UnitTest { @Test public void toJsonByteToBitString() { GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(ByteExample.class, new GsonBitStringSerializer()); + builder.registerTypeAdapter(ByteExample.class, + new GsonBitStringSerializer()); Gson gson = builder.create(); ByteExample model = new ByteExample(); @@ -62,7 +67,8 @@ public class UnitTest { @Test public void fromJsonByteFromBitString() { String json = "{\"value\": \"1111\"}"; GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(ByteExample.class, new GsonBitStringDeserializer()); + gsonBuilder.registerTypeAdapter(ByteExample.class, + new GsonBitStringDeserializer()); Gson gson = gsonBuilder.create(); @@ -110,36 +116,52 @@ public class UnitTest { @Test public void fromJsonNull() { Gson gson = new Gson(); - String json = "{\"value\": null}"; - ByteExample model = gson.fromJson(json, ByteExample.class); + // @formatter:off + String json = "{\"byteValue\": null, \"shortValue\": null, " + + "\"intValue\": null, " + "\"longValue\": null, \"floatValue\": null" + + ", \"doubleValue\": null" + ", \"booleanValue\": null, \"charValue\": null}"; + // @formatter:on + PrimitiveBundleInitialized model = gson.fromJson(json, + PrimitiveBundleInitialized.class); - assertEquals(1, model.value); + assertEquals(1, model.byteValue); + assertEquals(1, model.shortValue); + assertEquals(1, model.intValue); + assertEquals(1, model.longValue); + assertEquals(1, model.floatValue, 0.0001); + assertEquals(1, model.doubleValue, 0.0001); + assertTrue(model.booleanValue); + assertEquals('a', model.charValue); } @Test(expected = JsonSyntaxException.class) public void fromJsonEmptyString() { Gson gson = new Gson(); - String json = "{\"value\": \"\"}"; - gson.fromJson(json, ByteExample.class); + // @formatter:off + String json = "{\"byteValue\": \"\", \"shortValue\": \"\", " + + "\"intValue\": \"\", " + "\"longValue\": \"\", \"floatValue\": \"\"" + + ", \"doubleValue\": \"\"" + ", \"booleanValue\": \"\", \"charValue\": \"\"}"; + // @formatter:on + gson.fromJson(json, PrimitiveBundleInitialized.class); } @Test public void fromJsonValidValueWithinString() { Gson gson = new Gson(); - String json = "{\"value\": \"15\"}"; - ByteExample model = gson.fromJson(json, ByteExample.class); + // @formatter:off + String json = "{\"byteValue\": \"15\", \"shortValue\": \"15\", " + + "\"intValue\": \"15\", " + "\"longValue\": \"15\", \"floatValue\": \"15.0\"" + + ", \"doubleValue\": \"15.0\"" + ", \"booleanValue\": \"false\", \"charValue\": \"z\"}"; + // @formatter:on + PrimitiveBundleInitialized model = gson.fromJson(json, + PrimitiveBundleInitialized.class); - assertEquals(15, model.value); - } - - @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueWithinString() { - Gson gson = new Gson(); - String json = "{\"value\": \"15x\"}"; - gson.fromJson(json, ByteExample.class); - } - - @Test(expected = JsonSyntaxException.class) public void fromJsonInvalidValueNotInAString() { - Gson gson = new Gson(); - String json = "{\"value\": s15s}"; - gson.fromJson(json, ByteExample.class); + assertEquals(15, model.byteValue); + assertEquals(15, model.shortValue); + assertEquals(15, model.intValue); + assertEquals(15, model.longValue); + assertEquals(15, model.floatValue, 0.0001); + assertEquals(15, model.doubleValue, 0.0001); + assertFalse(model.booleanValue); + assertEquals('z', model.charValue); } @Test public void fromJsonBooleanFrom2ValueInteger() { @@ -160,7 +182,8 @@ public class UnitTest { @Test public void fromJsonBooleanFrom2ValueIntegerSolution() { String json = "{\"value\": 1}"; GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(BooleanExample.class, new BooleanAs2ValueIntegerDeserializer()); + builder.registerTypeAdapter(BooleanExample.class, + new BooleanAs2ValueIntegerDeserializer()); Gson gson = builder.create(); From bc1a22babc5496e9ca115af4eda30908f3424431 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Dec 2018 05:46:16 +0100 Subject: [PATCH 07/14] BAEL-2412 Remove custom serializer and deserializer for converting byte into a string of bits. --- .../baeldung/gson/primitives/UnitTest.java | 53 ------------------- 1 file changed, 53 deletions(-) diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 475eb42fc0..2189e990ba 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -52,31 +52,6 @@ public class UnitTest { // @formatter:on } - @Test public void toJsonByteToBitString() { - GsonBuilder builder = new GsonBuilder(); - builder.registerTypeAdapter(ByteExample.class, - new GsonBitStringSerializer()); - - Gson gson = builder.create(); - ByteExample model = new ByteExample(); - model.value = (byte) 0b1111; - - assertEquals("{\"value\":\"1111\"}", gson.toJson(model)); - } - - @Test public void fromJsonByteFromBitString() { - String json = "{\"value\": \"1111\"}"; - GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(ByteExample.class, - new GsonBitStringDeserializer()); - - Gson gson = gsonBuilder.create(); - - ByteExample model = gson.fromJson(json, ByteExample.class); - - assertEquals(15, model.value); - } - @Test public void fromJsonPrecissionMismatch() { String json = "{\"value\": 12.123456789123456}"; Gson gson = new Gson(); @@ -212,34 +187,6 @@ public class UnitTest { } // @formatter:off - static class GsonBitStringDeserializer implements JsonDeserializer { - @Override public ByteExample deserialize( - JsonElement jsonElement, - Type type, - JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { - - ByteExample byteExample = new ByteExample(); - byteExample.value = (byte) Integer.parseInt( - jsonElement.getAsJsonObject() - .getAsJsonPrimitive("value") - .getAsString() - , 2); - return byteExample; - } - } - - static class GsonBitStringSerializer implements JsonSerializer { - @Override public JsonElement serialize( - ByteExample model, - Type type, - JsonSerializationContext jsonSerializationContext) { - - JsonObject jsonObject = new JsonObject(); - jsonObject.addProperty("value", Integer.toBinaryString(model.value)); - return jsonObject; - } - } - static class BooleanAs2ValueIntegerDeserializer implements JsonDeserializer { @Override public BooleanExample deserialize( JsonElement jsonElement, From 24bd4644ff64f5c00bc6ef1b6db2773ec3ff9bf8 Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Dec 2018 06:00:53 +0100 Subject: [PATCH 08/14] BAEL-2412 Add example of deserialization of a double whose precission is too high. --- .../gson/primitives/models/DoubleExample.java | 9 +++++++++ .../java/org/baeldung/gson/primitives/UnitTest.java | 12 ++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/DoubleExample.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/DoubleExample.java b/gson/src/main/java/org/baeldung/gson/primitives/models/DoubleExample.java new file mode 100644 index 0000000000..5022b6a11e --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/DoubleExample.java @@ -0,0 +1,9 @@ +package org.baeldung.gson.primitives.models; + +public class DoubleExample { + public double value; + + public String toString() { + return "{float: " + value + "}"; + } +} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 2189e990ba..4ee1e67c8e 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -53,12 +53,20 @@ public class UnitTest { } @Test public void fromJsonPrecissionMismatch() { - String json = "{\"value\": 12.123456789123456}"; + String json = "{\"value\": 12.123425589123456}"; Gson gson = new Gson(); FloatExample model = gson.fromJson(json, FloatExample.class); - assertEquals(12.123457f, model.value, 0.000001); + assertEquals(12.123426f, model.value, 0.000001); } + @Test public void fromJsonPrecissionMismatchForDouble() { + String json = "{\"value\": 12.123425589123556}"; + Gson gson = new Gson(); + DoubleExample model = gson.fromJson(json, DoubleExample.class); + assertEquals(12.123425589124f, model.value, 0.000001); + } + + @Test public void fromJsonOverflow() { Gson gson = new Gson(); String json = "{\"value\": \"300\"}"; From 089162e91c9b820cad6bbd87a8eb1601a19d785e Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Dec 2018 06:12:12 +0100 Subject: [PATCH 09/14] BAEL-2412 Add new code examples when deserializing real numbers to discrete number types. --- .../gson/primitives/models/LongExample.java | 9 ++++++++ .../baeldung/gson/primitives/UnitTest.java | 23 ++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/LongExample.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/LongExample.java b/gson/src/main/java/org/baeldung/gson/primitives/models/LongExample.java new file mode 100644 index 0000000000..e709650789 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/LongExample.java @@ -0,0 +1,9 @@ +package org.baeldung.gson.primitives.models; + +public class LongExample { + public long value = 1; + + public String toString() { + return "{byte: " + value + "}"; + } +} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 4ee1e67c8e..335b844214 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -75,7 +75,7 @@ public class UnitTest { assertEquals(44, model.value); } - @Test public void fromJsonNonCompatibleNumberTypes() { + @Test public void fromJsonRealToByte() { Gson gson = new Gson(); String json = "{\"value\": 2.3}"; try { @@ -89,6 +89,27 @@ public class UnitTest { fail(); } + @Test public void fromJsonRealToLong() { + Gson gson = new Gson(); + String json = "{\"value\": 2.3}"; + try { + gson.fromJson(json, LongExample.class); + } catch (Exception ex) { + assertTrue(ex instanceof JsonSyntaxException); + assertTrue(ex.getCause() instanceof NumberFormatException); + return; + } + + fail(); + } + + @Test public void fromJsonRealToLongEndingIn0() { + Gson gson = new Gson(); + String json = "{\"value\": 2.0}"; + LongExample model = gson.fromJson(json, LongExample.class); + assertEquals(2, model.value); + } + @Test public void fromJsonUnicodeChar() { Gson gson = new Gson(); String json = "{\"value\": \"\\u00AE\"}"; From f69d154862bed3ebd5a47e1873b4f03a94bfddfb Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Dec 2018 06:27:36 +0100 Subject: [PATCH 10/14] BAEL-2412 New example showing that the empty string can be deserialized into a char. --- .../java/org/baeldung/gson/primitives/UnitTest.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 335b844214..8581f07a65 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -143,11 +143,21 @@ public class UnitTest { // @formatter:off String json = "{\"byteValue\": \"\", \"shortValue\": \"\", " + "\"intValue\": \"\", " + "\"longValue\": \"\", \"floatValue\": \"\"" - + ", \"doubleValue\": \"\"" + ", \"booleanValue\": \"\", \"charValue\": \"\"}"; + + ", \"doubleValue\": \"\"" + ", \"booleanValue\": \"\"}"; // @formatter:on gson.fromJson(json, PrimitiveBundleInitialized.class); } + @Test public void fromJsonEmptyStringToChar() { + Gson gson = new Gson(); + // @formatter:off + String json = "{\"charValue\": \"\"}"; + // @formatter:on + CharExample model = gson.fromJson(json, CharExample.class); + + assertEquals(Character.MIN_VALUE, model.value); + } + @Test public void fromJsonValidValueWithinString() { Gson gson = new Gson(); // @formatter:off From 366cb9a0bc8cc91d23f24e25e19d09d8e071805a Mon Sep 17 00:00:00 2001 From: Javier Date: Wed, 12 Dec 2018 06:41:39 +0100 Subject: [PATCH 11/14] BAEL-2412 Add limit values when dealing with floats (min, max, NaN). --- .../primitives/models/LimitValuesExample.java | 6 ++++++ .../baeldung/gson/primitives/UnitTest.java | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java b/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java new file mode 100644 index 0000000000..4960a98834 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java @@ -0,0 +1,6 @@ +package org.baeldung.gson.primitives.models; + +public class LimitValuesExample { + public float minValue; + public float maxValue; +} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 8581f07a65..95314d4d43 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -32,6 +32,25 @@ public class UnitTest { assertEquals(expected, gson.toJson(primitiveBundle)); } + @Test public void toJsonLimitValues() { + LimitValuesExample model = new LimitValuesExample(); + model.minValue = Float.MIN_VALUE; + model.maxValue = Float.MAX_VALUE; + + Gson gson = new Gson(); + + String expected = "{\"minValue\":1.4E-45,\"maxValue\":3.4028235E38}"; + assertEquals(expected, gson.toJson(model)); + } + + @Test(expected = IllegalArgumentException.class) public void toJsonNaN() { + FloatExample model = new FloatExample(); + model.value = Float.NaN; + + Gson gson = new Gson(); + gson.toJson(model); + } + @Test public void fromJsonAllPrimitives() { String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" From 78096d4712cc03256324557606137b0528ad854b Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 14 Dec 2018 20:21:50 +0100 Subject: [PATCH 12/14] BAEL-2412 Change test for min and max values by negative and positive infinity. --- .../gson/primitives/models/InfinityValuesExample.java | 6 ++++++ .../gson/primitives/models/LimitValuesExample.java | 6 ------ .../java/org/baeldung/gson/primitives/UnitTest.java | 11 +++++------ 3 files changed, 11 insertions(+), 12 deletions(-) create mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/InfinityValuesExample.java delete mode 100644 gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/InfinityValuesExample.java b/gson/src/main/java/org/baeldung/gson/primitives/models/InfinityValuesExample.java new file mode 100644 index 0000000000..163b0a3d95 --- /dev/null +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/InfinityValuesExample.java @@ -0,0 +1,6 @@ +package org.baeldung.gson.primitives.models; + +public class InfinityValuesExample { + public float negativeInfinity; + public float positiveInfinity; +} diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java b/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java deleted file mode 100644 index 4960a98834..0000000000 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/LimitValuesExample.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.baeldung.gson.primitives.models; - -public class LimitValuesExample { - public float minValue; - public float maxValue; -} diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index 95314d4d43..d77476517d 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -32,15 +32,14 @@ public class UnitTest { assertEquals(expected, gson.toJson(primitiveBundle)); } - @Test public void toJsonLimitValues() { - LimitValuesExample model = new LimitValuesExample(); - model.minValue = Float.MIN_VALUE; - model.maxValue = Float.MAX_VALUE; + @Test(expected = IllegalArgumentException.class) public void toJsonInfinity() { + InfinityValuesExample model = new InfinityValuesExample(); + model.negativeInfinity = Float.NEGATIVE_INFINITY; + model.positiveInfinity = Float.POSITIVE_INFINITY; Gson gson = new Gson(); - String expected = "{\"minValue\":1.4E-45,\"maxValue\":3.4028235E38}"; - assertEquals(expected, gson.toJson(model)); + gson.toJson(model); } @Test(expected = IllegalArgumentException.class) public void toJsonNaN() { From bdc8b066a5f6d4ab53a4c5a1665cf9ffe8d2d026 Mon Sep 17 00:00:00 2001 From: Javier Date: Fri, 14 Dec 2018 20:29:48 +0100 Subject: [PATCH 13/14] BAEL-2412 Remove boolean and char fields from some of the examples. --- .../primitives/models/PrimitiveBundleInitialized.java | 5 +---- .../test/java/org/baeldung/gson/primitives/UnitTest.java | 8 ++------ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java index 6fa99f4e3d..2780f7fd18 100644 --- a/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java +++ b/gson/src/main/java/org/baeldung/gson/primitives/models/PrimitiveBundleInitialized.java @@ -8,14 +8,11 @@ public class PrimitiveBundleInitialized { public long longValue = 1L; public float floatValue = 1.0f; public double doubleValue = 1; - public boolean booleanValue = true; - public char charValue = 'a'; // @formatter:on public String toString() { return "{" + "byte: " + byteValue + ", " + "short: " + shortValue + ", " + "int: " + intValue + ", " + "long: " + longValue + ", " - + "float: " + floatValue + ", " + "double: " + doubleValue + ", " - + "boolean: " + booleanValue + ", " + "char: " + charValue + "}"; + + "float: " + floatValue + ", " + "double: " + doubleValue + "}"; } } diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java index d77476517d..f952ae5b92 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java @@ -141,7 +141,7 @@ public class UnitTest { // @formatter:off String json = "{\"byteValue\": null, \"shortValue\": null, " + "\"intValue\": null, " + "\"longValue\": null, \"floatValue\": null" - + ", \"doubleValue\": null" + ", \"booleanValue\": null, \"charValue\": null}"; + + ", \"doubleValue\": null}"; // @formatter:on PrimitiveBundleInitialized model = gson.fromJson(json, PrimitiveBundleInitialized.class); @@ -152,8 +152,6 @@ public class UnitTest { assertEquals(1, model.longValue); assertEquals(1, model.floatValue, 0.0001); assertEquals(1, model.doubleValue, 0.0001); - assertTrue(model.booleanValue); - assertEquals('a', model.charValue); } @Test(expected = JsonSyntaxException.class) public void fromJsonEmptyString() { @@ -181,7 +179,7 @@ public class UnitTest { // @formatter:off String json = "{\"byteValue\": \"15\", \"shortValue\": \"15\", " + "\"intValue\": \"15\", " + "\"longValue\": \"15\", \"floatValue\": \"15.0\"" - + ", \"doubleValue\": \"15.0\"" + ", \"booleanValue\": \"false\", \"charValue\": \"z\"}"; + + ", \"doubleValue\": \"15.0\"}"; // @formatter:on PrimitiveBundleInitialized model = gson.fromJson(json, PrimitiveBundleInitialized.class); @@ -192,8 +190,6 @@ public class UnitTest { assertEquals(15, model.longValue); assertEquals(15, model.floatValue, 0.0001); assertEquals(15, model.doubleValue, 0.0001); - assertFalse(model.booleanValue); - assertEquals('z', model.charValue); } @Test public void fromJsonBooleanFrom2ValueInteger() { From 4ea86703d402933e097a5bfa8d26788c497cdddc Mon Sep 17 00:00:00 2001 From: Javier Date: Tue, 18 Dec 2018 05:27:49 +0100 Subject: [PATCH 14/14] BAEL-2412 Change method names to a BDD-style. --- ...Test.java => PrimitiveValuesUnitTest.java} | 58 +++++++------------ 1 file changed, 21 insertions(+), 37 deletions(-) rename gson/src/test/java/org/baeldung/gson/primitives/{UnitTest.java => PrimitiveValuesUnitTest.java} (83%) diff --git a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java b/gson/src/test/java/org/baeldung/gson/primitives/PrimitiveValuesUnitTest.java similarity index 83% rename from gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java rename to gson/src/test/java/org/baeldung/gson/primitives/PrimitiveValuesUnitTest.java index f952ae5b92..7d249bc55c 100644 --- a/gson/src/test/java/org/baeldung/gson/primitives/UnitTest.java +++ b/gson/src/test/java/org/baeldung/gson/primitives/PrimitiveValuesUnitTest.java @@ -8,8 +8,8 @@ import java.lang.reflect.Type; import static junit.framework.TestCase.*; -public class UnitTest { - @Test public void toJsonAllPrimitives() { +public class PrimitiveValuesUnitTest { + @Test public void whenSerializingToJSON_thenShouldCreateJSON() { PrimitiveBundle primitiveBundle = new PrimitiveBundle(); // @formatter:off @@ -32,7 +32,8 @@ public class UnitTest { assertEquals(expected, gson.toJson(primitiveBundle)); } - @Test(expected = IllegalArgumentException.class) public void toJsonInfinity() { + @Test(expected = IllegalArgumentException.class) public void + whenSerializingInfinity_thenShouldRaiseAnException() { InfinityValuesExample model = new InfinityValuesExample(); model.negativeInfinity = Float.NEGATIVE_INFINITY; model.positiveInfinity = Float.POSITIVE_INFINITY; @@ -42,7 +43,8 @@ public class UnitTest { gson.toJson(model); } - @Test(expected = IllegalArgumentException.class) public void toJsonNaN() { + @Test(expected = IllegalArgumentException.class) public void + whenSerializingNaN_thenShouldRaiseAnException() { FloatExample model = new FloatExample(); model.value = Float.NaN; @@ -50,7 +52,7 @@ public class UnitTest { gson.toJson(model); } - @Test public void fromJsonAllPrimitives() { + @Test public void whenDeserializingFromJSON_thenShouldParseTheValueInTheString() { String json = "{\"byteValue\": 17, \"shortValue\": 3, \"intValue\": 3, " + "\"longValue\": 3, \"floatValue\": 3.5" + ", \"doubleValue\": 3.5" + ", \"booleanValue\": true, \"charValue\": \"a\"}"; @@ -70,14 +72,14 @@ public class UnitTest { // @formatter:on } - @Test public void fromJsonPrecissionMismatch() { + @Test public void whenDeserializingHighPrecissionNumberIntoFloat_thenShouldPerformRounding() { String json = "{\"value\": 12.123425589123456}"; Gson gson = new Gson(); FloatExample model = gson.fromJson(json, FloatExample.class); assertEquals(12.123426f, model.value, 0.000001); } - @Test public void fromJsonPrecissionMismatchForDouble() { + @Test public void whenDeserializingHighPrecissiongNumberIntoDouble_thenShouldPerformRounding() { String json = "{\"value\": 12.123425589123556}"; Gson gson = new Gson(); DoubleExample model = gson.fromJson(json, DoubleExample.class); @@ -85,7 +87,7 @@ public class UnitTest { } - @Test public void fromJsonOverflow() { + @Test public void whenDeserializingValueThatOverflows_thenShouldOverflowSilently() { Gson gson = new Gson(); String json = "{\"value\": \"300\"}"; ByteExample model = gson.fromJson(json, ByteExample.class); @@ -93,7 +95,7 @@ public class UnitTest { assertEquals(44, model.value); } - @Test public void fromJsonRealToByte() { + @Test public void whenDeserializingRealIntoByte_thenShouldRaiseAnException() { Gson gson = new Gson(); String json = "{\"value\": 2.3}"; try { @@ -107,7 +109,7 @@ public class UnitTest { fail(); } - @Test public void fromJsonRealToLong() { + @Test public void whenDeserializingRealIntoLong_thenShouldRaiseAnException() { Gson gson = new Gson(); String json = "{\"value\": 2.3}"; try { @@ -121,14 +123,14 @@ public class UnitTest { fail(); } - @Test public void fromJsonRealToLongEndingIn0() { + @Test public void whenDeserializingRealWhoseDecimalPartIs0_thenShouldParseItCorrectly() { Gson gson = new Gson(); String json = "{\"value\": 2.0}"; LongExample model = gson.fromJson(json, LongExample.class); assertEquals(2, model.value); } - @Test public void fromJsonUnicodeChar() { + @Test public void whenDeserializingUnicodeChar_thenShouldParseItCorrectly() { Gson gson = new Gson(); String json = "{\"value\": \"\\u00AE\"}"; CharExample model = gson.fromJson(json, CharExample.class); @@ -136,7 +138,7 @@ public class UnitTest { assertEquals('\u00AE', model.value); } - @Test public void fromJsonNull() { + @Test public void whenDeserializingNullValues_thenShouldIgnoreThoseFields() { Gson gson = new Gson(); // @formatter:off String json = "{\"byteValue\": null, \"shortValue\": null, " @@ -154,7 +156,8 @@ public class UnitTest { assertEquals(1, model.doubleValue, 0.0001); } - @Test(expected = JsonSyntaxException.class) public void fromJsonEmptyString() { + @Test(expected = JsonSyntaxException.class) public void + whenDeserializingTheEmptyString_thenShouldRaiseAnException() { Gson gson = new Gson(); // @formatter:off String json = "{\"byteValue\": \"\", \"shortValue\": \"\", " @@ -164,7 +167,7 @@ public class UnitTest { gson.fromJson(json, PrimitiveBundleInitialized.class); } - @Test public void fromJsonEmptyStringToChar() { + @Test public void whenDeserializingTheEmptyStringIntoChar_thenShouldHaveTheEmtpyChar() { Gson gson = new Gson(); // @formatter:off String json = "{\"charValue\": \"\"}"; @@ -174,7 +177,7 @@ public class UnitTest { assertEquals(Character.MIN_VALUE, model.value); } - @Test public void fromJsonValidValueWithinString() { + @Test public void whenDeserializingValidValueAppearingInAString_thenShouldParseTheValue() { Gson gson = new Gson(); // @formatter:off String json = "{\"byteValue\": \"15\", \"shortValue\": \"15\", " @@ -192,7 +195,7 @@ public class UnitTest { assertEquals(15, model.doubleValue, 0.0001); } - @Test public void fromJsonBooleanFrom2ValueInteger() { + @Test public void whenDeserializingABooleanFrom0Or1Integer_thenShouldRaiseAnException() { String json = "{\"value\": 1}"; Gson gson = new Gson(); @@ -207,7 +210,7 @@ public class UnitTest { fail(); } - @Test public void fromJsonBooleanFrom2ValueIntegerSolution() { + @Test public void whenDeserializingWithCustomDeserializerABooleanFrom0Or1Integer_thenShouldWork() { String json = "{\"value\": 1}"; GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(BooleanExample.class, @@ -220,25 +223,6 @@ public class UnitTest { assertTrue(model.value); } - @Test public void fromJsonBooleanFromYes() { - String json = "{\"value\": yes}"; - Gson gson = new Gson(); - - BooleanExample model = gson.fromJson(json, BooleanExample.class); - - // pay attention here that we are deserializing yes. - assertFalse(model.value); - } - - @Test public void fromJsonBooleanFromInvalidValue() { - String json = "{\"value\": \"15x\"}"; - Gson gson = new Gson(); - - BooleanExample model = gson.fromJson(json, BooleanExample.class); - - assertFalse(model.value); - } - // @formatter:off static class BooleanAs2ValueIntegerDeserializer implements JsonDeserializer { @Override public BooleanExample deserialize(