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() {