You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2020/01/25 10:46:43 UTC

[camel-quarkus] branch master updated: Add integration test for Jackson unmarshalling with different POJOs

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 <ph...@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) {