Repository: johnzon
Updated Branches:
  refs/heads/master 4e8b6524a -> 2845dd882


JOHNZON-169 add unit test for @JsonbTypeDeserializer on list


Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/29af5fb2
Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/29af5fb2
Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/29af5fb2

Branch: refs/heads/master
Commit: 29af5fb25f3bb2be6685b009df751e86152f62a1
Parents: 4e8b652
Author: Mark Struberg <[email protected]>
Authored: Wed Aug 29 15:24:03 2018 +0200
Committer: Mark Struberg <[email protected]>
Committed: Wed Aug 29 15:24:03 2018 +0200

----------------------------------------------------------------------
 .../apache/johnzon/jsonb/SerializerTest.java    | 66 +++++++++++++++++++-
 1 file changed, 65 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/johnzon/blob/29af5fb2/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 a6771ef..bf704e9 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
@@ -35,10 +35,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-// TODO: enhance
 public class SerializerTest {
+
     @Test
     public void roundTrip() {
         final Jsonb jsonb = JsonbBuilder.create();
@@ -120,4 +121,67 @@ public class SerializerTest {
             generator.write("name", obj.name);
         }
     }
+
+    /**
+     * see JOHNZON-169
+     */
+    @Test
+    public void testArrayParseWithDeserializer() {
+        String json = "{\"student\":[{\"val\":\"max,24\"}]}";
+        Jsonb jsonb = JsonbBuilder.create();
+
+        StudentHolder studentHolder = jsonb.fromJson(json, 
StudentHolder.class);
+        assertNotNull(studentHolder);
+        assertNotNull(studentHolder.getStudent());
+        assertEquals(1, studentHolder.getStudent().size());
+        assertEquals("max", studentHolder.getStudent().get(0).getName());
+        assertEquals(24, studentHolder.getStudent().get(0).getAge());
+    }
+
+    public static class Student {
+        private String name;
+        private int age;
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getAge() {
+            return age;
+        }
+
+        public void setAge(int age) {
+            this.age = age;
+        }
+    }
+
+    public static class StudentDeserializer implements 
JsonbDeserializer<Student> {
+        @Override
+        public Student deserialize(JsonParser parser, DeserializationContext 
ctx, Type rtType) {
+            String val = parser.getObject().getString("val");
+            String[] parts = val.split(",");
+            Student s = new Student();
+            s.setName(parts[0]);
+            s.setAge(Integer.parseInt(parts[1]));
+
+            return s;
+        }
+    }
+
+    public static class StudentHolder {
+        @JsonbTypeDeserializer(StudentDeserializer.class)
+        private List<Student> student;
+
+        public List<Student> getStudent() {
+            return student;
+        }
+
+        public void setStudent(List<Student> student) {
+            this.student = student;
+        }
+    }
 }

Reply via email to