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/06 22:42:57 UTC

[3/6] incubator-johnzon git commit: JOHNZON-71 move collection logic to MappingParser

JOHNZON-71 move collection logic to MappingParser


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

Branch: refs/heads/master
Commit: 65e84ca0b5e02d816709aa547bc48cd1c5827dac
Parents: d7f4a86
Author: Reinhard Sandtner <rs...@apache.org>
Authored: Wed Apr 6 00:11:55 2016 +0200
Committer: Reinhard Sandtner <rs...@apache.org>
Committed: Wed Apr 6 00:11:55 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/johnzon/mapper/Mapper.java  | 30 ++------------------
 .../johnzon/mapper/MappingParserImpl.java       | 18 ++++++++++--
 2 files changed, 18 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/65e84ca0/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
index 917aee5..df0aa37 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/Mapper.java
@@ -304,20 +304,7 @@ public class Mapper implements Closeable {
     }
 
     public <T> Collection<T> readCollection(final InputStream stream, final ParameterizedType genericType) {
-        final JsonReader reader = readerFactory.createReader(stream(stream));
-        final Mappings.CollectionMapping mapping = mappings.findCollectionMapping(genericType);
-        if (mapping == null) {
-            throw new UnsupportedOperationException("type " + genericType + " not supported");
-        }
-        try {
-            return mapCollection(mapping, reader.readArray(), null);
-        } catch (final Exception e) {
-            throw new MapperException(e);
-        } finally {
-            if (config.isClose()) {
-                reader.close();
-            }
-        }
+        return mapObject(genericType, readerFactory.createReader(stream(stream)));
     }
 
     public <T> T readJohnzonCollection(final InputStream stream, final JohnzonCollectionType<T> genericType) {
@@ -329,20 +316,7 @@ public class Mapper implements Closeable {
     }
 
     public <T> Collection<T> readCollection(final Reader stream, final ParameterizedType genericType) {
-        final JsonReader reader = readerFactory.createReader(stream(stream));
-        final Mappings.CollectionMapping mapping = mappings.findCollectionMapping(genericType);
-        if (mapping == null) {
-            throw new UnsupportedOperationException("type " + genericType + " not supported");
-        }
-        try {
-            return mapCollection(mapping, reader.readArray(), null);
-        } catch (final Exception e) {
-            throw new MapperException(e);
-        } finally {
-            if (config.isClose()) {
-                reader.close();
-            }
-        }
+        return mapObject(genericType, readerFactory.createReader(stream(stream)));
     }
 
     public <T> T[] readArray(final Reader stream, final Class<T> clazz) {

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/65e84ca0/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
----------------------------------------------------------------------
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
index 140d203..b0239d6 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingParserImpl.java
@@ -133,9 +133,23 @@ public class MappingParserImpl implements MappingParser {
                 return (T) number.bigIntegerValue();
             }
         }
-        if (JsonArray.class.isInstance(jsonValue) && Class.class.isInstance(targetType) && ((Class) targetType).isArray()) {
-            return (T) buildArrayWithComponentType((JsonArray) jsonValue, ((Class) targetType).getComponentType(), null);
+        if (JsonArray.class.isInstance(jsonValue)) {
 
+            JsonArray jsonArray = (JsonArray) jsonValue;
+
+            if (Class.class.isInstance(targetType) && ((Class) targetType).isArray()) {
+                return (T) buildArrayWithComponentType(jsonArray, ((Class) targetType).getComponentType(), null);
+            }
+            if (ParameterizedType.class.isInstance(targetType)) {
+
+                final Mappings.CollectionMapping mapping = mappings.findCollectionMapping((ParameterizedType) targetType);
+                if (mapping == null) {
+                    throw new UnsupportedOperationException("type " + targetType + " not supported");
+                }
+
+                return (T) mapCollection(mapping, jsonArray, null);
+
+            }
         }
         if (JsonValue.NULL == jsonValue) {
             return null;