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 <aldettin...@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>