JOHNZON-88 ensuring method and fields are mapped by johnzon by default
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/d2376e18 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/d2376e18 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/d2376e18 Branch: refs/heads/master Commit: d2376e186e13f5f250248e71f66e1f4e3302a261 Parents: 6fdfa98 Author: Romain manni-Bucau <rmannibu...@gmail.com> Authored: Sat Jul 2 18:47:03 2016 +0200 Committer: Romain manni-Bucau <rmannibu...@gmail.com> Committed: Sat Jul 2 18:47:03 2016 +0200 ---------------------------------------------------------------------- .../openejb/server/cxf/rs/CxfRSService.java | 5 +++ .../server/cxf/rs/JohnzonMappingTest.java | 45 +++++--------------- 2 files changed, 16 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/d2376e18/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java index 28b318e..f8ff509 100644 --- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java +++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRSService.java @@ -23,6 +23,7 @@ import org.apache.cxf.transport.DestinationFactory; import org.apache.cxf.transport.http.HTTPTransportFactory; import org.apache.johnzon.jaxrs.JohnzonProvider; import org.apache.johnzon.jaxrs.JsrProvider; +import org.apache.johnzon.mapper.MapperBuilder; import org.apache.openejb.cdi.WebBeansContextBeforeDeploy; import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.observer.Observes; @@ -395,6 +396,10 @@ public class CxfRSService extends RESTService { @Produces({"application/json", "application/*+json"}) @Consumes({"application/json", "application/*+json"}) public static class TomEEJohnzonProvider<T> extends JohnzonProvider<T> { + public TomEEJohnzonProvider() { + super(new MapperBuilder().setAccessModeName("both").build(), null); + } + @Override public boolean isWriteable(final Class<?> rawType, final Type genericType, final Annotation[] annotations, final MediaType mediaType) { http://git-wip-us.apache.org/repos/asf/tomee/blob/d2376e18/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/JohnzonMappingTest.java ---------------------------------------------------------------------- diff --git a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/JohnzonMappingTest.java b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/JohnzonMappingTest.java index f33f2bd..a7571f2 100644 --- a/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/JohnzonMappingTest.java +++ b/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/JohnzonMappingTest.java @@ -16,15 +16,14 @@ */ package org.apache.openejb.server.cxf.rs; +import org.apache.johnzon.mapper.JohnzonProperty; import org.apache.openejb.junit.ApplicationComposer; import org.apache.openejb.testing.Classes; -import org.apache.openejb.testing.ContainerProperties; import org.apache.openejb.testing.EnableServices; import org.apache.openejb.testing.RandomPort; import org.junit.Test; import org.junit.runner.RunWith; -import javax.validation.Valid; import javax.validation.constraints.NotNull; import javax.ws.rs.Consumes; import javax.ws.rs.POST; @@ -33,64 +32,42 @@ import javax.ws.rs.Produces; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.Entity; import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import java.net.URL; import static org.junit.Assert.assertEquals; @EnableServices("jaxrs") -@Classes(/*cdi = false, */innerClassesAsBean = true) +@Classes(innerClassesAsBean = true) @RunWith(ApplicationComposer.class) -@ContainerProperties(@ContainerProperties.Property(name = "openejb.cxf.rs.bval.log.level", value = "INFO")) public class JohnzonMappingTest { @RandomPort("http") private URL base; @Test - public void passing() { - final Payload payload = new Payload(); - payload.setName("ok"); + public void mapping() { assertEquals( - "ok", - ClientBuilder.newClient().target(base.toExternalForm()).path("openejb/test").request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.entity(payload, MediaType.APPLICATION_JSON_TYPE), Payload.class) + "no", + ClientBuilder.newClient().target(base.toExternalForm()).path("openejb/JohnzonMappingTest").request(MediaType.APPLICATION_JSON_TYPE) + .post(Entity.entity("{\"_name\":\"yes\"}", MediaType.APPLICATION_JSON_TYPE), Payload.class) .getName()); } - @Test - public void inFailing() { - final Payload payload = new Payload(); - assertEquals( - Response.Status.BAD_REQUEST.getStatusCode(), // thanks to the mapper - ClientBuilder.newClient().target(base.toExternalForm()).path("openejb/test").request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.entity(payload, MediaType.APPLICATION_JSON_TYPE)).getStatus()); - } - - @Test - public void outFailing() { - final Payload payload = new Payload(); - payload.setName("empty"); - assertEquals( - Response.Status.BAD_REQUEST.getStatusCode(), // thanks to the mapper - ClientBuilder.newClient().target(base.toExternalForm()).path("openejb/test").request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.entity(payload, MediaType.APPLICATION_JSON_TYPE)).getStatus()); - } - - @Path("test") + @Path("JohnzonMappingTest") public static class ValidateMe { @POST - @Valid @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public Payload get(@Valid final Payload in) { + public Payload get(final Payload in) { + assertEquals("yes", in.getName()); final Payload payload = new Payload(); - payload.setName("empty".equals(in.name) ? null : in.name); + payload.setName("no"); return payload; } } public static class Payload { @NotNull + @JohnzonProperty("_name") private String name; public String getName() {