This is an automated email from the ASF dual-hosted git repository.
jamesnetherton 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 55a2622 SAP NetWeaver native support
55a2622 is described below
commit 55a2622870d8f148ff331f0b88897047fcffede5
Author: James Netherton <[email protected]>
AuthorDate: Mon Apr 6 12:47:00 2020 +0100
SAP NetWeaver native support
Fixes #956
---
.github/workflows/pr-build.yaml | 1 +
.../pages/list-of-camel-quarkus-extensions.adoc | 4 +-
extensions-jvm/pom.xml | 1 -
extensions/pom.xml | 1 +
.../sap-netweaver/deployment/pom.xml | 0
.../deployment/SapNetweaverProcessor.java | 18 -----
.../sap-netweaver/pom.xml | 1 -
.../sap-netweaver/runtime/pom.xml | 0
.../main/resources/META-INF/quarkus-extension.yaml | 10 +--
integration-tests/pom.xml | 1 +
.../sap-netweaver}/pom.xml | 59 ++++++++++++++-
.../sap/netweaver/it/SapNetweaverResource.java | 33 ++++-----
.../sap/netweaver/it/SapNetweaverRoutes.java | 29 +++++---
.../src/main/resources/application.properties | 19 +++++
.../src/main/resources/flight-data.json | 83 ++++++++++++++++++++++
.../src/main/resources/flight-data.xml | 76 ++++++++++++++++++++
.../sap/netweaver/it/SapNetweaverTest.java | 57 +++++++++++++++
.../sap/netweaver/it/SapNetweaverTestResource.java | 23 +++---
18 files changed, 349 insertions(+), 67 deletions(-)
diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml
index 5213759..7b3ca0b 100644
--- a/.github/workflows/pr-build.yaml
+++ b/.github/workflows/pr-build.yaml
@@ -186,6 +186,7 @@ jobs:
google
jira
salesforce
+ sap-netweaver
servicenow
slack
- category: SQL
diff --git a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
index 52ef746..df584d0 100644
--- a/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
+++ b/docs/modules/ROOT/pages/list-of-camel-quarkus-extensions.adoc
@@ -530,8 +530,8 @@ Level | Since | Description
Stable | 0.2.0 | The salesforce component is used for integrating Camel with
the massive Salesforce API.
|
link:https://camel.apache.org/components/latest/sap-netweaver-component.html[SAP
NetWeaver] (camel-quarkus-sap-netweaver) +
-`sap-netweaver:url` | JVM +
- Preview | 1.0.0-M6 | The sap-netweaver component integrates with the SAP
NetWeaver Gateway using HTTP transports.
+`sap-netweaver:url` | Native +
+ Stable | 1.0.0-M6 | The sap-netweaver component integrates with the SAP
NetWeaver Gateway using HTTP transports.
|
link:https://camel.apache.org/components/latest/scheduler-component.html[Scheduler]
(camel-quarkus-scheduler) +
`scheduler:name` | Native +
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 947c514..640e14d 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -70,7 +70,6 @@
<module>pubnub</module>
<module>rabbitmq</module>
<module>rest-openapi</module>
- <module>sap-netweaver</module>
</modules>
</project>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index c527844..7fe8c7f 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -113,6 +113,7 @@
<module>ref</module>
<module>rest</module>
<module>salesforce</module>
+ <module>sap-netweaver</module>
<module>scheduler</module>
<module>seda</module>
<module>servicenow</module>
diff --git a/extensions-jvm/sap-netweaver/deployment/pom.xml
b/extensions/sap-netweaver/deployment/pom.xml
similarity index 100%
rename from extensions-jvm/sap-netweaver/deployment/pom.xml
rename to extensions/sap-netweaver/deployment/pom.xml
diff --git
a/extensions-jvm/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
b/extensions/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
similarity index 62%
rename from
extensions-jvm/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
rename to
extensions/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
index 360dda4..ce28f7d 100644
---
a/extensions-jvm/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
+++
b/extensions/sap-netweaver/deployment/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/deployment/SapNetweaverProcessor.java
@@ -17,31 +17,13 @@
package org.apache.camel.quarkus.component.sap.netweaver.deployment;
import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
-import org.jboss.logging.Logger;
class SapNetweaverProcessor {
- private static final Logger LOG =
Logger.getLogger(SapNetweaverProcessor.class);
-
private static final String FEATURE = "camel-sap-netweaver";
@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
-
- /**
- * Remove this once this extension starts supporting the native mode.
- */
- @BuildStep(onlyIf = NativeBuild.class)
- @Record(value = ExecutionTime.RUNTIME_INIT)
- void warnJvmInNative(JvmOnlyRecorder recorder) {
- JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
- recorder.warnJvmInNative(FEATURE); // warn at runtime
- }
-
}
diff --git a/extensions-jvm/sap-netweaver/pom.xml
b/extensions/sap-netweaver/pom.xml
similarity index 97%
rename from extensions-jvm/sap-netweaver/pom.xml
rename to extensions/sap-netweaver/pom.xml
index 4ca1f94..8307998 100644
--- a/extensions-jvm/sap-netweaver/pom.xml
+++ b/extensions/sap-netweaver/pom.xml
@@ -35,6 +35,5 @@
<modules>
<module>deployment</module>
<module>runtime</module>
- <module>integration-test</module>
</modules>
</project>
diff --git a/extensions-jvm/sap-netweaver/runtime/pom.xml
b/extensions/sap-netweaver/runtime/pom.xml
similarity index 100%
rename from extensions-jvm/sap-netweaver/runtime/pom.xml
rename to extensions/sap-netweaver/runtime/pom.xml
diff --git
a/extensions-jvm/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
b/extensions/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 77%
rename from
extensions-jvm/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to
extensions/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index 02f860a..fbccab1 100644
---
a/extensions-jvm/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++
b/extensions/sap-netweaver/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -16,13 +16,13 @@
#
---
-name: "SAP NetWeaver"
-description: "The sap-netweaver component integrates with the SAP NetWeaver
Gateway using HTTP transports."
+name: "Camel Quarkus SAP Netweaver support"
+description: "Camel Quarkus SAP Netweaver extension integrates with the SAP
NetWeaver Gateway using HTTP transports."
metadata:
- unlisted: true
keywords:
+ - "camel"
- "sap"
- guide:
"https://camel.apache.org/components/latest/sap-netweaver-component.html"
+ guide: "https://quarkus.io/guides/camel"
categories:
- "integration"
- status: "preview"
+ status: "stable"
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 87ca634..b8c962d 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -105,6 +105,7 @@
<module>ref</module>
<module>rest-binding-mode-xml</module>
<module>salesforce</module>
+ <module>sap-netweaver</module>
<module>scheduler</module>
<module>seda</module>
<module>servicenow</module>
diff --git a/extensions-jvm/sap-netweaver/integration-test/pom.xml
b/integration-tests/sap-netweaver/pom.xml
similarity index 60%
rename from extensions-jvm/sap-netweaver/integration-test/pom.xml
rename to integration-tests/sap-netweaver/pom.xml
index 779f3b8..0b330e1 100644
--- a/extensions-jvm/sap-netweaver/integration-test/pom.xml
+++ b/integration-tests/sap-netweaver/pom.xml
@@ -23,7 +23,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-sap-netweaver-parent</artifactId>
+ <artifactId>camel-quarkus-integration-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
</parent>
@@ -38,15 +38,35 @@
<!-- explicit dependencies of this module in the Maven sense, although
they are required by the Quarkus Maven plugin. -->
<!-- Please update rule whenever you change the dependencies of this
module by running -->
<!-- mvn process-resources -Pformat from the root directory -->
-
<mvnd.builder.rule>camel-quarkus-sap-netweaver-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
+
<mvnd.builder.rule>camel-quarkus-http-deployment,camel-quarkus-netty-http-deployment,camel-quarkus-sap-netweaver-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule>
</properties>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bom-test</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-sap-netweaver</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-http</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-netty-http</artifactId>
+ </dependency>
+ <dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
@@ -62,6 +82,11 @@
<artifactId>rest-assured</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-support</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@@ -79,4 +104,34 @@
</plugin>
</plugins>
</build>
+
+ <profiles>
+ <profile>
+ <id>native</id>
+ <activation>
+ <property>
+ <name>native</name>
+ </property>
+ </activation>
+ <properties>
+ <quarkus.package.type>native</quarkus.package.type>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
diff --git
a/extensions-jvm/sap-netweaver/integration-test/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
b/integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
similarity index 54%
rename from
extensions-jvm/sap-netweaver/integration-test/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
rename to
integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
index e6fac41..6c73676 100644
---
a/extensions-jvm/sap-netweaver/integration-test/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
+++
b/integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverResource.java
@@ -16,36 +16,37 @@
*/
package org.apache.camel.quarkus.component.sap.netweaver.it;
-import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.apache.camel.CamelContext;
-import org.jboss.logging.Logger;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.sap.netweaver.NetWeaverConstants;
@Path("/sap-netweaver")
-@ApplicationScoped
public class SapNetweaverResource {
- private static final Logger LOG =
Logger.getLogger(SapNetweaverResource.class);
+ private static final String SAP_COMMAND =
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')";
- private static final String COMPONENT_SAP_NETWEAVER = "sap-netweaver";
@Inject
- CamelContext context;
+ ProducerTemplate producerTemplate;
- @Path("/load/component/sap-netweaver")
@GET
+ @Path("/json")
@Produces(MediaType.TEXT_PLAIN)
- public Response loadComponentSapNetweaver() throws Exception {
- /* This is an autogenerated test */
- if (context.getComponent(COMPONENT_SAP_NETWEAVER) != null) {
- return Response.ok().build();
- }
- LOG.warnf("Could not load [%s] from the Camel context",
COMPONENT_SAP_NETWEAVER);
- return Response.status(500, COMPONENT_SAP_NETWEAVER + " could not be
loaded from the Camel context").build();
+ public String getSapNetweaverJson(@QueryParam("test-port") int port) {
+ return
producerTemplate.requestBodyAndHeader("sap-netweaver:http://localhost:" + port
+ "/sap/api/json", null,
+ NetWeaverConstants.COMMAND, SAP_COMMAND, String.class);
+ }
+
+ @GET
+ @Path("/xml")
+ @Produces(MediaType.TEXT_PLAIN)
+ public String getSapNetweaverXml(@QueryParam("test-port") int port) {
+ return
producerTemplate.requestBodyAndHeader("sap-netweaver:http://localhost:" + port
+ "/sap/api/xml?json=false", null,
+ NetWeaverConstants.COMMAND, SAP_COMMAND, String.class);
}
}
diff --git
a/extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
b/integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverRoutes.java
similarity index 52%
copy from
extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
copy to
integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverRoutes.java
index 224d9e5..0e07007 100644
---
a/extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
+++
b/integration-tests/sap-netweaver/src/main/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverRoutes.java
@@ -16,19 +16,26 @@
*/
package org.apache.camel.quarkus.component.sap.netweaver.it;
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
+import java.io.InputStream;
-@QuarkusTest
-class SapNetweaverTest {
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
- @Test
- public void loadComponentSapNetweaver() {
- /* A simple autogenerated test */
- RestAssured.get("/sap-netweaver/load/component/sap-netweaver")
- .then()
- .statusCode(200);
+public class SapNetweaverRoutes extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
from("netty-http:0.0.0.0:{{camel.netty.test-port}}/sap/api/json?matchOnUriPrefix=true")
+ .process(createProcessor("/flight-data.json"));
+
+
from("netty-http:0.0.0.0:{{camel.netty.test-port}}/sap/api/xml?matchOnUriPrefix=true")
+ .process(createProcessor("/flight-data.xml"));
}
+ private Processor createProcessor(String path) {
+ return exchange -> {
+ InputStream resource =
SapNetweaverRoutes.class.getResourceAsStream(path);
+ exchange.getMessage().setBody(resource);
+ };
+ }
}
diff --git
a/integration-tests/sap-netweaver/src/main/resources/application.properties
b/integration-tests/sap-netweaver/src/main/resources/application.properties
new file mode 100644
index 0000000..88691e4
--- /dev/null
+++ b/integration-tests/sap-netweaver/src/main/resources/application.properties
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+# Add test sources for native testing
+quarkus.camel.native.resources.include-patterns=flight-data.json,flight-data.xml
diff --git
a/integration-tests/sap-netweaver/src/main/resources/flight-data.json
b/integration-tests/sap-netweaver/src/main/resources/flight-data.json
new file mode 100644
index 0000000..92455cf
--- /dev/null
+++ b/integration-tests/sap-netweaver/src/main/resources/flight-data.json
@@ -0,0 +1,83 @@
+{
+ "@base":
"https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/",
+ "id":
"https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/FlightCollection",
+ "title": "FlightCollection",
+ "updated": "2018-04-27T08:41:31Z",
+ "author": {
+ "name": null
+ },
+ "link": {
+ "@href": "FlightCollection",
+ "@rel": "self",
+ "@title": "FlightCollection"
+ },
+ "entry": {
+ "id":
"https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')",
+ "title":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')",
+ "updated": "2018-04-27T08:41:31Z",
+ "category": {
+ "@term": "RMTSAMPLEFLIGHT.Flight",
+ "@scheme":
"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
+ },
+ "link": [
+ {
+ "@href":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')",
+ "@rel": "edit",
+ "@title": "Flight"
+ },
+ {
+ "@href":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/flightbooking",
+ "@rel":
"http://schemas.microsoft.com/ado/2007/08/dataservices/related/flightbooking",
+ "@title": "flightbooking"
+ },
+ {
+ "@href":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/flightBookings",
+ "@rel":
"http://schemas.microsoft.com/ado/2007/08/dataservices/related/flightBookings",
+ "@title": "flightBookings"
+ },
+ {
+ "@href":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/FlightCarrier",
+ "@rel":
"http://schemas.microsoft.com/ado/2007/08/dataservices/related/FlightCarrier",
+ "@title": "FlightCarrier"
+ },
+ {
+ "@href":
"FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/FlightCarrier_FW",
+ "@rel":
"http://schemas.microsoft.com/ado/2007/08/dataservices/related/FlightCarrier_FW",
+ "@title": "FlightCarrier_FW"
+ }
+ ],
+ "content": {
+ "properties": {
+ "flightDetails": {
+ "@type": "RMTSAMPLEFLIGHT.FlightDetails",
+ "countryFrom": "US",
+ "cityFrom": "new york",
+ "airportFrom": "JFK",
+ "countryTo": "US",
+ "cityTo": "SAN FRANCISCO",
+ "airportTo": "SFO",
+ "flightTime": "361",
+ "departureTime": "PT11H00M00S",
+ "arrivalTime": "PT14H01M00S",
+ "distance": "2572.0000",
+ "distanceUnit": "SMI",
+ "flightType": null,
+ "period": "0"
+ },
+ "carrid": "AA",
+ "connid": "0017",
+ "fldate": "2017-10-05T00:00:00",
+ "PRICE": "422.94",
+ "CURRENCY": "USD",
+ "PLANETYPE": "747-400",
+ "SEATSMAX": "385",
+ "SEATSOCC": "375",
+ "PAYMENTSUM": "194924.73",
+ "SEATSMAX_B": "31",
+ "SEATSOCC_B": "31",
+ "SEATSMAX_F": "21",
+ "SEATSOCC_F": "19"
+ }
+ }
+ }
+}
diff --git a/integration-tests/sap-netweaver/src/main/resources/flight-data.xml
b/integration-tests/sap-netweaver/src/main/resources/flight-data.xml
new file mode 100644
index 0000000..3d17a67
--- /dev/null
+++ b/integration-tests/sap-netweaver/src/main/resources/flight-data.xml
@@ -0,0 +1,76 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<feed xmlns="http://www.w3.org/2005/Atom"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xml:base="https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/">
+
<id>https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/FlightCollection</id>
+ <title type="text">FlightCollection</title>
+ <updated>2018-04-27T08:41:31Z</updated>
+ <author>
+ <name/>
+ </author>
+ <link href="FlightCollection" rel="self" title="FlightCollection"/>
+ <entry>
+
<id>https://sapes5.sapdevcenter.com/sap/opu/odata/IWFND/RMTSAMPLEFLIGHT/FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')
+ </id>
+ <title
type="text">FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')</title>
+ <updated>2018-04-27T08:41:31Z</updated>
+ <category term="RMTSAMPLEFLIGHT.Flight"
scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+ <link
href="FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')"
rel="edit" title="Flight"/>
+ <link
href="FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/flightbooking"
+
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/flightbooking"
type="application/atom+xml;type=entry" title="flightbooking"/>
+ <link
href="FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/flightBookings"
+
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/flightBookings"
type="application/atom+xml;type=feed" title="flightBookings"/>
+ <link
href="FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/FlightCarrier"
+
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/FlightCarrier"
type="application/atom+xml;type=entry" title="FlightCarrier"/>
+ <link
href="FlightCollection(carrid='AA',connid='0017',fldate=datetime'2017-10-05T00%3A00%3A00')/FlightCarrier_FW"
+
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/FlightCarrier_FW"
type="application/atom+xml;type=entry" title="FlightCarrier_FW"/>
+ <content type="application/xml">
+ <m:properties
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+ <d:flightDetails m:type="RMTSAMPLEFLIGHT.FlightDetails">
+ <d:countryFrom>US</d:countryFrom>
+ <d:cityFrom>new york</d:cityFrom>
+ <d:airportFrom>JFK</d:airportFrom>
+ <d:countryTo>US</d:countryTo>
+ <d:cityTo>SAN FRANCISCO</d:cityTo>
+ <d:airportTo>SFO</d:airportTo>
+ <d:flightTime>361</d:flightTime>
+ <d:departureTime>PT11H00M00S</d:departureTime>
+ <d:arrivalTime>PT14H01M00S</d:arrivalTime>
+ <d:distance>2572.0000</d:distance>
+ <d:distanceUnit>SMI</d:distanceUnit>
+ <d:flightType></d:flightType>
+ <d:period>0</d:period>
+ </d:flightDetails>
+ <d:carrid>AA</d:carrid>
+ <d:connid>0017</d:connid>
+ <d:fldate>2017-10-05T00:00:00</d:fldate>
+ <d:PRICE>422.94</d:PRICE>
+ <d:CURRENCY>USD</d:CURRENCY>
+ <d:PLANETYPE>747-400</d:PLANETYPE>
+ <d:SEATSMAX>385</d:SEATSMAX>
+ <d:SEATSOCC>375</d:SEATSOCC>
+ <d:PAYMENTSUM>194924.73</d:PAYMENTSUM>
+ <d:SEATSMAX_B>31</d:SEATSMAX_B>
+ <d:SEATSOCC_B>31</d:SEATSOCC_B>
+ <d:SEATSMAX_F>21</d:SEATSMAX_F>
+ <d:SEATSOCC_F>19</d:SEATSOCC_F>
+ </m:properties>
+ </content>
+ </entry>
+</feed>
diff --git
a/integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
b/integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
new file mode 100644
index 0000000..66c5f10
--- /dev/null
+++
b/integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.component.sap.netweaver.it;
+
+import io.quarkus.test.common.QuarkusTestResource;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.Matchers.containsString;
+
+@QuarkusTest
+@QuarkusTestResource(SapNetweaverTestResource.class)
+class SapNetweaverTest {
+
+ @Test
+ public void testSapNetweaverJson() {
+ final int port = Integer.getInteger("camel.netty.test-port");
+ RestAssured.given()
+ .queryParam("test-port", port)
+ .get("/sap-netweaver/json")
+ .then()
+ .statusCode(200)
+ .body(containsString("PRICE=422.94, CURRENCY=USD"));
+ }
+
+ @Test
+ public void testSapNetweaverXml() {
+ final int port = Integer.getInteger("camel.netty.test-port");
+ String body = RestAssured.given()
+ .queryParam("test-port", port)
+ .get("/sap-netweaver/xml")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .asString();
+
+ Assertions.assertTrue(body.contains("<d:PRICE>422.94</d:PRICE>"));
+ Assertions.assertTrue(body.contains("<d:CURRENCY>USD</d:CURRENCY>"));
+ }
+}
diff --git
a/extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
b/integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTestResource.java
similarity index 65%
rename from
extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
rename to
integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTestResource.java
index 224d9e5..fac3c5b 100644
---
a/extensions-jvm/sap-netweaver/integration-test/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTest.java
+++
b/integration-tests/sap-netweaver/src/test/java/org/apache/camel/quarkus/component/sap/netweaver/it/SapNetweaverTestResource.java
@@ -16,19 +16,20 @@
*/
package org.apache.camel.quarkus.component.sap.netweaver.it;
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
+import java.util.Map;
+import java.util.Objects;
-@QuarkusTest
-class SapNetweaverTest {
+import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
+import org.apache.camel.quarkus.test.AvailablePortFinder;
- @Test
- public void loadComponentSapNetweaver() {
- /* A simple autogenerated test */
- RestAssured.get("/sap-netweaver/load/component/sap-netweaver")
- .then()
- .statusCode(200);
+public class SapNetweaverTestResource implements
QuarkusTestResourceLifecycleManager {
+
+ @Override
+ public Map<String, String> start() {
+ return AvailablePortFinder.reserveNetworkPorts(Objects::toString,
"camel.netty.test-port");
}
+ @Override
+ public void stop() {
+ }
}