This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch 2.7.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit b931323458825b312b5d89d538228469fdf57af9 Author: aldettinger <[email protected]> AuthorDate: Tue Mar 1 09:06:15 2022 +0100 jsonpath: fix different number of ObjectMapper modules between JVM and native mode #3582 --- .../json/path/deployment/JsonPathProcessor.java | 3 ++ integration-tests/jsonpath/pom.xml | 2 +- .../component/json/path/it/JsonPathResource.java | 11 +++++--- .../json/path/it/JsonPathCharsetsTest.java | 32 +++++++++++----------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/extensions/jsonpath/deployment/src/main/java/org/apache/camel/quarkus/component/json/path/deployment/JsonPathProcessor.java b/extensions/jsonpath/deployment/src/main/java/org/apache/camel/quarkus/component/json/path/deployment/JsonPathProcessor.java index 5e68144..1fa1321 100644 --- a/extensions/jsonpath/deployment/src/main/java/org/apache/camel/quarkus/component/json/path/deployment/JsonPathProcessor.java +++ b/extensions/jsonpath/deployment/src/main/java/org/apache/camel/quarkus/component/json/path/deployment/JsonPathProcessor.java @@ -41,6 +41,9 @@ class JsonPathProcessor { reflectiveClassBuildItems.add(new ReflectiveClassBuildItem(false, false, JsonPathAnnotationExpressionFactory.class)); reflectiveClassBuildItems.add(new ReflectiveClassBuildItem(true, false, JsonPath.class)); reflectiveClassBuildItems.add(new ReflectiveClassBuildItem(false, false, JacksonJsonAdapter.class)); + reflectiveClassBuildItems + .add(new ReflectiveClassBuildItem(false, false, "com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule")); + return reflectiveClassBuildItems; } diff --git a/integration-tests/jsonpath/pom.xml b/integration-tests/jsonpath/pom.xml index b71aac2..5ce95ab 100644 --- a/integration-tests/jsonpath/pom.xml +++ b/integration-tests/jsonpath/pom.xml @@ -45,7 +45,7 @@ </dependency> <dependency> <groupId>io.quarkus</groupId> - <artifactId>quarkus-resteasy-jackson</artifactId> + <artifactId>quarkus-resteasy</artifactId> </dependency> <dependency> <groupId>org.apache.camel.quarkus</groupId> diff --git a/integration-tests/jsonpath/src/main/java/org/apache/camel/quarkus/component/json/path/it/JsonPathResource.java b/integration-tests/jsonpath/src/main/java/org/apache/camel/quarkus/component/json/path/it/JsonPathResource.java index c235593..2e6f91b 100644 --- a/integration-tests/jsonpath/src/main/java/org/apache/camel/quarkus/component/json/path/it/JsonPathResource.java +++ b/integration-tests/jsonpath/src/main/java/org/apache/camel/quarkus/component/json/path/it/JsonPathResource.java @@ -36,6 +36,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.mock.MockEndpoint; +import org.apache.commons.lang3.StringUtils; import org.jboss.logging.Logger; import static org.apache.camel.jsonpath.JsonPathConstants.HEADER_JSON_ENCODING; @@ -133,19 +134,21 @@ public class JsonPathResource { @Path("/getAuthorsFromJsonStream") @GET - @Produces(MediaType.APPLICATION_JSON) + @Produces(MediaType.TEXT_PLAIN) @Consumes(MediaType.APPLICATION_OCTET_STREAM) - public List<?> getAuthorsFromJsonStream(byte[] jsonBytes, @QueryParam("encoding") String encoding) throws IOException { + public String getAuthorsFromJsonStream(byte[] jsonBytes, @QueryParam("encoding") String encoding) throws IOException { LOG.debugf("Getting authors from JsonStream with encoding '%s' and %d bytes", encoding, jsonBytes.length); + List<?> bookTitles; try (ByteArrayInputStream jsonStream = new ByteArrayInputStream(jsonBytes)) { if (encoding == null) { - return producerTemplate.requestBody("direct:getAuthorsFromJsonStream", jsonStream, List.class); + bookTitles = producerTemplate.requestBody("direct:getAuthorsFromJsonStream", jsonStream, List.class); } else { - return producerTemplate.requestBodyAndHeader("direct:getAuthorsFromJsonStream", jsonStream, + bookTitles = producerTemplate.requestBodyAndHeader("direct:getAuthorsFromJsonStream", jsonStream, HEADER_JSON_ENCODING, encoding, List.class); } } + return StringUtils.join(bookTitles, "-"); } @Path("/splitInputJsonThenWriteAsStringShouldSucceed") diff --git a/integration-tests/jsonpath/src/test/java/org/apache/camel/quarkus/component/json/path/it/JsonPathCharsetsTest.java b/integration-tests/jsonpath/src/test/java/org/apache/camel/quarkus/component/json/path/it/JsonPathCharsetsTest.java index 94a9b30..d12c097 100644 --- a/integration-tests/jsonpath/src/test/java/org/apache/camel/quarkus/component/json/path/it/JsonPathCharsetsTest.java +++ b/integration-tests/jsonpath/src/test/java/org/apache/camel/quarkus/component/json/path/it/JsonPathCharsetsTest.java @@ -23,7 +23,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.hamcrest.Matchers.is; @QuarkusTest class JsonPathCharsetsTest { @@ -31,31 +31,31 @@ class JsonPathCharsetsTest { @Test public void transformBooksUTF16BEShouldReturnTwoAuthors() throws IOException { byte[] body = IOUtils.resourceToByteArray("/booksUTF16BE.json"); - String[] authors = given().body(body).get("/jsonpath/getAuthorsFromJsonStream").then().statusCode(200).extract() - .as(String[].class); - assertEquals(2, authors.length); - assertEquals("Sayings of the Century", authors[0]); - assertEquals("Sword of Honour", authors[1]); + given().body(body) + .get("/jsonpath/getAuthorsFromJsonStream") + .then() + .statusCode(200) + .body(is("Sayings of the Century-Sword of Honour")); } @Test public void transformBooksUTF16LEShouldReturnTwoAuthors() throws IOException { byte[] body = IOUtils.resourceToByteArray("/booksUTF16LE.json"); - String[] authors = given().body(body).get("/jsonpath/getAuthorsFromJsonStream").then().statusCode(200).extract() - .as(String[].class); - assertEquals(2, authors.length); - assertEquals("Sayings of the Century", authors[0]); - assertEquals("Sword of Honour", authors[1]); + given().body(body) + .get("/jsonpath/getAuthorsFromJsonStream") + .then().statusCode(200) + .body(is("Sayings of the Century-Sword of Honour")); } @Test public void transformBooksIso_8859_1_ShouldReturnTwoAuthors() throws IOException { byte[] body = IOUtils.resourceToByteArray("/germanbooks-iso-8859-1.json"); - String[] authors = given().queryParam("encoding", "ISO-8859-1").body(body).get("/jsonpath/getAuthorsFromJsonStream") - .then().statusCode(200).extract().as(String[].class); - assertEquals(2, authors.length); - assertEquals("Joseph und seine Brüder", authors[0]); - assertEquals("Götzendämmerung", authors[1]); + given().queryParam("encoding", "ISO-8859-1") + .body(body) + .get("/jsonpath/getAuthorsFromJsonStream") + .then() + .statusCode(200) + .body(is("Joseph und seine Brüder-Götzendämmerung")); } }
