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);
}