You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rs...@apache.org on 2016/04/18 10:18:14 UTC

[6/7] incubator-johnzon git commit: JOHNZON-72 added test for ObjectConverter

JOHNZON-72 added test for ObjectConverter


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

Branch: refs/heads/master
Commit: e059b727a193aa49b5a79f98b0b093c1f9f0ccfc
Parents: ef274a4
Author: Reinhard Sandtner <rs...@apache.org>
Authored: Fri Apr 15 14:35:20 2016 +0200
Committer: Reinhard Sandtner <rs...@apache.org>
Committed: Fri Apr 15 14:41:26 2016 +0200

----------------------------------------------------------------------
 .../apache/johnzon/mapper/ObjectTypeTest.java   | 80 ++++++++++++++++++++
 1 file changed, 80 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/e059b727/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/ObjectTypeTest.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/ObjectTypeTest.java b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/ObjectTypeTest.java
index 9f4c314..52ea112 100644
--- a/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/ObjectTypeTest.java
+++ b/johnzon-mapper/src/test/java/org/apache/johnzon/mapper/ObjectTypeTest.java
@@ -21,7 +21,11 @@ package org.apache.johnzon.mapper;
 
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 
 import javax.json.JsonObject;
@@ -72,6 +76,51 @@ public class ObjectTypeTest {
         Assert.assertEquals(getJavaObject(), dog);
     }
 
+    @Test
+    public void testWriteWithAdvancedObjectConverter() {
+
+        String expectedJson = "[{\"poodleName\":\"Poodle1\"},{\"poodleName\":\"Poodle2\"}]";
+
+        Mapper mapper = new MapperBuilder().setAccessModeName(accessMode)
+                                           .addObjectConverter(Poodle.class, new DBAccessPoodleConverter())
+                                           .build();
+
+        String json = mapper.writeObjectAsString(new ArrayList<Poodle>(DBAccessPoodleConverter.POODLES.values()));
+        Assert.assertNotNull(json);
+        Assert.assertEquals(expectedJson, json);
+    }
+
+    @Test
+    public void testReadWithAdvancedObjectConverter() {
+
+        Mapper mapper = new MapperBuilder().setAccessModeName(accessMode)
+                                           .addObjectConverter(Poodle.class, new DBAccessPoodleConverter())
+                                           .build();
+
+        List<Poodle> poodles = mapper.readObject("[{\"poodleName\":\"Poodle1\"},{\"poodleName\":\"Poodle2\"}]", new ParameterizedType() {
+            @Override
+            public Type[] getActualTypeArguments() {
+                return new Type[]{Poodle.class};
+            }
+
+            @Override
+            public Type getRawType() {
+                return List.class;
+            }
+
+            @Override
+            public Type getOwnerType() {
+                return null;
+            }
+        });
+
+        Assert.assertNotNull(poodles);
+        Assert.assertEquals(2, poodles.size());
+        for (Poodle poodle : poodles) {
+            Assert.assertEquals(DBAccessPoodleConverter.POODLES.get(poodle.getName()), poodle);
+        }
+    }
+
 
     private Mutt getJavaObject() {
         Poodle mum = new Poodle();
@@ -236,4 +285,35 @@ public class ObjectTypeTest {
 
     public static class Mutt extends Dog {
     }
+
+
+    public static class DBAccessPoodleConverter implements ObjectConverter<Poodle> {
+
+        public static final String POODLE_1_NAME = "Poodle1";
+        public static final String POODLE_2_NAME = "Poodle2";
+
+        public static final Map<String, Poodle> POODLES = new LinkedHashMap<String, Poodle>(2);
+        static {
+            Poodle poodle1 = new Poodle();
+            poodle1.setHairCut(true);
+            poodle1.setName(POODLE_1_NAME);
+
+            Poodle poodle2 = new Poodle();
+            poodle2.setHairCut(false);
+            poodle2.setName(POODLE_2_NAME);
+
+            POODLES.put(poodle1.getName(), poodle1);
+            POODLES.put(poodle2.getName(), poodle2);
+        }
+
+        @Override
+        public void writeJson(Poodle instance, MappingGenerator jsonbGenerator) {
+            jsonbGenerator.getJsonGenerator().write("poodleName", instance.getName());
+        }
+
+        @Override
+        public Poodle fromJson(JsonObject jsonObject, Type targetType, MappingParser parser) {
+            return POODLES.get(jsonObject.getString("poodleName"));
+        }
+    }
 }
\ No newline at end of file