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


The following commit(s) were added to refs/heads/master by this push:
     new 15a4cc6  [JOHNZON-331] handle toJson(object,type) properly for list 
case
15a4cc6 is described below

commit 15a4cc69344b3a0dd7ee80326cc064fa0972a779
Author: Romain Manni-Bucau <rmannibu...@gmail.com>
AuthorDate: Sat Jan 23 18:03:10 2021 +0100

    [JOHNZON-331] handle toJson(object,type) properly for list case
---
 .../org/apache/johnzon/jsonb/JohnzonJsonb.java     |  6 +++++-
 .../org/apache/johnzon/jsonb/JsonbWriteTest.java   | 25 +++++++++++++++++++++-
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git 
a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java 
b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
index 9850262..1d6f1b1 100644
--- a/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
+++ b/johnzon-jsonb/src/main/java/org/apache/johnzon/jsonb/JohnzonJsonb.java
@@ -44,11 +44,14 @@ import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.math.BigInteger;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.OptionalDouble;
 import java.util.OptionalInt;
 import java.util.OptionalLong;
+import java.util.Set;
+import java.util.SortedSet;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Consumer;
 import java.util.function.Supplier;
@@ -449,7 +452,8 @@ public class JohnzonJsonb implements Jsonb, AutoCloseable, 
JsonbExtension {
 
     private boolean isCollection(final Type runtimeType) {
         if (!ParameterizedType.class.isInstance(runtimeType)) {
-            return false;
+            return runtimeType == List.class || runtimeType == Set.class ||
+                    runtimeType == SortedSet.class || runtimeType == 
Collection.class;
         }
         final Type rawType = 
ParameterizedType.class.cast(runtimeType).getRawType();
         return Class.class.isInstance(rawType) && 
Collection.class.isAssignableFrom(Class.class.cast(rawType));
diff --git 
a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbWriteTest.java 
b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbWriteTest.java
index cec22a1..95541ee 100644
--- a/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbWriteTest.java
+++ b/johnzon-jsonb/src/test/java/org/apache/johnzon/jsonb/JsonbWriteTest.java
@@ -21,22 +21,45 @@ package org.apache.johnzon.jsonb;
 import org.junit.Test;
 
 import javax.json.bind.Jsonb;
+import javax.json.bind.JsonbBuilder;
 import javax.json.bind.annotation.JsonbDateFormat;
 import javax.json.bind.annotation.JsonbProperty;
 import javax.json.bind.spi.JsonbProvider;
-
 import java.io.ByteArrayOutputStream;
 import java.io.StringWriter;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 
 import static java.util.Arrays.asList;
 import static org.junit.Assert.assertEquals;
 
 public class JsonbWriteTest {
     @Test
+    public void mapOfSimple() throws Exception {
+        final Map<String, Simple> list = new TreeMap<>();
+        list.put("1", new Simple());
+        list.put("2", new Simple());
+        try (final Jsonb jsonb = JsonbBuilder.create()){
+            assertEquals("{\"1\":{},\"2\":{}}", jsonb.toJson(list, Map.class));
+        }
+    }
+
+    @Test
+    public void listOfSimple() throws Exception {
+        final List<Simple> list = new ArrayList<>();
+        list.add(new Simple());
+        list.add(new Simple());
+        try (final Jsonb jsonb = JsonbBuilder.create()){
+            assertEquals("[{},{}]", jsonb.toJson(list, List.class));
+        }
+    }
+
+    @Test
     public void boolAsString() {
         assertEquals("true", 
JsonbProvider.provider().create().build().toJson(Boolean.TRUE));
     }

Reply via email to