You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by st...@apache.org on 2016/04/03 19:01:25 UTC

[06/10] incubator-johnzon git commit: JOHNZON-71 add ObjectConverter to MapperBuilder

JOHNZON-71 add ObjectConverter to MapperBuilder

together with rsandtner


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

Branch: refs/heads/master
Commit: 7fe6921af80e3557c394c2c75e0a949e3074c84d
Parents: 62476e4
Author: Mark Struberg <st...@apache.org>
Authored: Mon Mar 28 20:31:28 2016 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Mon Mar 28 20:31:28 2016 +0200

----------------------------------------------------------------------
 .../org/apache/johnzon/mapper/MapperBuilder.java    | 10 ++++++++--
 .../org/apache/johnzon/mapper/MapperConfig.java     | 16 ++++++++++++++++
 .../org/apache/johnzon/mapper/ObjectTypeTest.java   |  4 ++--
 3 files changed, 26 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/7fe6921a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
index eb23074..c5073ac 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperBuilder.java
@@ -157,11 +157,11 @@ public class MapperBuilder {
         }
 
         // new config so builderConfig can get tweaked again.
-        MapperConfig config = builderConfig.clone();
+        MapperConfig mapperConfig = builderConfig.clone();
 
         return new Mapper(
             readerFactory, generatorFactory,
-            config,
+            mapperConfig,
             adapters,
             version,
             attributeOrder,
@@ -322,4 +322,10 @@ public class MapperBuilder {
         builderConfig.setReadAttributeBeforeWrite(readAttributeBeforeWrite);
         return this;
     }
+
+    public <T> MapperBuilder addObjectConverter(Class<T> targetType, ObjectConverter<T> objectConverter) {
+        builderConfig.addObjectConverter(targetType, objectConverter);
+        return this;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/7fe6921a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
index 5c51e12..cb39a38 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MapperConfig.java
@@ -19,6 +19,8 @@
 package org.apache.johnzon.mapper;
 
 import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.apache.johnzon.mapper.access.AccessMode;
 
@@ -37,6 +39,10 @@ class MapperConfig implements Cloneable {
     private AccessMode accessMode;
     private Charset encoding = Charset.forName(System.getProperty("johnzon.mapper.encoding", "UTF-8"));
 
+    //X TODO we need a more elaborated approache at the end, but for now it's fine
+    private Map<Class<?>, ObjectConverter<?>> objectConverters = new HashMap<Class<?>, ObjectConverter<?>>();
+
+
     MapperConfig() {
     }
 
@@ -120,6 +126,14 @@ class MapperConfig implements Cloneable {
         this.encoding = encoding;
     }
 
+    <T> void addObjectConverter(Class<T> targetType, ObjectConverter<T> objectConverter) {
+        objectConverters.put(targetType, objectConverter);
+    }
+
+    public Map<Class<?>, ObjectConverter<?>> getObjectConverters() {
+        return objectConverters;
+    }
+
     @Override
     public MapperConfig clone() {
         try {
@@ -128,4 +142,6 @@ class MapperConfig implements Cloneable {
             return null;
         }
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/7fe6921a/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 ccc5b83..b07f533 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
@@ -48,7 +48,7 @@ public class ObjectTypeTest {
     public void testObjectConverterMapper() {
         Mapper mapper = new MapperBuilder()
                 .setAccessModeName(accessMode)
-                //X TODO .addObjectConverter or so
+                .addObjectConverter(Dog.class, new TestWithTypeConverter())
                 .build();
 
         String expectedJsonString = "{\"//javaType\":\"org.apache.johnzon.mapper.ObjectTypeTest$Mutt\"," +
@@ -74,7 +74,7 @@ public class ObjectTypeTest {
 
         String json = mapper.writeObjectAsString(snoopie);
         Assert.assertNotNull(json);
-        //X TODO Assert.assertEquals(expectedJsonString, json);
+        Assert.assertEquals(expectedJsonString, json);
     }