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)); }