Repository: johnzon Updated Branches: refs/heads/master 847a4268f -> 8b5c87d5c
JOHNZON-186 fix NPE in EnumConverter Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/8b5c87d5 Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/8b5c87d5 Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/8b5c87d5 Branch: refs/heads/master Commit: 8b5c87d5caa942c0facfa1b62b8376fca869cf45 Parents: 847a426 Author: Mark Struberg <[email protected]> Authored: Thu Aug 30 11:02:53 2018 +0200 Committer: Mark Struberg <[email protected]> Committed: Thu Aug 30 11:02:53 2018 +0200 ---------------------------------------------------------------------- .../apache/johnzon/jsonb/SerializerTest.java | 27 ++++++++++++++++++++ .../johnzon/mapper/converter/EnumConverter.java | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/8b5c87d5/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java ---------------------------------------------------------------------- diff --git a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java index 1446e92..963a41e 100644 --- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java +++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/SerializerTest.java @@ -89,6 +89,25 @@ public class SerializerTest { assertEquals("{\"elems\":[2,null]}", jsonb.toJson(wrapper)); } + @Test + public void nullValuesInEnumList() { + Jsonb jsonb = JsonbBuilder.create(); + + EnumList wrapper = new EnumList(); + wrapper.elems.add(null); + assertEquals("{\"elems\":[null]}", jsonb.toJson(wrapper)); + + wrapper.elems.add(MyStatus.OK); + assertEquals("{\"elems\":[null,\"OK\"]}", jsonb.toJson(wrapper)); + + wrapper.elems.add(0, MyStatus.WRONG); + assertEquals("{\"elems\":[\"WRONG\",null,\"OK\"]}", jsonb.toJson(wrapper)); + + wrapper.elems.remove(2); + assertEquals("{\"elems\":[\"WRONG\",null]}", jsonb.toJson(wrapper)); + } + + public static class Foo { public String name; public int value; @@ -109,6 +128,14 @@ public class SerializerTest { public List<Integer> elems = new ArrayList<>(); } + public enum MyStatus { + OK, WRONG; + } + + public static class EnumList { + public List<MyStatus> elems = new ArrayList<>(); + } + public static class FooDeser implements JsonbDeserializer<Foo> { @Override public Foo deserialize(final JsonParser parser, final DeserializationContext ctx, final Type rtType) { http://git-wip-us.apache.org/repos/asf/johnzon/blob/8b5c87d5/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/EnumConverter.java ---------------------------------------------------------------------- diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/EnumConverter.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/EnumConverter.java index 0056e46..4588f54 100644 --- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/EnumConverter.java +++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/converter/EnumConverter.java @@ -40,7 +40,7 @@ public class EnumConverter<T extends Enum<T>> implements Converter<T>, Converter @Override // no need of cache here, it is already fast public String toString(final T instance) { - return instance.name(); + return instance != null ? instance.name() : null; } @Override
