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

Reply via email to