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;