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 2016/03/09 08:49:16 UTC

incubator-johnzon git commit: JOHNZON-67 ensure list can be serialized in jaxrs mapper even if we lost the generics

Repository: incubator-johnzon
Updated Branches:
  refs/heads/master b41dd5782 -> 939171809


JOHNZON-67 ensure list can be serialized in jaxrs mapper even if we lost the generics


Project: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/commit/93917180
Tree: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/tree/93917180
Diff: http://git-wip-us.apache.org/repos/asf/incubator-johnzon/diff/93917180

Branch: refs/heads/master
Commit: 9391718099778416ad205cc96285bd4f49275f9b
Parents: b41dd57
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Wed Mar 9 08:48:56 2016 +0100
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Wed Mar 9 08:48:56 2016 +0100

----------------------------------------------------------------------
 .../johnzon/jaxrs/JohnzonMessageBodyWriter.java |  3 +--
 .../johnzon/jaxrs/JohnzonProviderTest.java      | 23 ++++++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/93917180/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/JohnzonMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/JohnzonMessageBodyWriter.java b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/JohnzonMessageBodyWriter.java
index 07d6367..e6a8d36 100644
--- a/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/JohnzonMessageBodyWriter.java
+++ b/johnzon-jaxrs/src/main/java/org/apache/johnzon/jaxrs/JohnzonMessageBodyWriter.java
@@ -34,7 +34,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Writer;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.Collection;
 
@@ -82,7 +81,7 @@ public class JohnzonMessageBodyWriter<T> extends IgnorableTypes implements Messa
                         final OutputStream entityStream) throws IOException {
         if (rawType.isArray()) {
             mapper.writeArray(t, entityStream);
-        } else if (Collection.class.isAssignableFrom(rawType) && ParameterizedType.class.isInstance(genericType)) {
+        } else if (Collection.class.isInstance(t)) {
             mapper.writeArray(Collection.class.cast(t), entityStream);
         } else {
             mapper.writeObject(t, entityStream);

http://git-wip-us.apache.org/repos/asf/incubator-johnzon/blob/93917180/johnzon-jaxrs/src/test/java/org/apache/johnzon/jaxrs/JohnzonProviderTest.java
----------------------------------------------------------------------
diff --git a/johnzon-jaxrs/src/test/java/org/apache/johnzon/jaxrs/JohnzonProviderTest.java b/johnzon-jaxrs/src/test/java/org/apache/johnzon/jaxrs/JohnzonProviderTest.java
index 405c77c..6af6f68 100644
--- a/johnzon-jaxrs/src/test/java/org/apache/johnzon/jaxrs/JohnzonProviderTest.java
+++ b/johnzon-jaxrs/src/test/java/org/apache/johnzon/jaxrs/JohnzonProviderTest.java
@@ -27,11 +27,13 @@ import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.client.Entity;
 import javax.ws.rs.core.GenericType;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.StreamingOutput;
@@ -39,6 +41,8 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 import static java.util.Arrays.asList;
@@ -126,6 +130,17 @@ public class JohnzonProviderTest {
         }
     }
 
+    @Test
+    public void listPostNoGeneric() {
+        final List<Johnzon> list = new ArrayList<Johnzon>();
+        final Johnzon johnzon = new Johnzon();
+        johnzon.setName("test");
+        list.add(johnzon);
+        list.add(new Johnzon());
+
+        assertTrue(client(MediaType.TEXT_PLAIN_TYPE).path("johnzon/list").post(Entity.json(list), boolean.class));
+    }
+
     private static WebClient client() {
         return client(MediaType.APPLICATION_JSON_TYPE);
     }
@@ -180,6 +195,14 @@ public class JohnzonProviderTest {
             return Boolean.toString("client".equals(f.getName()));
         }
 
+        @POST
+        @Path("list")
+        @Consumes(MediaType.APPLICATION_JSON)
+        @Produces(MediaType.TEXT_PLAIN)
+        public boolean asParam(final Collection<Johnzon> list) {
+            return list.size() == 2 && list.iterator().next().getName().equals("test");
+        }
+
         @GET
         @Path("stream")
         public StreamingOutput out() {