This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push: new 06e5fce Add integration test for Jackson unmarshalling with different POJOs new b2d8823 Merge pull request #663 from philschaller/i637 06e5fce is described below commit 06e5fcef93d7478f5447da8107542fc6a9a1b865 Author: Philippe Schaller <philippe.schal...@gmail.com> AuthorDate: Sat Jan 25 09:32:04 2020 +0100 Add integration test for Jackson unmarshalling with different POJOs --- .../quarkus/component/jackson/CamelResource.java | 30 ++++++++++++++++++++ .../quarkus/component/jackson/CamelRoute.java | 22 ++++++++++++++- .../jackson/{CamelRoute.java => model/PojoA.java} | 32 +++++++++------------- .../jackson/{CamelRoute.java => model/PojoB.java} | 32 +++++++++------------- .../quarkus/component/jackson/JacksonTest.java | 19 +++++++++++++ 5 files changed, 96 insertions(+), 39 deletions(-) diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java index 48734d3..60da4be 100644 --- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java +++ b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java @@ -55,6 +55,36 @@ public class CamelResource { return consumer.receive("vm:out").getMessage().getBody().toString(); } + @Path("/in-a") + @POST + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + public String processPojoA(String statement) { + return template.requestBody("direct:in-a", statement, String.class); + } + + @Path("/in-b") + @POST + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + public String processPojoB(String statement) { + return template.requestBody("direct:in-b", statement, String.class); + } + + @Path("/out-a") + @POST + @Produces(MediaType.TEXT_PLAIN) + public String testPojoA() { + return consumer.receive("vm:out-a").getMessage().getBody().toString(); + } + + @Path("/out-b") + @POST + @Produces(MediaType.TEXT_PLAIN) + public String testPojoB() { + return consumer.receive("vm:out-b").getMessage().getBody().toString(); + } + @Path("/unmarshal/{direct-id}") @POST @Consumes(MediaType.TEXT_PLAIN) diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java index 5ac49f8..9b5fd74 100644 --- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java +++ b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java @@ -18,7 +18,10 @@ package org.apache.camel.quarkus.component.jackson; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jackson.JacksonDataFormat; +import org.apache.camel.model.dataformat.JsonLibrary; import org.apache.camel.quarkus.component.jackson.model.DummyObject; +import org.apache.camel.quarkus.component.jackson.model.PojoA; +import org.apache.camel.quarkus.component.jackson.model.PojoB; public class CamelRoute extends RouteBuilder { @@ -37,6 +40,23 @@ public class CamelRoute extends RouteBuilder { .marshal(format) .convertBodyTo(String.class) .to("vm:out"); + from("direct:in-a") + .wireTap("direct:tap-a") + .setBody(constant("ok")); + from("direct:tap-a") + .unmarshal().json(JsonLibrary.Jackson, PojoA.class) + .to("log:out") + .marshal(new JacksonDataFormat(PojoA.class)) + .convertBodyTo(String.class) + .to("vm:out-a"); + from("direct:in-b") + .wireTap("direct:tap-b") + .setBody(constant("ok")); + from("direct:tap-b") + .unmarshal().json(JsonLibrary.Jackson, PojoB.class) + .to("log:out") + .marshal(new JacksonDataFormat(PojoB.class)) + .convertBodyTo(String.class) + .to("vm:out-b"); } - } diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java similarity index 51% copy from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java copy to integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java index 5ac49f8..712bbb0 100644 --- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java +++ b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java @@ -14,29 +14,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.jackson; +package org.apache.camel.quarkus.component.jackson.model; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonDataFormat; -import org.apache.camel.quarkus.component.jackson.model.DummyObject; +import io.quarkus.runtime.annotations.RegisterForReflection; -public class CamelRoute extends RouteBuilder { +@RegisterForReflection +public class PojoA { - @Override - public void configure() { - JacksonDataFormat format = new JacksonDataFormat(DummyObject.class); - format.useList(); + private String name; - from("direct:in") - .wireTap("direct:tap") - .setBody(constant("ok")); - from("direct:tap") - .unmarshal(format) - .to("log:out") - .split(body()) - .marshal(format) - .convertBodyTo(String.class) - .to("vm:out"); + public PojoA() { } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java similarity index 51% copy from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java copy to integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java index 5ac49f8..1430da7 100644 --- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java +++ b/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java @@ -14,29 +14,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.jackson; +package org.apache.camel.quarkus.component.jackson.model; -import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonDataFormat; -import org.apache.camel.quarkus.component.jackson.model.DummyObject; +import io.quarkus.runtime.annotations.RegisterForReflection; -public class CamelRoute extends RouteBuilder { +@RegisterForReflection +public class PojoB { - @Override - public void configure() { - JacksonDataFormat format = new JacksonDataFormat(DummyObject.class); - format.useList(); + private Double value; - from("direct:in") - .wireTap("direct:tap") - .setBody(constant("ok")); - from("direct:tap") - .unmarshal(format) - .to("log:out") - .split(body()) - .marshal(format) - .convertBodyTo(String.class) - .to("vm:out"); + public PojoB() { } + public Double getValue() { + return value; + } + + public void setString(Double string) { + this.value = string; + } } diff --git a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java b/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java index 606344d..f0cd06c 100644 --- a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java +++ b/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java @@ -46,6 +46,25 @@ public class JacksonTest { .body(equalTo("{\"dummy\":\"value2\"}")); } + @Test + public void testUnmarshallingDifferentPojos() { + String bodyA = "{\"name\":\"name A\"}"; + String bodyB = "{\"value\":1.0}"; + + RestAssured.given().contentType(ContentType.TEXT) + .body(bodyA) + .post("/jackson/in-a"); + RestAssured.given().contentType(ContentType.TEXT) + .body(bodyB) + .post("/jackson/in-b"); + RestAssured.post("/jackson/out-a") + .then() + .body(equalTo(bodyA)); + RestAssured.post("/jackson/out-b") + .then() + .body(equalTo(bodyB)); + } + @ParameterizedTest @ValueSource(strings = { "type-as-attribute", "type-as-header" }) public void testUnmarshal(String directId) {