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 <[email protected]> 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;
