You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2020/02/18 17:57:46 UTC

[camel-quarkus] branch master updated: CAMEL-QUARKUS-729: Centralized JSON dataformats related itests in dataformats-json

This is an automated email from the ASF dual-hosted git repository.

aldettinger 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 5de6a12  CAMEL-QUARKUS-729: Centralized JSON dataformats related itests in dataformats-json
5de6a12 is described below

commit 5de6a12a2e459fb83fee62a99ed6801c988b8148
Author: aldettinger <al...@gmail.com>
AuthorDate: Tue Feb 18 17:00:51 2020 +0100

    CAMEL-QUARKUS-729: Centralized JSON dataformats related itests in dataformats-json
---
 .github/workflows/pr-build.yaml                    |  2 +-
 .../{jackson => dataformats-json}/pom.xml          |  6 +--
 .../jackson/JsonDataformatsResource.java}          | 46 ++++++++++-------
 .../component/jackson/JsonDataformatsRoute.java}   | 32 ++++++------
 .../component/jackson/model/DummyObject.java       |  0
 .../quarkus/component/jackson/model/PojoA.java     |  0
 .../quarkus/component/jackson/model/PojoB.java     |  0
 .../src/main/resources/application.properties      |  6 +--
 .../resources/routes/json-dataformats-routes.xml}  |  4 +-
 .../component/jackson/JsonComponentsIT.java}       |  2 +-
 .../component/jackson/JsonComponentsTest.java}     | 57 +++++++++++++++-------
 integration-tests/pom.xml                          |  2 +-
 12 files changed, 95 insertions(+), 62 deletions(-)

diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml
index 50e96ee..f13b36f 100644
--- a/.github/workflows/pr-build.yaml
+++ b/.github/workflows/pr-build.yaml
@@ -243,11 +243,11 @@ jobs:
             -DskipTests \
             -pl :camel-quarkus-integration-test-base64 \
             -pl :camel-quarkus-integration-test-bindy \
+            -pl :camel-quarkus-integration-test-dataformats-json \
             -pl :camel-quarkus-integration-test-snakeyaml \
             -pl :camel-quarkus-integration-test-tagsoup \
             -pl :camel-quarkus-integration-test-xslt \
             -pl :camel-quarkus-integration-test-csv \
-            -pl :camel-quarkus-integration-test-jackson \
             -pl :camel-quarkus-integration-test-dataformat
   networking:
     runs-on: ubuntu-latest
diff --git a/integration-tests/jackson/pom.xml b/integration-tests/dataformats-json/pom.xml
similarity index 95%
rename from integration-tests/jackson/pom.xml
rename to integration-tests/dataformats-json/pom.xml
index 5acfe68..3994a91 100644
--- a/integration-tests/jackson/pom.xml
+++ b/integration-tests/dataformats-json/pom.xml
@@ -25,9 +25,9 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>camel-quarkus-integration-test-jackson</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: Jackson</name>
-    <description>Integration tests for Camel Jackson extension</description>
+    <artifactId>camel-quarkus-integration-test-dataformats-json</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: DataFormats JSON</name>
+    <description>Integration tests for Camel Quarkus extension providing JSON related data formats</description>
 
     <properties>
         <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsResource.java
similarity index 51%
rename from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java
rename to integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsResource.java
index 60da4be..b1a09b4 100644
--- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelResource.java
+++ b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsResource.java
@@ -24,19 +24,24 @@ import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.ProducerTemplate;
+import org.jboss.logging.Logger;
 
-@Path("/jackson")
+@Path("/dataformats-json")
 @ApplicationScoped
