You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2019/04/01 11:54:16 UTC

[johnzon] 02/02: JOHNZON-205: add support for arrays in toStructure fixup

This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git

commit fde35c273bc489a33e4e14447ed4f23d2e30c438
Author: Alexander Falb <el...@apache.org>
AuthorDate: Sun Mar 31 17:02:07 2019 +0200

    JOHNZON-205: add support for arrays in toStructure fixup
---
 .../java/org/apache/johnzon/mapper/Mapper.java     | 25 +++-------------------
 .../johnzon/mapper/MappingGeneratorImpl.java       |  6 ++++++
 2 files changed, 9 insertions(+), 22 deletions(-)

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 cc5cdde..77b22b6 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
@@ -39,7 +39,7 @@ import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
+
 import javax.json.JsonArray;
 import javax.json.JsonBuilderFactory;
 import javax.json.JsonObject;
@@ -146,31 +146,12 @@ public class Mapper implements Closeable {
         if (BigInteger.class.isInstance(object)) {
             return provider.createValue(BigInteger.class.cast(object));
         }
-
         final JsonObjectGenerator objectGenerator = new JsonObjectGenerator(builderFactory);
-        if (object.getClass().isArray()) {
-            writeObject(objectToList(object), objectGenerator, null,
-                    isDeduplicateObjects(object.getClass()) ? new JsonPointerTracker(null, "/") : null);
-        } else {
-            writeObject(object, objectGenerator, null,
-                    isDeduplicateObjects(object.getClass()) ? new JsonPointerTracker(null, "/") : null);
-        }
+        writeObject(object, objectGenerator, null,
+                isDeduplicateObjects(object.getClass()) ? new JsonPointerTracker(null, "/") : null);
         return objectGenerator.getResult();
     }
 
-    private List objectToList(Object object) {
-        if (Object[].class.isInstance(object)) {
-            return asList(Object[].class.cast(object));
-        }
-
-        int size = Array.getLength(object);
-        Object[] out = new Object[size];
-        for (int i = 0; i < size; i++) {
-            out[i] = Array.get(object, i);
-        }
-        return asList(out);
-    }
-
     public void writeObject(final Object object, final Writer stream) {
         if (JsonValue.class.isInstance(object)
                 || Boolean.class.isInstance(object) || String.class.isInstance(object) || Number.class.isInstance(object)
diff --git a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
index bb1d2f3..d35a580 100644
--- a/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
+++ b/johnzon-mapper/src/main/java/org/apache/johnzon/mapper/MappingGeneratorImpl.java
@@ -94,6 +94,12 @@ public class MappingGeneratorImpl implements MappingGenerator {
                 return;
             }
 
+            if (objectClass.isArray()) {
+                final Adapter adapter = config.findAdapter(objectClass);
+                writeArray(objectClass, adapter, null, object, ignoredProperties, jsonPointer);
+                return;
+            }
+
             if (object instanceof Iterable) {
                 doWriteIterable((Iterable) object, ignoredProperties, jsonPointer);
                 return;