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