-public class CamelResource {
+public class JsonDataformatsResource {
+
+    private static final Logger LOG = Logger.getLogger(JsonDataformatsResource.class);
+
     @Inject
-    ProducerTemplate template;
+    ProducerTemplate producerTemplate;
     @Inject
-    ConsumerTemplate consumer;
+    ConsumerTemplate consumerTemplate;
     @Inject
     CamelContext context;
 
@@ -44,45 +49,51 @@ public class CamelResource {
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public String processOrder(String statement) {
-        return template.requestBody("direct:in", statement, String.class);
+    public String processOrder(@QueryParam("json-component") String jsonComponent, String statement) {
+        LOG.infof("Invoking processOrder(%s)", jsonComponent, statement);
+        return producerTemplate.requestBody("direct:" + jsonComponent + "-in", statement, String.class);
     }
 
     @Path("/out")
     @POST
     @Produces(MediaType.TEXT_PLAIN)
-    public String testOrder() {
-        return consumer.receive("vm:out").getMessage().getBody().toString();
+    public String testOrder(@QueryParam("json-component") String jsonComponent) {
+        LOG.infof("Invoking testOrder(%s)", jsonComponent);
+        return consumerTemplate.receive("vm:" + jsonComponent + "-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);
+    public String processPojoA(@QueryParam("json-component") String jsonComponent, String statement) {
+        LOG.infof("Invoking processPojoA(%s, %s)", jsonComponent, statement);
+        return producerTemplate.requestBody("direct:" + jsonComponent + "-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);
+    public String processPojoB(@QueryParam("json-component") String jsonComponent, String statement) {
+        LOG.infof("Invoking processPojoB(%s, %s)", jsonComponent, statement);
+        return producerTemplate.requestBody("direct:" + jsonComponent + "-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();
+    public String testPojoA(@QueryParam("json-component") String jsonComponent) {
+        LOG.infof("Invoking testPojoA(%s)", jsonComponent);
+        return consumerTemplate.receive("vm:" + jsonComponent + "-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();
+    public String testPojoB(@QueryParam("json-component") String jsonComponent) {
+        LOG.infof("Invoking testPojoB(%s)", jsonComponent);
+        return consumerTemplate.receive("vm:" + jsonComponent + "-out-b").getMessage().getBody().toString();
     }
 
     @Path("/unmarshal/{direct-id}")
@@ -90,7 +101,8 @@ public class CamelResource {
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.APPLICATION_JSON)
     public String testXmlUnmarshalDefinition(@PathParam("direct-id") String directId, String statement) {
-        Object object = template.requestBody("direct:" + directId, statement);
+        LOG.infof("Invoking testXmlUnmarshalDefinition(%s, %s)", directId, statement);
+        Object object = producerTemplate.requestBody("direct:" + directId, statement);
         String answer = JsonbBuilder.create().toJson(object);
 
         return answer;
diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsRoute.java
similarity index 75%
rename from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java
rename to integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsRoute.java
index 9b5fd74..3e2cb94 100644
--- a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/CamelRoute.java
+++ b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/JsonDataformatsRoute.java
@@ -23,40 +23,40 @@ 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 {
+public class JsonDataformatsRoute extends RouteBuilder {
 
     @Override
     public void configure() {
         JacksonDataFormat format = new JacksonDataFormat(DummyObject.class);
         format.useList();
 
-        from("direct:in")
-                .wireTap("direct:tap")
+        from("direct:jackson-in")
+                .wireTap("direct:jackson-tap")
                 .setBody(constant("ok"));
-        from("direct:tap")
+        from("direct:jackson-tap")
                 .unmarshal(format)
-                .to("log:out")
+                .to("log:jackson-out")
                 .split(body())
                 .marshal(format)
                 .convertBodyTo(String.class)
-                .to("vm:out");
-        from("direct:in-a")
-                .wireTap("direct:tap-a")
+                .to("vm:jackson-out");
+        from("direct:jackson-in-a")
+                .wireTap("direct:jackson-tap-a")
                 .setBody(constant("ok"));
-        from("direct:tap-a")
+        from("direct:jackson-tap-a")
                 .unmarshal().json(JsonLibrary.Jackson, PojoA.class)
-                .to("log:out")
+                .to("log:jackson-out")
                 .marshal(new JacksonDataFormat(PojoA.class))
                 .convertBodyTo(String.class)
-                .to("vm:out-a");
-        from("direct:in-b")
-                .wireTap("direct:tap-b")
+                .to("vm:jackson-out-a");
+        from("direct:jackson-in-b")
+                .wireTap("direct:jackson-tap-b")
                 .setBody(constant("ok"));
-        from("direct:tap-b")
+        from("direct:jackson-tap-b")
                 .unmarshal().json(JsonLibrary.Jackson, PojoB.class)
-                .to("log:out")
+                .to("log:jackson-out")
                 .marshal(new JacksonDataFormat(PojoB.class))
                 .convertBodyTo(String.class)
-                .to("vm:out-b");
+                .to("vm:jackson-out-b");
     }
 }
diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/DummyObject.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/DummyObject.java
similarity index 100%
rename from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/DummyObject.java
rename to integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/DummyObject.java
diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java
similarity index 100%
rename from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java
rename to integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoA.java
diff --git a/integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java b/integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java
similarity index 100%
rename from integration-tests/jackson/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java
rename to integration-tests/dataformats-json/src/main/java/org/apache/camel/quarkus/component/jackson/model/PojoB.java
diff --git a/integration-tests/jackson/src/main/resources/application.properties b/integration-tests/dataformats-json/src/main/resources/application.properties
similarity index 87%
rename from integration-tests/jackson/src/main/resources/application.properties
rename to integration-tests/dataformats-json/src/main/resources/application.properties
index 20d3577..4cc94ff 100644
--- a/integration-tests/jackson/src/main/resources/application.properties
+++ b/integration-tests/dataformats-json/src/main/resources/application.properties
@@ -21,14 +21,14 @@ quarkus.ssl.native=true
 quarkus.log.file.enable = false
 
 # include xml routes in native image
-quarkus.native.additional-build-args = -H:IncludeResources=routes/my-routes.xml
+quarkus.native.additional-build-args = -H:IncludeResources=routes/json-dataformats-routes.xml
 
 #
 # Camel
 #
-camel.context.name = quarkus-camel-example
+camel.context.name = camel-quarkus-integration-tests-dataformats-json
 
 #
 # Main
 #
-camel.main.xml-routes = classpath:routes/my-routes.xml
\ No newline at end of file
+camel.main.xml-routes = classpath:routes/json-dataformats-routes.xml
diff --git a/integration-tests/jackson/src/main/resources/routes/my-routes.xml b/integration-tests/dataformats-json/src/main/resources/routes/json-dataformats-routes.xml
similarity index 93%
rename from integration-tests/jackson/src/main/resources/routes/my-routes.xml
rename to integration-tests/dataformats-json/src/main/resources/routes/json-dataformats-routes.xml
index 6592d59..6c521e9 100644
--- a/integration-tests/jackson/src/main/resources/routes/my-routes.xml
+++ b/integration-tests/dataformats-json/src/main/resources/routes/json-dataformats-routes.xml
@@ -24,14 +24,14 @@
             http://camel.apache.org/schema/spring/camel-spring.xsd">
 
     <route>
-        <from uri="direct:type-as-attribute"/>
+        <from uri="direct:jackson-type-as-attribute"/>
         <unmarshal>
             <json library="Jackson" unmarshalTypeName="org.apache.camel.quarkus.component.jackson.model.DummyObject"/>
         </unmarshal>
     </route>
 
     <route>
-        <from uri="direct:type-as-header"/>
+        <from uri="direct:jackson-type-as-header"/>
         <setHeader name="CamelJacksonUnmarshalType">
             <constant>org.apache.camel.quarkus.component.jackson.model.DummyObject</constant>
         </setHeader>
diff --git a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonITCase.java b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsIT.java
similarity index 93%
rename from integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonITCase.java
rename to integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsIT.java
index b5d50fc..68ae6c5 100644
--- a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonITCase.java
+++ b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsIT.java
@@ -19,5 +19,5 @@ package org.apache.camel.quarkus.component.jackson;
 import io.quarkus.test.junit.NativeImageTest;
 
 @NativeImageTest
-public class JacksonITCase extends JacksonTest {
+public class JsonComponentsIT extends JsonComponentsTest {
 }
diff --git a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsTest.java
similarity index 56%
rename from integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java
rename to integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsTest.java
index f0cd06c..c801a43 100644
--- a/integration-tests/jackson/src/test/java/org/apache/camel/quarkus/component/jackson/JacksonTest.java
+++ b/integration-tests/dataformats-json/src/test/java/org/apache/camel/quarkus/component/jackson/JsonComponentsTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.camel.quarkus.component.jackson;
 
-import java.util.UUID;
+import java.util.stream.Stream;
 
 import javax.json.bind.JsonbBuilder;
 
@@ -24,57 +24,78 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import org.apache.camel.quarkus.component.jackson.model.DummyObject;
-import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 
 @QuarkusTest
-public class JacksonTest {
-    @Test
-    public void testRoutes() {
+public class JsonComponentsTest {
+
+    private static Stream<String> listJsonDataFormatsToBeTested() {
+        return Stream.of("jackson");
+    }
+
+    @ParameterizedTest
+    @MethodSource("listJsonDataFormatsToBeTested")
+    public void testRoutes(String jsonComponent) {
         RestAssured.given().contentType(ContentType.TEXT)
+                .queryParam("json-component", jsonComponent)
                 .body("[{\"dummy\": \"value1\"}, {\"dummy\": \"value2\"}]")
-                .post("/jackson/in");
-        RestAssured.post("/jackson/out")
+                .post("/dataformats-json/in");
+        RestAssured.given()
+                .queryParam("json-component", jsonComponent)
+                .post("/dataformats-json/out")
                 .then()
                 .body(equalTo("{\"dummy\":\"value1\"}"));
-        RestAssured.post("/jackson/out")
+        RestAssured.given()
+                .queryParam("json-component", jsonComponent)
+                .post("/dataformats-json/out")
                 .then()
                 .body(equalTo("{\"dummy\":\"value2\"}"));
     }
 
-    @Test
-    public void testUnmarshallingDifferentPojos() {
+    @ParameterizedTest
+    @MethodSource("listJsonDataFormatsToBeTested")
+    public void testUnmarshallingDifferentPojos(String jsonComponent) {
         String bodyA = "{\"name\":\"name A\"}";
         String bodyB = "{\"value\":1.0}";
 
         RestAssured.given().contentType(ContentType.TEXT)
+                .queryParam("json-component", jsonComponent)
                 .body(bodyA)
-                .post("/jackson/in-a");
+                .post("/dataformats-json/in-a");
         RestAssured.given().contentType(ContentType.TEXT)
+                .queryParam("json-component", jsonComponent)
                 .body(bodyB)
-                .post("/jackson/in-b");
-        RestAssured.post("/jackson/out-a")
+                .post("/dataformats-json/in-b");
+        RestAssured.given()
+                .queryParam("json-component", jsonComponent)
+                .post("/dataformats-json/out-a")
                 .then()
                 .body(equalTo(bodyA));
-        RestAssured.post("/jackson/out-b")
+        RestAssured.given()
+                .queryParam("json-component", jsonComponent)
+                .post("/dataformats-json/out-b")
                 .then()
                 .body(equalTo(bodyB));
     }
 
+    private static Stream<String> listDirectUrisFromXmlRoutesToBeTested() {
+        return listJsonDataFormatsToBeTested().flatMap(s -> Stream.of(s + "-type-as-attribute", s + "-type-as-header"));
+    }
+
     @ParameterizedTest
-    @ValueSource(strings = { "type-as-attribute", "type-as-header" })
+    @MethodSource("listDirectUrisFromXmlRoutesToBeTested")
     public void testUnmarshal(String directId) {
         DummyObject object = new DummyObject();
-        object.setDummy(UUID.randomUUID().toString());
+        object.setDummy("95f669ce-d287-4519-b212-4450bc791867");
 
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body(JsonbBuilder.create().toJson(object))
-                .post("/jackson/unmarshal/{direct-id}", directId)
+                .post("/dataformats-json/unmarshal/{direct-id}", directId)
                 .then()
                 .body("dummy", is(object.getDummy()));
     }
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 6a9aa99..c52fdf6 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -179,6 +179,7 @@
         <module>controlbus</module>
         <module>csv</module>
         <module>dataformat</module>
+        <module>dataformats-json</module>
         <module>dozer</module>
         <module>exec</module>
         <module>fhir</module>
@@ -187,7 +188,6 @@
         <module>http</module>
         <module>hystrix</module>
         <module>infinispan</module>
-        <module>jackson</module>
         <module>jdbc</module>
         <module>jira</module>
         <module>jsonpath</module>