This is an automated email from the ASF dual-hosted git repository. ppalaga pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push: new 1fa3f1e Add ability to test HL7 extension with multiple HAPI implementations 1fa3f1e is described below commit 1fa3f1e958072b81aeb3dea121f8166a8b0ca286 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Wed Aug 25 11:30:28 2021 +0100 Add ability to test HL7 extension with multiple HAPI implementations Fixes #2744 --- integration-tests/hl7/pom.xml | 43 ++++++++++++++++++++++ .../quarkus/component/hl7/it/Hl7Resource.java | 13 +++++++ .../camel/quarkus/component/hl7/it/Hl7Test.java | 21 +++++++++++ 3 files changed, 77 insertions(+) diff --git a/integration-tests/hl7/pom.xml b/integration-tests/hl7/pom.xml index 8578794..bcc08b2 100644 --- a/integration-tests/hl7/pom.xml +++ b/integration-tests/hl7/pom.xml @@ -188,6 +188,49 @@ </plugins> </build> </profile> + + <!-- + To enable testing with additional HAPI model versions supported by Camel + Disabled by default due to the impact on native build times + --> + <profile> + <id>hapi.all</id> + <activation> + <property> + <name>hapi.all</name> + </property> + </activation> + <dependencies> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v21</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v23</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v231</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v24</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v25</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v251</artifactId> + </dependency> + <dependency> + <groupId>ca.uhn.hapi</groupId> + <artifactId>hapi-structures-v26</artifactId> + </dependency> + </dependencies> + </profile> </profiles> </project> diff --git a/integration-tests/hl7/src/main/java/org/apache/camel/quarkus/component/hl7/it/Hl7Resource.java b/integration-tests/hl7/src/main/java/org/apache/camel/quarkus/component/hl7/it/Hl7Resource.java index 6672e27..b6c0f8f 100644 --- a/integration-tests/hl7/src/main/java/org/apache/camel/quarkus/component/hl7/it/Hl7Resource.java +++ b/integration-tests/hl7/src/main/java/org/apache/camel/quarkus/component/hl7/it/Hl7Resource.java @@ -27,11 +27,13 @@ import javax.json.JsonObjectBuilder; import javax.ws.rs.Consumes; 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 javax.ws.rs.core.Response; +import ca.uhn.hl7v2.model.AbstractMessage; import ca.uhn.hl7v2.model.v22.datatype.AD; import ca.uhn.hl7v2.model.v22.datatype.CK; import ca.uhn.hl7v2.model.v22.datatype.PN; @@ -150,6 +152,17 @@ public class Hl7Resource { return producerTemplate.requestBody("direct:ack", message, String.class); } + @Path("/convert/{version}") + @POST + @Consumes(MediaType.TEXT_PLAIN) + @Produces(MediaType.TEXT_PLAIN) + public String convertStringToAdt(@PathParam("version") String version, String message) throws ClassNotFoundException { + String adtClassName = "ca.uhn.hl7v2.model." + version.toLowerCase() + ".message.ADT_A01"; + Class<?> adtClass = Class.forName(adtClassName); + AbstractMessage result = (AbstractMessage) context.getTypeConverter().convertTo(adtClass, message); + return result.getMessage().getVersion(); + } + private JsonObject adtToJsonObject(ADT_A01 result) { JsonObjectBuilder objectBuilder = Json.createObjectBuilder(); diff --git a/integration-tests/hl7/src/test/java/org/apache/camel/quarkus/component/hl7/it/Hl7Test.java b/integration-tests/hl7/src/test/java/org/apache/camel/quarkus/component/hl7/it/Hl7Test.java index 60ec127..a69fdcd 100644 --- a/integration-tests/hl7/src/test/java/org/apache/camel/quarkus/component/hl7/it/Hl7Test.java +++ b/integration-tests/hl7/src/test/java/org/apache/camel/quarkus/component/hl7/it/Hl7Test.java @@ -21,6 +21,7 @@ import java.nio.charset.StandardCharsets; import ca.uhn.hl7v2.DefaultHapiContext; import ca.uhn.hl7v2.HL7Exception; +import ca.uhn.hl7v2.Version; import ca.uhn.hl7v2.model.Message; import ca.uhn.hl7v2.parser.DefaultModelClassFactory; import ca.uhn.hl7v2.parser.GenericParser; @@ -34,6 +35,8 @@ import io.restassured.RestAssured; import io.restassured.http.ContentType; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.endsWith; @@ -208,6 +211,24 @@ class Hl7Test { .body(containsString("MSA|CA")); } + @ParameterizedTest + @MethodSource("hapiVersions") + public void hl7TypeConverter(String version) { + RestAssured.given() + .body(PID_MESSAGE) + .post("/hl7/convert/" + version) + .then() + .statusCode(200) + .body(is(Version.valueOf(version).getVersion())); + } + + public static String[] hapiVersions() { + return Version.availableVersions() + .stream() + .map(Version::toString) + .toArray(String[]::new); + } + private static final String readPidFile() { try { String pidContent = IOUtils.toString(Hl7Test.class.getResourceAsStream("/hl7-2.2-pid.txt"), StandardCharsets.UTF_8);