This is an automated email from the ASF dual-hosted git repository.
jamesnetherton 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 60efaa1 Add additional SOAP extension test coverage
60efaa1 is described below
commit 60efaa1f82c0cef14cff38ac6dd3bb5b2dceb643
Author: James Netherton <[email protected]>
AuthorDate: Fri May 7 10:42:21 2021 +0100
Add additional SOAP extension test coverage
Fixes #2561
---
.../component/soap/deployment/SoapProcessor.java | 54 +++++
extensions/soap/runtime/pom.xml | 8 +-
integration-tests/soap/pom.xml | 4 +
.../component/soap/it/SoapMultipartResource.java | 56 +++++
.../quarkus/component/soap/it/SoapResource.java | 111 ++++++++-
.../quarkus/component/soap/it/SoapRoutes.java | 106 ++++++++-
.../component/soap/it/example/ObjectFactory.java | 65 ------
.../Company.java} | 36 ++-
.../component/soap/it/multipart/CompanyType.java | 22 +-
.../component/soap/it/multipart/Customer.java | 108 +++++++++
.../component/soap/it/multipart/CustomerType.java | 22 +-
.../GetAllCustomersResponse.java} | 42 ++--
.../{example => multipart}/GetCustomersByName.java | 21 +-
.../GetCustomersByNameResponse.java} | 42 ++--
.../it/multipart/MultiPartCustomerService.java | 58 +++++
.../multipart/MultiPartCustomerServiceService.java | 57 +++++
.../NoSuchCustomer.java} | 36 +--
.../soap/it/multipart/NoSuchCustomerException.java | 52 +++++
.../component/soap/it/multipart/ObjectFactory.java | 135 +++++++++++
.../Product.java} | 37 ++-
.../SaveCustomer.java} | 36 +--
.../component/soap/it/multipart/package-info.java | 17 +-
.../component/soap/it/service/Customer.java | 108 +++++++++
.../component/soap/it/service/CustomerService.java | 50 +++++
.../soap/it/service/CustomerServiceService.java | 57 +++++
.../component/soap/it/service/CustomerType.java | 22 +-
.../GetAllAmericanCustomersResponse.java} | 42 ++--
.../GetAllCustomersResponse.java} | 42 ++--
.../{example => service}/GetCustomersByName.java | 21 +-
.../GetCustomersByNameResponse.java} | 42 ++--
.../NoSuchCustomer.java} | 36 +--
.../soap/it/service/NoSuchCustomerException.java | 52 +++++
.../component/soap/it/service/ObjectFactory.java | 124 +++++++++++
.../SaveCustomer.java} | 37 +--
.../component/soap/it/service/package-info.java | 17 +-
.../soap/src/main/resources/application.properties | 18 ++
.../src/main/resources/schema/CustomerService.xsd | 88 ++++++++
.../src/main/resources/wsdl/CustomerService.wsdl | 198 +++++++++++++++++
.../resources/wsdl/MultiPartCustomerService.wsdl | 247 +++++++++++++++++++++
.../camel/quarkus/component/soap/it/SoapTest.java | 147 ++++++++----
.../src/test/resources/getCustomersByName1.1.xml | 26 +++
.../src/test/resources/getCustomersByName1.2.xml | 26 +++
.../soap/src/test/resources/soapFault1.1.xml | 32 +++
.../soap/src/test/resources/soapFault1.2.xml | 34 +++
pom.xml | 6 +-
poms/bom-test/pom.xml | 5 +
poms/bom/pom.xml | 16 +-
47 files changed, 2103 insertions(+), 515 deletions(-)
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
index 839d62e..11846b7 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
@@ -16,8 +16,17 @@
*/
package org.apache.camel.quarkus.component.soap.deployment;
+import javax.xml.ws.WebFault;
+
+import io.quarkus.deployment.annotations.BuildProducer;
import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
+import
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
class SoapProcessor {
@@ -28,4 +37,49 @@ class SoapProcessor {
return new FeatureBuildItem(FEATURE);
}
+ @BuildStep
+ NativeImageResourceBuildItem nativeImageResources() {
+ return new NativeImageResourceBuildItem("soap.xsd", "soap12.xsd",
"xml.xsd");
+ }
+
+ @BuildStep
+ void serviceProviders(BuildProducer<ServiceProviderBuildItem>
serviceProvider) {
+ String[] soapVersions = new String[] { "1_1", "1_2" };
+ for (String version : soapVersions) {
+ serviceProvider.produce(
+ new ServiceProviderBuildItem(
+ "javax.xml.soap.MessageFactory",
+ "com.sun.xml.messaging.saaj.soap.ver" + version +
".SOAPMessageFactory" + version + "Impl"));
+
+ serviceProvider.produce(
+ new ServiceProviderBuildItem(
+ "javax.xml.soap.SOAPFactory",
+ "com.sun.xml.messaging.saaj.soap.ver" + version +
".SOAPFactory" + version + "Impl"));
+ }
+
+ serviceProvider.produce(
+ new ServiceProviderBuildItem(
+ "javax.xml.soap.SOAPConnectionFactory",
+
"com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"));
+
+ serviceProvider.produce(
+ new ServiceProviderBuildItem(
+ "javax.xml.soap.SAAJMetaFactory",
+
"com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl"));
+ }
+
+ @BuildStep
+ void registerForReflection(CombinedIndexBuildItem combinedIndex,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
+ IndexView index = combinedIndex.getIndex();
+
+ // Required for SOAP fault marshal / unmarshal
+ index.getAnnotations(DotName.createSimple(WebFault.class.getName()))
+ .stream()
+ .map(annotationInstance ->
annotationInstance.target().asClass())
+ .map(classInfo -> new ReflectiveClassBuildItem(true, false,
classInfo.name().toString()))
+ .forEach(reflectiveClass::produce);
+
+ reflectiveClass.produce(new ReflectiveClassBuildItem(false, false,
Exception.class));
+ }
+
}
diff --git a/extensions/soap/runtime/pom.xml b/extensions/soap/runtime/pom.xml
index 438bacb..57c2b19 100644
--- a/extensions/soap/runtime/pom.xml
+++ b/extensions/soap/runtime/pom.xml
@@ -62,8 +62,12 @@
</exclusions>
</dependency>
<dependency>
- <groupId>javax.xml.ws</groupId>
- <artifactId>jaxws-api</artifactId>
+ <groupId>jakarta.xml.ws</groupId>
+ <artifactId>jakarta.xml.ws-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.messaging.saaj</groupId>
+ <artifactId>saaj-impl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
diff --git a/integration-tests/soap/pom.xml b/integration-tests/soap/pom.xml
index 9db5186..7a09a0e 100644
--- a/integration-tests/soap/pom.xml
+++ b/integration-tests/soap/pom.xml
@@ -42,6 +42,10 @@
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy</artifactId>
</dependency>
+ <dependency>
+ <groupId>jakarta.jws</groupId>
+ <artifactId>jakarta.jws-api</artifactId>
+ </dependency>
<!-- test dependencies -->
<dependency>
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapMultipartResource.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapMultipartResource.java
new file mode 100644
index 0000000..d9ab873
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapMultipartResource.java
@@ -0,0 +1,56 @@
+/*
+ * 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.soap.it;
+
+import java.net.URI;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.quarkus.component.soap.it.multipart.GetCustomersByName;
+
+@Path("/soap")
+@ApplicationScoped
+public class SoapMultipartResource {
+
+ @Inject
+ ProducerTemplate producerTemplate;
+
+ @Path("/multipart")
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response multipart(String message) throws Exception {
+ GetCustomersByName request = new GetCustomersByName();
+ request.setName(message);
+ final String xml =
producerTemplate.requestBody("direct:marshalMultipart", request, String.class);
+
+ GetCustomersByName response =
producerTemplate.requestBody("direct:unmarshalMultipart", xml,
GetCustomersByName.class);
+
+ return Response
+ .created(new URI("https://camel.apache.org/"))
+ .entity(response.getName())
+ .build();
+ }
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapResource.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapResource.java
index fdf00d4..7d2295f 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapResource.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapResource.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.quarkus.component.soap.it;
-import java.awt.*;
import java.net.URI;
import javax.enterprise.context.ApplicationScoped;
@@ -28,9 +27,13 @@ import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import javax.xml.ws.soap.SOAPFaultException;
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.FluentProducerTemplate;
import org.apache.camel.ProducerTemplate;
-import org.apache.camel.quarkus.component.soap.it.example.GetCustomersByName;
+import org.apache.camel.quarkus.component.soap.it.service.GetCustomersByName;
+import
org.apache.camel.quarkus.component.soap.it.service.NoSuchCustomerException;
import org.jboss.logging.Logger;
@Path("/soap")
@@ -42,17 +45,41 @@ public class SoapResource {
@Inject
ProducerTemplate producerTemplate;
+ @Inject
+ FluentProducerTemplate fluentProducerTemplate;
+
@Path("/marshal/{soapVersion}")
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_XML)
- public Response marshall(@PathParam("soapVersion") String soapVersion,
String message) throws Exception {
+ public Response marshal(@PathParam("soapVersion") String soapVersion,
String message) throws Exception {
LOG.infof("Sending to soap: %s", message);
+
GetCustomersByName request = new GetCustomersByName();
request.setName(message);
- final String endpointUri = "direct:marshal" +
(soapVersion.equals("1.2") ? "-soap12" : "");
- final String response = producerTemplate.requestBody(endpointUri,
request, String.class);
+ final String response =
fluentProducerTemplate.toF("direct:marshal-%s", "soap" + soapVersion)
+ .withBody(request)
+ .request(String.class);
+
+ return Response
+ .created(new URI("https://camel.apache.org/"))
+ .entity(response)
+ .build();
+ }
+
+ @Path("/marshal/fault/{soapVersion}")
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.APPLICATION_XML)
+ public Response marshalFault(@PathParam("soapVersion") String soapVersion,
String message) throws Exception {
+ LOG.infof("Sending to soap: %s", message);
+ GetCustomersByName request = new GetCustomersByName();
+ request.setName(message);
+
+ final String response =
fluentProducerTemplate.toF("direct:marshal-fault-%s", "soap" + soapVersion)
+ .withBody(request)
+ .request(String.class);
return Response
.created(new URI("https://camel.apache.org/"))
@@ -65,8 +92,9 @@ public class SoapResource {
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public Response unmarshal(@PathParam("soapVersion") String soapVersion,
String message) throws Exception {
- final String endpointUri = "direct:unmarshal" +
(soapVersion.equals("1.2") ? "-soap12" : "");
- final GetCustomersByName response =
producerTemplate.requestBody(endpointUri, message, GetCustomersByName.class);
+ final GetCustomersByName response =
fluentProducerTemplate.toF("direct:unmarshal-%s", "soap" + soapVersion)
+ .withBody(message)
+ .request(GetCustomersByName.class);
return Response
.created(new URI("https://camel.apache.org/"))
@@ -74,18 +102,41 @@ public class SoapResource {
.build();
}
- @Path("/round")
+ @Path("/unmarshal/fault/{soapVersion}")
+ @POST
+ @Consumes(MediaType.APPLICATION_XML)
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response unmarshalFault(@PathParam("soapVersion") String
soapVersion, String message) throws Exception {
+ try {
+ final NoSuchCustomerException response = fluentProducerTemplate
+ .toF("direct:unmarshal-fault-%s", "soap" + soapVersion)
+ .withBody(message)
+ .request(NoSuchCustomerException.class);
+ } catch (CamelExecutionException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof SOAPFaultException) {
+ SOAPFaultException sfe = (SOAPFaultException) cause;
+ return Response
+ .created(new URI("https://camel.apache.org/"))
+ .entity(sfe.getMessage())
+ .build();
+ }
+ }
+ return Response.serverError().entity("Expected SOAPFaultException was
not thrown").build();
+ }
+
+ @Path("/marshal/unmarshal")
@POST
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.TEXT_PLAIN)
- public Response round(String message) throws Exception {
+ public Response marshalUnmarshal(String message) throws Exception {
LOG.infof("Sending to soap: %s", message);
GetCustomersByName request = new GetCustomersByName();
request.setName(message);
- final String xml = producerTemplate.requestBody("direct:marshal",
request, String.class);
+ final String xml =
producerTemplate.requestBody("direct:marshal-soap1.2", request, String.class);
LOG.infof("Got response from marshal: %s", xml);
- GetCustomersByName response =
producerTemplate.requestBody("direct:unmarshal", xml, GetCustomersByName.class);
+ GetCustomersByName response =
producerTemplate.requestBody("direct:unmarshal-soap1.2", xml,
GetCustomersByName.class);
LOG.infof("Got response from unmarshal: %s", response);
return Response
@@ -93,4 +144,42 @@ public class SoapResource {
.entity(response.getName())
.build();
}
+
+ @Path("/qname/strategy")
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response qnameStrategy(String message) throws Exception {
+ GetCustomersByName request = new GetCustomersByName();
+ request.setName(message);
+
+ final String xml =
producerTemplate.requestBody("direct:marshalQnameStrategy", request,
String.class);
+
+ GetCustomersByName response =
producerTemplate.requestBody("direct:unmarshalQnameStrategy", xml,
+ GetCustomersByName.class);
+
+ return Response
+ .created(new URI("https://camel.apache.org/"))
+ .entity(response.getName())
+ .build();
+ }
+
+ @Path("/serviceinterface/strategy")
+ @POST
+ @Consumes(MediaType.TEXT_PLAIN)
+ @Produces(MediaType.TEXT_PLAIN)
+ public Response serviceInterfaceStrategy(String message) throws Exception {
+ GetCustomersByName request = new GetCustomersByName();
+ request.setName(message);
+
+ final String xml =
producerTemplate.requestBody("direct:marshalServiceInterfaceStrategy", request,
String.class);
+
+ GetCustomersByName response =
producerTemplate.requestBody("direct:unmarshalServiceInterfaceStrategy", xml,
+ GetCustomersByName.class);
+
+ return Response
+ .created(new URI("https://camel.apache.org/"))
+ .entity(response.getName())
+ .build();
+ }
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapRoutes.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapRoutes.java
index 571308c..fb8221d 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapRoutes.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/SoapRoutes.java
@@ -16,28 +16,112 @@
*/
package org.apache.camel.quarkus.component.soap.it;
+import javax.inject.Named;
+import javax.xml.namespace.QName;
+
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.dataformat.soap.SoapJaxbDataFormat;
+import org.apache.camel.dataformat.soap.name.QNameStrategy;
+import org.apache.camel.dataformat.soap.name.ServiceInterfaceStrategy;
import org.apache.camel.dataformat.soap.name.TypeNameStrategy;
-import org.apache.camel.quarkus.component.soap.it.example.GetCustomersByName;
+import
org.apache.camel.quarkus.component.soap.it.multipart.MultiPartCustomerService;
+import org.apache.camel.quarkus.component.soap.it.service.CustomerService;
+import org.apache.camel.quarkus.component.soap.it.service.GetCustomersByName;
+import org.apache.camel.quarkus.component.soap.it.service.NoSuchCustomer;
+import
org.apache.camel.quarkus.component.soap.it.service.NoSuchCustomerException;
public class SoapRoutes extends RouteBuilder {
+ private static final String SERVICE_CUSTOMERS_BY_NAME_PACKAGE =
GetCustomersByName.class.getPackage().getName();
+ private static final String MULTIPART_CUSTOMERS_BY_NAME_PACKAGE =
org.apache.camel.quarkus.component.soap.it.multipart.GetCustomersByName.class
+ .getPackage().getName();
+
@Override
public void configure() {
- final String soapPackage =
GetCustomersByName.class.getPackage().getName();
- SoapJaxbDataFormat soap = new SoapJaxbDataFormat(soapPackage, new
TypeNameStrategy());
+ from("direct:marshal-soap1.1")
+ .marshal("soapDataFormat");
+
+ from("direct:unmarshal-soap1.1")
+ .unmarshal("soapDataFormat");
+
+ from("direct:marshal-fault-soap1.1")
+ .onException(Exception.class)
+ .handled(true)
+ .marshal("soapDataFormat")
+ .end()
+ .process(createSoapFaultProcessor());
+
+ from("direct:unmarshal-fault-soap1.1")
+ .unmarshal("soapDataFormat");
+
+ from("direct:unmarshalServiceInterfaceStrategy")
+ .unmarshal("soapDataFormatWithServiceInterfaceStrategy");
+
+ from("direct:marshalServiceInterfaceStrategy")
+ .marshal("soapDataFormatWithServiceInterfaceStrategy");
+
+ from("direct:marshalQnameStrategy")
+ .marshal("soapDataFormatWithQNameStrategy");
+
+ from("direct:unmarshalQnameStrategy")
+ .unmarshal("soapDataFormatWithQNameStrategy");
+
+ from("direct:marshal-soap1.2")
+ .marshal().soapjaxb12(SERVICE_CUSTOMERS_BY_NAME_PACKAGE);
+
+ from("direct:unmarshal-soap1.2")
+ .unmarshal().soapjaxb12(SERVICE_CUSTOMERS_BY_NAME_PACKAGE);
- from("direct:marshal")
- .marshal(soap);
+ from("direct:unmarshal-fault-soap1.2")
+ .unmarshal().soapjaxb12(SERVICE_CUSTOMERS_BY_NAME_PACKAGE);
- from("direct:unmarshal")
- .unmarshal(soap);
+ from("direct:marshal-fault-soap1.2")
+ .onException(Exception.class)
+ .handled(true)
+ .marshal().soapjaxb12(SERVICE_CUSTOMERS_BY_NAME_PACKAGE)
+ .end()
+ .process(createSoapFaultProcessor());
- from("direct:marshal-soap12")
- .marshal().soapjaxb12(soapPackage);
+ from("direct:marshalMultipart")
+ .marshal("soapJaxbDataFormatMultipart");
+
+ from("direct:unmarshalMultipart")
+ .unmarshal("soapJaxbDataFormatMultipart");
+ }
+
+ @Named("soapDataFormat")
+ public SoapJaxbDataFormat soapJaxbDataFormat() {
+ SoapJaxbDataFormat soapJaxbDataFormat = new
SoapJaxbDataFormat(SERVICE_CUSTOMERS_BY_NAME_PACKAGE,
+ new TypeNameStrategy());
+
soapJaxbDataFormat.setSchema("classpath:/schema/CustomerService.xsd,classpath:/soap.xsd");
+ return soapJaxbDataFormat;
+ }
+
+ @Named("soapDataFormatWithQNameStrategy")
+ public SoapJaxbDataFormat soapJaxbDataFormatQnameStrategy() {
+ QName qName = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
"getCustomersByName");
+ return new SoapJaxbDataFormat(SERVICE_CUSTOMERS_BY_NAME_PACKAGE, new
QNameStrategy(qName));
+ }
+
+ @Named("soapDataFormatWithServiceInterfaceStrategy")
+ public SoapJaxbDataFormat soapJaxbDataFormatServiceInterfaceStrategy() {
+ return new SoapJaxbDataFormat(SERVICE_CUSTOMERS_BY_NAME_PACKAGE,
+ new ServiceInterfaceStrategy(CustomerService.class, true));
+ }
+
+ @Named("soapJaxbDataFormatMultipart")
+ public SoapJaxbDataFormat soapJaxbDataFormatMultipart() {
+ return new SoapJaxbDataFormat(MULTIPART_CUSTOMERS_BY_NAME_PACKAGE,
+ new ServiceInterfaceStrategy(MultiPartCustomerService.class,
true));
+ }
- from("direct:unmarshal-soap12")
- .unmarshal().soapjaxb12(soapPackage);
+ private Processor createSoapFaultProcessor() {
+ return e -> {
+ GetCustomersByName request =
e.getMessage().getBody(GetCustomersByName.class);
+ NoSuchCustomer nsc = new NoSuchCustomer();
+ nsc.setCustomerId(request.getName());
+ throw new NoSuchCustomerException("Specified customer was not
found", nsc);
+ };
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/ObjectFactory.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/ObjectFactory.java
deleted file mode 100644
index a26ffe7..0000000
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/ObjectFactory.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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.soap.it.example;
-
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.annotation.XmlElementDecl;
-import javax.xml.bind.annotation.XmlRegistry;
-import javax.xml.namespace.QName;
-
-/**
- * This object contains factory methods for each
- * Java content interface and Java element interface
- * generated in the com.example.customerservice.multipart package.
- * <p>
- * An ObjectFactory allows you to programatically
- * construct new instances of the Java representation
- * for XML content. The Java representation of XML
- * content can consist of schema derived interfaces
- * and classes representing the binding of schema
- * type definitions, element declarations and model
- * groups. Factory methods for each of these are
- * provided in this class.
- *
- */
-@XmlRegistry
-public class ObjectFactory {
-
- private final static QName _GetCustomersByName_QNAME = new QName(
- "http://example.it.soap.component.quarkus.camel.apache.org/",
- "getCustomersByName");
-
- /**
- * Create a new ObjectFactory that can be used to create new instances of
schema derived classes for package:
- * com.example.customerservice
- * .multipart
- */
- public ObjectFactory() {
- }
-
- /**
- * Create an instance of {@link GetCustomersByName }
- */
- public GetCustomersByName createGetCustomersByName() {
- return new GetCustomersByName();
- }
-
- @XmlElementDecl(namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", name =
"getCustomersByName")
- public JAXBElement<GetCustomersByName>
createGetCustomersByName(GetCustomersByName value) {
- return new JAXBElement<GetCustomersByName>(_GetCustomersByName_QNAME,
GetCustomersByName.class, null, value);
- }
-}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Company.java
similarity index 67%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Company.java
index 41b4e8e..59e4abd 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Company.java
@@ -14,42 +14,38 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "company", propOrder = {
+ "name",
+ "president"
})
-public class GetCustomersByName {
+public class Company {
+ @XmlElement(required = true)
protected String name;
+ @XmlElement(required = true)
+ protected String president;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
public String getName() {
return name;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
public void setName(String value) {
this.name = value;
}
+ public String getPresident() {
+ return president;
+ }
+
+ public void setPresident(String value) {
+ this.president = value;
+ }
}
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CompanyType.java
similarity index 68%
copy from
extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CompanyType.java
index 839d62e..8309c25 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CompanyType.java
@@ -14,18 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.deployment;
+package org.apache.camel.quarkus.component.soap.it.multipart;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
-class SoapProcessor {
+@XmlType(name = "companyType")
+@XmlEnum
+public enum CompanyType {
- private static final String FEATURE = "camel-soap";
+ PRIVATE,
+ PUBLIC;
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
+ public String value() {
+ return name();
+ }
+
+ public static CompanyType fromValue(String v) {
+ return valueOf(v);
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Customer.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Customer.java
new file mode 100644
index 0000000..a0c0a98
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Customer.java
@@ -0,0 +1,108 @@
+/*
+ * 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.soap.it.multipart;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "customer", propOrder = {
+ "name",
+ "address",
+ "numOrders",
+ "revenue",
+ "test",
+ "birthDate",
+ "type"
+})
+public class Customer {
+
+ protected String name;
+ @XmlElement(nillable = true)
+ protected List<String> address;
+ protected int numOrders;
+ protected double revenue;
+ protected BigDecimal test;
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar birthDate;
+ @XmlSchemaType(name = "string")
+ protected CustomerType type;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ public List<String> getAddress() {
+ if (address == null) {
+ address = new ArrayList<>();
+ }
+ return this.address;
+ }
+
+ public int getNumOrders() {
+ return numOrders;
+ }
+
+ public void setNumOrders(int value) {
+ this.numOrders = value;
+ }
+
+ public double getRevenue() {
+ return revenue;
+ }
+
+ public void setRevenue(double value) {
+ this.revenue = value;
+ }
+
+ public BigDecimal getTest() {
+ return test;
+ }
+
+ public void setTest(BigDecimal value) {
+ this.test = value;
+ }
+
+ public XMLGregorianCalendar getBirthDate() {
+ return birthDate;
+ }
+
+ public void setBirthDate(XMLGregorianCalendar value) {
+ this.birthDate = value;
+ }
+
+ public CustomerType getType() {
+ return type;
+ }
+
+ public void setType(CustomerType value) {
+ this.type = value;
+ }
+
+}
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CustomerType.java
similarity index 68%
copy from
extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CustomerType.java
index 839d62e..fd6d635 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/CustomerType.java
@@ -14,18 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.deployment;
+package org.apache.camel.quarkus.component.soap.it.multipart;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
-class SoapProcessor {
+@XmlType(name = "customerType")
+@XmlEnum
+public enum CustomerType {
- private static final String FEATURE = "camel-soap";
+ PRIVATE,
+ BUSINESS;
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
+ public String value() {
+ return name();
+ }
+
+ public static CustomerType fromValue(String v) {
+ return valueOf(v);
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetAllCustomersResponse.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetAllCustomersResponse.java
index 41b4e8e..4950746 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetAllCustomersResponse.java
@@ -14,42 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
+
+import java.util.ArrayList;
+import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "getAllCustomersResponse", propOrder = {
+ "_return"
})
-public class GetCustomersByName {
-
- protected String name;
+public class GetAllCustomersResponse {
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
- }
+ @XmlElement(name = "return")
+ protected List<Customer> _return;
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public List<Customer> getReturn() {
+ if (_return == null) {
+ _return = new ArrayList<>();
+ }
+ return this._return;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByName.java
similarity index 70%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByName.java
index 41b4e8e..ad6d2c2 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByName.java
@@ -14,42 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
+@XmlType(name = "getCustomersByName", propOrder = {
"name"
})
public class GetCustomersByName {
protected String name;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
public String getName() {
return name;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
public void setName(String value) {
this.name = value;
}
-
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByNameResponse.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByNameResponse.java
index 41b4e8e..27c5663 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/GetCustomersByNameResponse.java
@@ -14,42 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
+
+import java.util.ArrayList;
+import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "getCustomersByNameResponse", propOrder = {
+ "_return"
})
-public class GetCustomersByName {
-
- protected String name;
+public class GetCustomersByNameResponse {
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
- }
+ @XmlElement(name = "return")
+ protected List<Customer> _return;
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public List<Customer> getReturn() {
+ if (_return == null) {
+ _return = new ArrayList<Customer>();
+ }
+ return this._return;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerService.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerService.java
new file mode 100644
index 0000000..2e77b24
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerService.java
@@ -0,0 +1,58 @@
+/*
+ * 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.soap.it.multipart;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@WebService(targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"MultiPartCustomerService")
+@XmlSeeAlso({ ObjectFactory.class })
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface MultiPartCustomerService {
+
+ @WebMethod(action =
"http://multipart.it.soap.component.quarkus.camel.apache.org/saveCustomerToo")
+ public void saveCustomerToo(
+
+ @WebParam(partName = "parameters", name = "saveCustomerToo",
targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/") SaveCustomer
parameters,
+ @WebParam(partName = "product", name = "product", targetNamespace
= "http://multipart.it.soap.component.quarkus.camel.apache.org/", header =
true) Product product,
+ @WebParam(partName = "company", mode = WebParam.Mode.INOUT, name =
"company", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", header = true)
javax.xml.ws.Holder<Company> company);
+
+ @WebMethod(action =
"http://multipart.it.soap.component.quarkus.camel.apache.org/saveCustomer")
+ public void saveCustomer(
+
+ @WebParam(partName = "parameters", name = "saveCustomer",
targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/") SaveCustomer
parameters,
+ @WebParam(partName = "product", name = "product", targetNamespace
= "http://multipart.it.soap.component.quarkus.camel.apache.org/", header =
true) Product product,
+ @WebParam(partName = "company", mode = WebParam.Mode.INOUT, name =
"company", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", header = true)
javax.xml.ws.Holder<Company> company);
+
+ @WebMethod(action =
"http://multipart.it.soap.component.quarkus.camel.apache.org/getCustomersByName")
+ @WebResult(name = "getCustomersByNameResponse", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", partName =
"parameters")
+ public GetCustomersByNameResponse getCustomersByName(
+
+ @WebParam(partName = "parameters", name = "getCustomersByName",
targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
GetCustomersByName parameters,
+ @WebParam(partName = "product", name = "product", targetNamespace
= "http://multipart.it.soap.component.quarkus.camel.apache.org/", header =
true) Product product)
+ throws NoSuchCustomerException;
+
+ @WebMethod(action =
"http://multipart.it.soap.component.quarkus.camel.apache.org/getAllCustomers")
+ public void getAllCustomers(
+
+ @WebParam(partName = "parameters", mode = WebParam.Mode.OUT, name
= "getAllCustomersResponse", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
javax.xml.ws.Holder<GetAllCustomersResponse> parameters,
+ @WebParam(partName = "companyType", mode = WebParam.Mode.OUT, name
= "companyType", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
javax.xml.ws.Holder<CompanyType> companyType);
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerServiceService.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerServiceService.java
new file mode 100644
index 0000000..b959ee8
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/MultiPartCustomerServiceService.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.soap.it.multipart;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+@WebServiceClient(name = "MultiPartCustomerServiceService", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
+public class MultiPartCustomerServiceService extends Service {
+
+ public final static QName SERVICE = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "MultiPartCustomerServiceService");
+ public final static QName MultiPartCustomerServicePort = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"MultiPartCustomerServicePort");
+
+ public MultiPartCustomerServiceService(URL wsdlLocation) {
+ super(wsdlLocation, SERVICE);
+ }
+
+ public MultiPartCustomerServiceService(URL wsdlLocation, QName
serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public MultiPartCustomerServiceService() {
+
super(Thread.currentThread().getContextClassLoader().getResource("/wsdl/MultiPartCustomerService.wsdl"),
SERVICE);
+ }
+
+ @WebEndpoint(name = "MultiPartCustomerServicePort")
+ public MultiPartCustomerService getMultiPartCustomerServicePort() {
+ return super.getPort(MultiPartCustomerServicePort,
MultiPartCustomerService.class);
+ }
+
+ @WebEndpoint(name = "MultiPartCustomerServicePort")
+ public MultiPartCustomerService
getMultiPartCustomerServicePort(WebServiceFeature... features) {
+ return super.getPort(MultiPartCustomerServicePort,
MultiPartCustomerService.class, features);
+ }
+
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomer.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomer.java
index 41b4e8e..a7219de 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomer.java
@@ -14,42 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "NoSuchCustomer", propOrder = {
+ "customerId"
})
-public class GetCustomersByName {
+public class NoSuchCustomer {
- protected String name;
+ @XmlElement(required = true, nillable = true)
+ protected String customerId;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
+ public String getCustomerId() {
+ return customerId;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public void setCustomerId(String value) {
+ this.customerId = value;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomerException.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomerException.java
new file mode 100644
index 0000000..9d1b494
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/NoSuchCustomerException.java
@@ -0,0 +1,52 @@
+/*
+ * 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.soap.it.multipart;
+
+import javax.xml.ws.WebFault;
+
+@WebFault(name = "NoSuchCustomer", targetNamespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
+public class NoSuchCustomerException extends Exception {
+ public static final long serialVersionUID = 1L;
+
+ private NoSuchCustomer faultInfo;
+
+ public NoSuchCustomerException() {
+ super();
+ }
+
+ public NoSuchCustomerException(String message) {
+ super(message);
+ }
+
+ public NoSuchCustomerException(String message, java.lang.Throwable cause) {
+ super(message, cause);
+ }
+
+ public NoSuchCustomerException(String message, NoSuchCustomer
noSuchCustomer) {
+ super(message);
+ this.faultInfo = noSuchCustomer;
+ }
+
+ public NoSuchCustomerException(String message, NoSuchCustomer
noSuchCustomer, java.lang.Throwable cause) {
+ super(message, cause);
+ this.faultInfo = noSuchCustomer;
+ }
+
+ public NoSuchCustomer getFaultInfo() {
+ return this.faultInfo;
+ }
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/ObjectFactory.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/ObjectFactory.java
new file mode 100644
index 0000000..9757804
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/ObjectFactory.java
@@ -0,0 +1,135 @@
+/*
+ * 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.soap.it.multipart;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _GetCustomersByName_QNAME = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"getCustomersByName");
+ private final static QName _GetCustomersByNameResponse_QNAME = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"getCustomersByNameResponse");
+ private final static QName _NoSuchCustomer_QNAME = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "NoSuchCustomer");
+ private final static QName _GetAllCustomers_QNAME = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"getAllCustomers");
+ private final static QName _GetAllCustomersResponse_QNAME = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"getAllCustomersResponse");
+ private final static QName _SaveCustomer_QNAME = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "saveCustomer");
+ private final static QName _SaveCustomerToo_QNAME = new QName(
+ "http://multipart.it.soap.component.quarkus.camel.apache.org/",
"saveCustomerToo");
+ private final static QName _Company_QNAME = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "company");
+ private final static QName _CompanyType_QNAME = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "companyType");
+ private final static QName _Product_QNAME = new
QName("http://multipart.it.soap.component.quarkus.camel.apache.org/",
+ "product");
+
+ public ObjectFactory() {
+ }
+
+ public GetCustomersByName createGetCustomersByName() {
+ return new GetCustomersByName();
+ }
+
+ public GetCustomersByNameResponse createGetCustomersByNameResponse() {
+ return new GetCustomersByNameResponse();
+ }
+
+ public NoSuchCustomer createNoSuchCustomer() {
+ return new NoSuchCustomer();
+ }
+
+ public GetAllCustomersResponse createGetAllCustomersResponse() {
+ return new GetAllCustomersResponse();
+ }
+
+ public SaveCustomer createSaveCustomer() {
+ return new SaveCustomer();
+ }
+
+ public Company createCompany() {
+ return new Company();
+ }
+
+ public Product createProduct() {
+ return new Product();
+ }
+
+ public Customer createCustomer() {
+ return new Customer();
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"getCustomersByName")
+ public JAXBElement<GetCustomersByName>
createGetCustomersByName(GetCustomersByName value) {
+ return new JAXBElement<GetCustomersByName>(_GetCustomersByName_QNAME,
GetCustomersByName.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"getCustomersByNameResponse")
+ public JAXBElement<GetCustomersByNameResponse>
createGetCustomersByNameResponse(GetCustomersByNameResponse value) {
+ return new
JAXBElement<GetCustomersByNameResponse>(_GetCustomersByNameResponse_QNAME,
GetCustomersByNameResponse.class,
+ null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"NoSuchCustomer")
+ public JAXBElement<NoSuchCustomer> createNoSuchCustomer(NoSuchCustomer
value) {
+ return new JAXBElement<NoSuchCustomer>(_NoSuchCustomer_QNAME,
NoSuchCustomer.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"getAllCustomers")
+ public JAXBElement<Object> createGetAllCustomers(Object value) {
+ return new JAXBElement<Object>(_GetAllCustomers_QNAME, Object.class,
null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"getAllCustomersResponse")
+ public JAXBElement<GetAllCustomersResponse>
createGetAllCustomersResponse(GetAllCustomersResponse value) {
+ return new
JAXBElement<GetAllCustomersResponse>(_GetAllCustomersResponse_QNAME,
GetAllCustomersResponse.class, null,
+ value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"saveCustomer")
+ public JAXBElement<SaveCustomer> createSaveCustomer(SaveCustomer value) {
+ return new JAXBElement<SaveCustomer>(_SaveCustomer_QNAME,
SaveCustomer.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"saveCustomerToo")
+ public JAXBElement<SaveCustomer> createSaveCustomerToo(SaveCustomer value)
{
+ return new JAXBElement<SaveCustomer>(_SaveCustomerToo_QNAME,
SaveCustomer.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"company")
+ public JAXBElement<Company> createCompany(Company value) {
+ return new JAXBElement<Company>(_Company_QNAME, Company.class, null,
value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"companyType")
+ public JAXBElement<CompanyType> createCompanyType(CompanyType value) {
+ return new JAXBElement<CompanyType>(_CompanyType_QNAME,
CompanyType.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/", name =
"product")
+ public JAXBElement<Product> createProduct(Product value) {
+ return new JAXBElement<Product>(_Product_QNAME, Product.class, null,
value);
+ }
+
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Product.java
similarity index 67%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Product.java
index 41b4e8e..9bc4c8f 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/Product.java
@@ -14,42 +14,39 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "product", propOrder = {
+ "name",
+ "description"
})
-public class GetCustomersByName {
+public class Product {
+ @XmlElement(required = true)
protected String name;
+ @XmlElement(required = true)
+ protected String description;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
public String getName() {
return name;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
public void setName(String value) {
this.name = value;
}
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String value) {
+ this.description = value;
+ }
+
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/SaveCustomer.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/SaveCustomer.java
index 41b4e8e..300237f 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/SaveCustomer.java
@@ -14,42 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.multipart;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "saveCustomer", propOrder = {
+ "customer"
})
-public class GetCustomersByName {
+public class SaveCustomer {
- protected String name;
+ @XmlElement(required = true)
+ protected Customer customer;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
+ public Customer getCustomer() {
+ return customer;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public void setCustomer(Customer value) {
+ this.customer = value;
}
}
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/package-info.java
similarity index 69%
copy from
extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/package-info.java
index 839d62e..0d304a4 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/multipart/package-info.java
@@ -14,18 +14,5 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-
-class SoapProcessor {
-
- private static final String FEATURE = "camel-soap";
-
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
- }
-
-}
[email protected](namespace =
"http://multipart.it.soap.component.quarkus.camel.apache.org/")
+package org.apache.camel.quarkus.component.soap.it.multipart;
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/Customer.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/Customer.java
new file mode 100644
index 0000000..c15e8ed
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/Customer.java
@@ -0,0 +1,108 @@
+/*
+ * 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.soap.it.service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "customer", propOrder = {
+ "name",
+ "address",
+ "numOrders",
+ "revenue",
+ "test",
+ "birthDate",
+ "type"
+})
+public class Customer {
+
+ protected String name;
+ @XmlElement(nillable = true)
+ protected List<String> address;
+ protected int numOrders;
+ protected double revenue;
+ protected BigDecimal test;
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar birthDate;
+ @XmlSchemaType(name = "string")
+ protected CustomerType type;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String value) {
+ this.name = value;
+ }
+
+ public List<String> getAddress() {
+ if (address == null) {
+ address = new ArrayList<>();
+ }
+ return this.address;
+ }
+
+ public int getNumOrders() {
+ return numOrders;
+ }
+
+ public void setNumOrders(int value) {
+ this.numOrders = value;
+ }
+
+ public double getRevenue() {
+ return revenue;
+ }
+
+ public void setRevenue(double value) {
+ this.revenue = value;
+ }
+
+ public BigDecimal getTest() {
+ return test;
+ }
+
+ public void setTest(BigDecimal value) {
+ this.test = value;
+ }
+
+ public XMLGregorianCalendar getBirthDate() {
+ return birthDate;
+ }
+
+ public void setBirthDate(XMLGregorianCalendar value) {
+ this.birthDate = value;
+ }
+
+ public CustomerType getType() {
+ return type;
+ }
+
+ public void setType(CustomerType value) {
+ this.type = value;
+ }
+
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerService.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerService.java
new file mode 100644
index 0000000..01ac8a4
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerService.java
@@ -0,0 +1,50 @@
+/*
+ * 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.soap.it.service;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+@WebService(targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"CustomerService")
+@XmlSeeAlso({ ObjectFactory.class })
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+public interface CustomerService {
+
+ @WebMethod(action =
"http://service.it.soap.component.quarkus.camel.apache.org/getAllAmericanCustomers")
+ @WebResult(name = "getAllAmericanCustomersResponse", targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", partName =
"parameters")
+ public GetAllAmericanCustomersResponse getAllAmericanCustomers();
+
+ @WebMethod(action =
"http://service.it.soap.component.quarkus.camel.apache.org/saveCustomer")
+ public void saveCustomer(
+
+ @WebParam(partName = "parameters", name = "saveCustomer",
targetNamespace = "http://service.it.soap.component.quarkus.camel.apache.org/")
SaveCustomer parameters);
+
+ @WebMethod(action =
"http://service.it.soap.component.quarkus.camel.apache.org/getCustomersByName")
+ @WebResult(name = "getCustomersByNameResponse", targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", partName =
"parameters")
+ public GetCustomersByNameResponse getCustomersByName(
+
+ @WebParam(partName = "parameters", name = "getCustomersByName",
targetNamespace = "http://service.it.soap.component.quarkus.camel.apache.org/")
GetCustomersByName parameters)
+ throws NoSuchCustomerException;
+
+ @WebMethod(action =
"http://service.it.soap.component.quarkus.camel.apache.org/getAllCustomers")
+ @WebResult(name = "getAllCustomersResponse", targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", partName =
"parameters")
+ public GetAllCustomersResponse getAllCustomers();
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerServiceService.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerServiceService.java
new file mode 100644
index 0000000..e34f5e0
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerServiceService.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.soap.it.service;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+@WebServiceClient(name = "CustomerServiceService", targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/")
+public class CustomerServiceService extends Service {
+
+ public final static QName SERVICE = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
+ "CustomerServiceService");
+ public final static QName CustomerServicePort = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
+ "CustomerServicePort");
+
+ public CustomerServiceService(URL wsdlLocation) {
+ super(wsdlLocation, SERVICE);
+ }
+
+ public CustomerServiceService(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public CustomerServiceService() {
+
super(Thread.currentThread().getContextClassLoader().getResource("/wsdl/CustomerService.wsdl"),
SERVICE);
+ }
+
+ @WebEndpoint(name = "CustomerServicePort")
+ public CustomerService getCustomerServicePort() {
+ return super.getPort(CustomerServicePort, CustomerService.class);
+ }
+
+ @WebEndpoint(name = "CustomerServicePort")
+ public CustomerService getCustomerServicePort(WebServiceFeature...
features) {
+ return super.getPort(CustomerServicePort, CustomerService.class,
features);
+ }
+
+}
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerType.java
similarity index 68%
copy from
extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerType.java
index 839d62e..bc1baab 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/CustomerType.java
@@ -14,18 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.deployment;
+package org.apache.camel.quarkus.component.soap.it.service;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlType;
-class SoapProcessor {
+@XmlType(name = "customerType")
+@XmlEnum
+public enum CustomerType {
- private static final String FEATURE = "camel-soap";
+ PRIVATE,
+ BUSINESS;
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
+ public String value() {
+ return name();
+ }
+
+ public static CustomerType fromValue(String v) {
+ return valueOf(v);
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllAmericanCustomersResponse.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllAmericanCustomersResponse.java
index 41b4e8e..ab00feb 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllAmericanCustomersResponse.java
@@ -14,42 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
+
+import java.util.ArrayList;
+import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "getAllAmericanCustomersResponse", propOrder = {
+ "_return"
})
-public class GetCustomersByName {
-
- protected String name;
+public class GetAllAmericanCustomersResponse {
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
- }
+ @XmlElement(name = "return")
+ protected List<Customer> _return;
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public List<Customer> getReturn() {
+ if (_return == null) {
+ _return = new ArrayList<>();
+ }
+ return this._return;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllCustomersResponse.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllCustomersResponse.java
index 41b4e8e..3cfb302 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetAllCustomersResponse.java
@@ -14,42 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
+
+import java.util.ArrayList;
+import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "getAllCustomersResponse", propOrder = {
+ "_return"
})
-public class GetCustomersByName {
-
- protected String name;
+public class GetAllCustomersResponse {
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
- }
+ @XmlElement(name = "return")
+ protected List<Customer> _return;
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public List<Customer> getReturn() {
+ if (_return == null) {
+ _return = new ArrayList<>();
+ }
+ return this._return;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByName.java
similarity index 73%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByName.java
index 41b4e8e..b91c675 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByName.java
@@ -14,42 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
+@XmlType(name = "getCustomersByName", namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", propOrder = {
"name"
})
public class GetCustomersByName {
protected String name;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
public String getName() {
return name;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
public void setName(String value) {
this.name = value;
}
-
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByNameResponse.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByNameResponse.java
index 41b4e8e..105eea7 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/GetCustomersByNameResponse.java
@@ -14,42 +14,30 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
+
+import java.util.ArrayList;
+import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "getCustomersByNameResponse", propOrder = {
+ "_return"
})
-public class GetCustomersByName {
-
- protected String name;
+public class GetCustomersByNameResponse {
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
- }
+ @XmlElement(name = "return")
+ protected List<Customer> _return;
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public List<Customer> getReturn() {
+ if (_return == null) {
+ _return = new ArrayList<>();
+ }
+ return this._return;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomer.java
similarity index 58%
copy from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomer.java
index 41b4e8e..8422dc9 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomer.java
@@ -14,42 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "NoSuchCustomer", propOrder = {
+ "customerId"
})
-public class GetCustomersByName {
+public class NoSuchCustomer {
- protected String name;
+ @XmlElement(required = true, nillable = true)
+ protected String customerId;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
+ public String getCustomerId() {
+ return customerId;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public void setCustomerId(String value) {
+ this.customerId = value;
}
}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomerException.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomerException.java
new file mode 100644
index 0000000..921d462
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/NoSuchCustomerException.java
@@ -0,0 +1,52 @@
+/*
+ * 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.soap.it.service;
+
+import javax.xml.ws.WebFault;
+
+@WebFault(name = "NoSuchCustomer", targetNamespace =
"http://service.it.soap.component.quarkus.camel.apache.org/")
+public class NoSuchCustomerException extends Exception {
+ public static final long serialVersionUID = 1L;
+
+ private NoSuchCustomer faultInfo;
+
+ public NoSuchCustomerException() {
+ super();
+ }
+
+ public NoSuchCustomerException(String message) {
+ super(message);
+ }
+
+ public NoSuchCustomerException(String message, java.lang.Throwable cause) {
+ super(message, cause);
+ }
+
+ public NoSuchCustomerException(String message, NoSuchCustomer
noSuchCustomer) {
+ super(message);
+ this.faultInfo = noSuchCustomer;
+ }
+
+ public NoSuchCustomerException(String message, NoSuchCustomer
noSuchCustomer, java.lang.Throwable cause) {
+ super(message, cause);
+ this.faultInfo = noSuchCustomer;
+ }
+
+ public NoSuchCustomer getFaultInfo() {
+ return this.faultInfo;
+ }
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/ObjectFactory.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/ObjectFactory.java
new file mode 100644
index 0000000..72741b5
--- /dev/null
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/ObjectFactory.java
@@ -0,0 +1,124 @@
+/*
+ * 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.soap.it.service;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _GetCustomersByName_QNAME = new QName(
+ "http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getCustomersByName");
+ private final static QName _GetCustomersByNameResponse_QNAME = new QName(
+ "http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getCustomersByNameResponse");
+ private final static QName _NoSuchCustomer_QNAME = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
+ "NoSuchCustomer");
+ private final static QName _GetAllCustomers_QNAME = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getAllCustomers");
+ private final static QName _GetAllCustomersResponse_QNAME = new QName(
+ "http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getAllCustomersResponse");
+ private final static QName _GetAllAmericanCustomers_QNAME = new QName(
+ "http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getAllAmericanCustomers");
+ private final static QName _GetAllAmericanCustomersResponse_QNAME = new
QName(
+ "http://service.it.soap.component.quarkus.camel.apache.org/",
+ "getAllAmericanCustomersResponse");
+ private final static QName _SaveCustomer_QNAME = new
QName("http://service.it.soap.component.quarkus.camel.apache.org/",
+ "saveCustomer");
+
+ public ObjectFactory() {
+ }
+
+ public GetCustomersByName createGetCustomersByName() {
+ return new GetCustomersByName();
+ }
+
+ public GetCustomersByNameResponse createGetCustomersByNameResponse() {
+ return new GetCustomersByNameResponse();
+ }
+
+ public NoSuchCustomer createNoSuchCustomer() {
+ return new NoSuchCustomer();
+ }
+
+ public GetAllCustomersResponse createGetAllCustomersResponse() {
+ return new GetAllCustomersResponse();
+ }
+
+ public GetAllAmericanCustomersResponse
createGetAllAmericanCustomersResponse() {
+ return new GetAllAmericanCustomersResponse();
+ }
+
+ public SaveCustomer createSaveCustomer() {
+ return new SaveCustomer();
+ }
+
+ public Customer createCustomer() {
+ return new Customer();
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getCustomersByName")
+ public JAXBElement<GetCustomersByName>
createGetCustomersByName(GetCustomersByName value) {
+ return new JAXBElement<GetCustomersByName>(_GetCustomersByName_QNAME,
GetCustomersByName.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getCustomersByNameResponse")
+ public JAXBElement<GetCustomersByNameResponse>
createGetCustomersByNameResponse(GetCustomersByNameResponse value) {
+ return new
JAXBElement<GetCustomersByNameResponse>(_GetCustomersByNameResponse_QNAME,
GetCustomersByNameResponse.class,
+ null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"NoSuchCustomer")
+ public JAXBElement<NoSuchCustomer> createNoSuchCustomer(NoSuchCustomer
value) {
+ return new JAXBElement<NoSuchCustomer>(_NoSuchCustomer_QNAME,
NoSuchCustomer.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getAllCustomers")
+ public JAXBElement<Object> createGetAllCustomers(Object value) {
+ return new JAXBElement<Object>(_GetAllCustomers_QNAME, Object.class,
null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getAllCustomersResponse")
+ public JAXBElement<GetAllCustomersResponse>
createGetAllCustomersResponse(GetAllCustomersResponse value) {
+ return new
JAXBElement<GetAllCustomersResponse>(_GetAllCustomersResponse_QNAME,
GetAllCustomersResponse.class, null,
+ value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getAllAmericanCustomers")
+ public JAXBElement<Object> createGetAllAmericanCustomers(Object value) {
+ return new JAXBElement<Object>(_GetAllAmericanCustomers_QNAME,
Object.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"getAllAmericanCustomersResponse")
+ public JAXBElement<GetAllAmericanCustomersResponse>
createGetAllAmericanCustomersResponse(
+ GetAllAmericanCustomersResponse value) {
+ return new
JAXBElement<GetAllAmericanCustomersResponse>(_GetAllAmericanCustomersResponse_QNAME,
+ GetAllAmericanCustomersResponse.class, null, value);
+ }
+
+ @XmlElementDecl(namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/", name =
"saveCustomer")
+ public JAXBElement<SaveCustomer> createSaveCustomer(SaveCustomer value) {
+ return new JAXBElement<SaveCustomer>(_SaveCustomer_QNAME,
SaveCustomer.class, null, value);
+ }
+
+}
diff --git
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/SaveCustomer.java
similarity index 58%
rename from
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
rename to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/SaveCustomer.java
index 41b4e8e..88cebff 100644
---
a/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/example/GetCustomersByName.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/SaveCustomer.java
@@ -14,42 +14,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.it.example;
+package org.apache.camel.quarkus.component.soap.it.service;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "getCustomersByName", namespace =
"http://example.it.soap.component.quarkus.camel.apache.org/", propOrder = {
- "name"
+@XmlType(name = "saveCustomer", propOrder = {
+ "customer"
})
-public class GetCustomersByName {
+public class SaveCustomer {
- protected String name;
+ @XmlElement(required = true)
+ protected Customer customer;
- /**
- * Gets the value of the name property.
- *
- * @return
- * possible object is
- * {@link String }
- *
- */
- public String getName() {
- return name;
+ public Customer getCustomer() {
+ return customer;
}
- /**
- * Sets the value of the name property.
- *
- * @param value
- * allowed object is
- * {@link String }
- *
- */
- public void setName(String value) {
- this.name = value;
+ public void setCustomer(Customer value) {
+ this.customer = value;
}
-
}
diff --git
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/package-info.java
similarity index 69%
copy from
extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
copy to
integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/package-info.java
index 839d62e..aab1616 100644
---
a/extensions/soap/deployment/src/main/java/org/apache/camel/quarkus/component/soap/deployment/SoapProcessor.java
+++
b/integration-tests/soap/src/main/java/org/apache/camel/quarkus/component/soap/it/service/package-info.java
@@ -14,18 +14,5 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.soap.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-
-class SoapProcessor {
-
- private static final String FEATURE = "camel-soap";
-
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
- }
-
-}
[email protected](namespace =
"http://service.it.soap.component.quarkus.camel.apache.org/")
+package org.apache.camel.quarkus.component.soap.it.service;
diff --git a/integration-tests/soap/src/main/resources/application.properties
b/integration-tests/soap/src/main/resources/application.properties
new file mode 100644
index 0000000..972e7d7
--- /dev/null
+++ b/integration-tests/soap/src/main/resources/application.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+quarkus.camel.native.resources.include-patterns = schema/*,wsdl/*
diff --git
a/integration-tests/soap/src/main/resources/schema/CustomerService.xsd
b/integration-tests/soap/src/main/resources/schema/CustomerService.xsd
new file mode 100644
index 0000000..fed1977
--- /dev/null
+++ b/integration-tests/soap/src/main/resources/schema/CustomerService.xsd
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+
xmlns:tns="http://service.it.soap.component.quarkus.camel.apache.org/"
attributeFormDefault="unqualified"
+ elementFormDefault="unqualified"
targetNamespace="http://service.it.soap.component.quarkus.camel.apache.org/">
+ <xs:element name="getCustomersByName" type="tns:getCustomersByName"/>
+ <xs:element name="getCustomersByNameResponse"
type="tns:getCustomersByNameResponse"/>
+ <xs:complexType name="getCustomersByName">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="getCustomersByNameResponse">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return"
type="tns:customer"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="customer">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="address"
nillable="true" type="xs:string"/>
+ <xs:element name="numOrders" type="xs:int"/>
+ <xs:element name="revenue" type="xs:double"/>
+ <xs:element minOccurs="0" name="test" type="xs:decimal"/>
+ <xs:element minOccurs="0" name="birthDate" type="xs:dateTime"/>
+ <xs:element minOccurs="0" name="type" type="tns:customerType"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="customerType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PRIVATE"/>
+ <xs:enumeration value="BUSINESS"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="NoSuchCustomer" type="tns:NoSuchCustomer"/>
+ <xs:complexType name="NoSuchCustomer">
+ <xs:sequence>
+ <xs:element name="customerId" nillable="true" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="getAllCustomers">
+ </xs:element>
+ <xs:element name="getAllCustomersResponse"
type="tns:getAllCustomersResponse">
+ </xs:element>
+
+ <xs:complexType name="getAllCustomersResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:customer"
maxOccurs="unbounded" minOccurs="0"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="getAllAmericanCustomers">
+ </xs:element>
+ <xs:element name="getAllAmericanCustomersResponse"
type="tns:getAllAmericanCustomersResponse">
+ </xs:element>
+
+ <xs:complexType name="getAllAmericanCustomersResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:customer"
maxOccurs="unbounded" minOccurs="0"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="saveCustomer" type="tns:saveCustomer">
+ </xs:element>
+ <xs:complexType name="saveCustomer">
+ <xs:sequence>
+ <xs:element name="customer" type="tns:customer"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+</xs:schema>
diff --git
a/integration-tests/soap/src/main/resources/wsdl/CustomerService.wsdl
b/integration-tests/soap/src/main/resources/wsdl/CustomerService.wsdl
new file mode 100644
index 0000000..fd63009
--- /dev/null
+++ b/integration-tests/soap/src/main/resources/wsdl/CustomerService.wsdl
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<wsdl:definitions name="CustomerServiceService"
+ targetNamespace="http://customerservice.example.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://customerservice.example.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <wsdl:types>
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://customerservice.example.com/"
attributeFormDefault="unqualified"
+ elementFormDefault="unqualified"
targetNamespace="http://customerservice.example.com/">
+ <xs:element name="getCustomersByName"
type="tns:getCustomersByName" />
+ <xs:element name="getCustomersByNameResponse"
type="tns:getCustomersByNameResponse" />
+ <xs:complexType name="getCustomersByName">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="getCustomersByNameResponse">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="return"
+ type="tns:customer" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="customer">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name" type="xs:string" />
+ <xs:element maxOccurs="unbounded" minOccurs="0"
name="address"
+ nillable="true" type="xs:string" />
+ <xs:element name="numOrders" type="xs:int" />
+ <xs:element name="revenue" type="xs:double" />
+ <xs:element minOccurs="0" name="test" type="xs:decimal" />
+ <xs:element minOccurs="0" name="birthDate"
type="xs:dateTime" />
+ <xs:element minOccurs="0" name="type"
type="tns:customerType" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="customerType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PRIVATE" />
+ <xs:enumeration value="BUSINESS" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="NoSuchCustomer" type="tns:NoSuchCustomer" />
+ <xs:complexType name="NoSuchCustomer">
+ <xs:sequence>
+ <xs:element name="customerId" nillable="true"
type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="getAllCustomers">
+ </xs:element>
+ <xs:element name="getAllCustomersResponse"
type="tns:getAllCustomersResponse">
+ </xs:element>
+
+ <xs:complexType name="getAllCustomersResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:customer"
maxOccurs="unbounded"
+ minOccurs="0"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="getAllAmericanCustomers">
+ </xs:element>
+ <xs:element name="getAllAmericanCustomersResponse"
type="tns:getAllAmericanCustomersResponse">
+ </xs:element>
+
+ <xs:complexType name="getAllAmericanCustomersResponse">
+ <xs:sequence>
+ <xs:element name="return" type="tns:customer"
maxOccurs="unbounded"
+ minOccurs="0"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="saveCustomer" type="tns:saveCustomer">
+ </xs:element>
+ <xs:complexType name="saveCustomer">
+ <xs:sequence>
+ <xs:element name="customer"
type="tns:customer"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="getCustomersByNameResponse">
+ <wsdl:part name="parameters" element="tns:getCustomersByNameResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="getCustomersByName">
+ <wsdl:part name="parameters" element="tns:getCustomersByName">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="NoSuchCustomerException">
+ <wsdl:part name="NoSuchCustomerException" element="tns:NoSuchCustomer">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="getAllCustomers">
+ </wsdl:message>
+ <wsdl:message name="getAllCustomersResponse">
+ <wsdl:part name="parameters"
element="tns:getAllCustomersResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="getAllAmericanCustomers">
+ </wsdl:message>
+ <wsdl:message name="getAllAmericanCustomersResponse">
+ <wsdl:part name="parameters"
element="tns:getAllAmericanCustomersResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="saveCustomerRequest">
+ <wsdl:part name="parameters" element="tns:saveCustomer"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="saveCustomerResponse">
+ </wsdl:message>
+ <wsdl:portType name="CustomerService">
+ <wsdl:operation name="getCustomersByName">
+ <wsdl:input name="getCustomersByName"
message="tns:getCustomersByName">
+ </wsdl:input>
+ <wsdl:output name="getCustomersByNameResponse"
message="tns:getCustomersByNameResponse">
+ </wsdl:output>
+ <wsdl:fault name="NoSuchCustomerException"
message="tns:NoSuchCustomerException">
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="getAllCustomers">
+ <wsdl:input message="tns:getAllCustomers"></wsdl:input>
+ <wsdl:output message="tns:getAllCustomersResponse"></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getAllAmericanCustomers">
+ <wsdl:input message="tns:getAllAmericanCustomers"></wsdl:input>
+ <wsdl:output
message="tns:getAllAmericanCustomersResponse"></wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="saveCustomer">
+ <wsdl:input message="tns:saveCustomerRequest"></wsdl:input>
+ <wsdl:output message="tns:saveCustomerResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CustomerServiceServiceSoapBinding"
+ type="tns:CustomerService">
+
+ <soap:binding style="document"
+ transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getCustomersByName">
+
+ <soap:operation
+
soapAction="http://customerservice.example.com/getCustomersByName" />
+ <wsdl:input name="getCustomersByName">
+
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="getCustomersByNameResponse">
+
+ <soap:body use="literal" />
+ </wsdl:output>
+ <wsdl:fault name="NoSuchCustomerException">
+
+ <soap:fault use="literal" name="NoSuchCustomerException" />
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="getAllCustomers">
+ <soap:operation
soapAction="http://customerservice.example.com/getAllCustomers" />
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="getAllAmericanCustomers">
+ <soap:operation
soapAction="http://customerservice.example.com/getAllAmericanCustomers" />
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="saveCustomer">
+ <soap:operation
soapAction="http://customerservice.example.com/saveCustomer" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CustomerServiceService">
+ <wsdl:port name="CustomerServicePort"
binding="tns:CustomerServiceServiceSoapBinding">
+ <soap:address location="http://localhost:9090/CustomerServicePort"
/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
+
diff --git
a/integration-tests/soap/src/main/resources/wsdl/MultiPartCustomerService.wsdl
b/integration-tests/soap/src/main/resources/wsdl/MultiPartCustomerService.wsdl
new file mode 100644
index 0000000..5759b5b
--- /dev/null
+++
b/integration-tests/soap/src/main/resources/wsdl/MultiPartCustomerService.wsdl
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<wsdl:definitions name="CustomerServiceMultiPart"
+ targetNamespace="http://multipart.customerservice.example.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://multipart.customerservice.example.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:typens="http://multipart.customerservice.example.com/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+
+ <wsdl:types>
+
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://multipart.customerservice.example.com/"
attributeFormDefault="unqualified"
+ elementFormDefault="unqualified"
targetNamespace="http://multipart.customerservice.example.com/">
+
+ <xs:element name="getCustomersByName"
type="tns:getCustomersByName" />
+ <xs:element name="getCustomersByNameResponse"
type="tns:getCustomersByNameResponse" />
+ <xs:complexType name="getCustomersByName">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name"
type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="getCustomersByNameResponse">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded"
minOccurs="0" name="return"
+ type="tns:customer" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="customer">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="name"
type="xs:string" />
+ <xs:element maxOccurs="unbounded"
minOccurs="0" name="address"
+ nillable="true"
type="xs:string" />
+ <xs:element name="numOrders"
type="xs:int" />
+ <xs:element name="revenue"
type="xs:double" />
+ <xs:element minOccurs="0" name="test"
type="xs:decimal" />
+ <xs:element minOccurs="0"
name="birthDate" type="xs:dateTime" />
+ <xs:element minOccurs="0" name="type"
type="tns:customerType" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="customerType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PRIVATE" />
+ <xs:enumeration value="BUSINESS" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="NoSuchCustomer"
type="tns:NoSuchCustomer" />
+ <xs:complexType name="NoSuchCustomer">
+ <xs:sequence>
+ <xs:element name="customerId"
nillable="true" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="getAllCustomers">
+ </xs:element>
+ <xs:element name="getAllCustomersResponse"
type="tns:getAllCustomersResponse">
+ </xs:element>
+
+ <xs:complexType name="getAllCustomersResponse">
+ <xs:sequence>
+ <xs:element name="return"
type="tns:customer" maxOccurs="unbounded"
+ minOccurs="0"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="saveCustomer" type="tns:saveCustomer">
+ </xs:element>
+
+ <!-- This element reuses the tns:SaveCustomer type,
but applies a different element QName (than above) -->
+ <xs:element name="saveCustomerToo"
type="tns:saveCustomer">
+ </xs:element>
+ <xs:complexType name="saveCustomer">
+ <xs:sequence>
+ <xs:element name="customer"
type="tns:customer"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="company"
type="tns:company"></xs:element>
+ <xs:complexType name="company">
+ <xs:sequence>
+ <xs:element name="name"
type="xs:string" />
+ <xs:element name="president"
type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:element name="companyType" type="tns:companyType" />
+ <xs:simpleType name="companyType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="PRIVATE" />
+ <xs:enumeration value="PUBLIC" />
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:element name="product" type="tns:product" />
+ <xs:complexType name="product">
+ <xs:sequence>
+ <xs:element name="name"
type="xs:string" />
+ <xs:element name="description"
type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:schema>
+
+ </wsdl:types>
+
+
+ <!-- message with two parts -->
+ <wsdl:message name="getCustomersByName">
+ <wsdl:part name="parameters" element="typens:getCustomersByName"/>
+ <wsdl:part name="product" element="typens:product"/>
+ </wsdl:message>
+ <wsdl:message name="getCustomersByNameResponse">
+ <wsdl:part name="parameters"
element="typens:getCustomersByNameResponse"/>
+ </wsdl:message>
+
+ <wsdl:message name="NoSuchCustomerException">
+ <wsdl:part name="NoSuchCustomerException"
element="typens:NoSuchCustomer"/>
+ </wsdl:message>
+
+ <!-- message with an out part -->
+ <wsdl:message name="getAllCustomers">
+ </wsdl:message>
+ <wsdl:message name="getAllCustomersResponse">
+ <wsdl:part name="parameters" element="typens:getAllCustomersResponse"/>
+ <wsdl:part name="companyType" element="typens:companyType"/>
+ </wsdl:message>
+
+ <!-- multiple in parts and an inout -->
+ <wsdl:message name="saveCustomer">
+ <wsdl:part name="parameters" element="typens:saveCustomer"/>
+ <wsdl:part name="product" element="typens:product"/>
+ <wsdl:part name="company" element="typens:company"/>
+ </wsdl:message>
+ <wsdl:message name="saveCustomerResponse">
+ <wsdl:part name="company" element="typens:company"/>
+ </wsdl:message>
+
+ <wsdl:message name="saveCustomerToo">
+ <wsdl:part name="parameters" element="typens:saveCustomerToo"/>
+ <wsdl:part name="product" element="typens:product"/>
+ <wsdl:part name="company" element="typens:company"/>
+ </wsdl:message>
+ <wsdl:message name="saveCustomerResponseToo">
+ <wsdl:part name="company" element="typens:company"/>
+ </wsdl:message>
+
+ <!-- message with an out part -->
+ <wsdl:portType name="MultiPartCustomerService">
+ <wsdl:operation name="getCustomersByName">
+ <wsdl:input name="getCustomersByName"
message="tns:getCustomersByName"/>
+ <wsdl:output name="getCustomersByNameResponse"
message="tns:getCustomersByNameResponse"/>
+ <wsdl:fault name="NoSuchCustomerException"
message="tns:NoSuchCustomerException"/>
+ </wsdl:operation>
+ <wsdl:operation name="getAllCustomers">
+ <wsdl:input message="tns:getAllCustomers"/>
+ <wsdl:output message="tns:getAllCustomersResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="saveCustomer">
+ <wsdl:input message="tns:saveCustomer"/>
+ <wsdl:output message="tns:saveCustomerResponse"/>
+ </wsdl:operation>
+ <wsdl:operation name="saveCustomerToo">
+ <wsdl:input message="tns:saveCustomerToo"/>
+ <wsdl:output name="saveCustomerResponseToo"
message="tns:saveCustomerResponseToo"/>
+ </wsdl:operation>
+ </wsdl:portType>
+
+ <wsdl:binding name="CustomerServiceMultiPart"
type="tns:MultiPartCustomerService">
+
+ <soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
+
+ <!-- operation with a single header part in the request -->
+ <wsdl:operation name="getCustomersByName">
+ <soap:operation
soapAction="http://multipart.customerservice.example.com/getCustomersByName" />
+ <wsdl:input>
+ <soap:header use="literal" part="product"
message="tns:getCustomersByName" />
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="getCustomersByNameResponse">
+ <soap:body use="literal" />
+ </wsdl:output>
+ <wsdl:fault name="NoSuchCustomerException">
+ <soap:fault use="literal" name="NoSuchCustomerException" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <!-- operation with a single header part in the response -->
+ <wsdl:operation name="getAllCustomers">
+ <soap:operation
soapAction="http://multipart.customerservice.example.com/getAllCustomers" />
+ <wsdl:input></wsdl:input>
+ <wsdl:output>
+ <soap:header use="literal" part="company"
message="tns:getAllCustomers" />
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+
+ <!-- operation with two header values in request - one is an inout -->
+ <wsdl:operation name="saveCustomer">
+ <soap:operation
soapAction="http://multipart.customerservice.example.com/saveCustomer" />
+ <wsdl:input>
+ <soap:header use="literal" part="product"
message="tns:saveCustomer" />
+ <soap:header use="literal" part="company"
message="tns:saveCustomer" />
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="saveCustomerResponse">
+ <soap:header use="literal" part="company"
message="tns:saveCustomer" />
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+
+ <!-- operation to test reused parameters and a parameters that reuses
a type but applies a new namespace -->
+ <wsdl:operation name="saveCustomerToo">
+ <soap:operation
soapAction="http://multipart.customerservice.example.com/saveCustomerToo" />
+ <wsdl:input>
+ <soap:header use="literal" part="product"
message="tns:saveCustomerToo" />
+ <soap:header use="literal" part="company"
message="tns:saveCustomerToo" />
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="saveCustomerResponseToo">
+ <soap:header use="literal" part="company"
message="tns:saveCustomerToo" />
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+
+ </wsdl:binding>
+
+
+ <wsdl:service name="MultiPartCustomerServiceService">
+ <wsdl:port name="MultiPartCustomerServicePort"
binding="tns:CustomerServiceMultiPart">
+ <soap:address
location="http://localhost:9090/MultipartCustomerService" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git
a/integration-tests/soap/src/test/java/org/apache/camel/quarkus/component/soap/it/SoapTest.java
b/integration-tests/soap/src/test/java/org/apache/camel/quarkus/component/soap/it/SoapTest.java
index b693c93..58b5726 100644
---
a/integration-tests/soap/src/test/java/org/apache/camel/quarkus/component/soap/it/SoapTest.java
+++
b/integration-tests/soap/src/test/java/org/apache/camel/quarkus/component/soap/it/SoapTest.java
@@ -16,82 +16,133 @@
*/
package org.apache.camel.quarkus.component.soap.it;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.UUID;
import io.quarkus.test.junit.QuarkusTest;
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.ValueSource;
-import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.Matchers.equalTo;
@QuarkusTest
class SoapTest {
- @Test
- public void testMarshal() {
- final String msg = UUID.randomUUID().toString().replace("-", "");
- String resp = RestAssured.given()
-
.contentType(ContentType.TEXT).body(msg).post("/soap/marshal/1.1") //
- .then().statusCode(201)
- .extract().body().asString();
- assertThat(resp).contains("<ns3:getCustomersByName>");
- assertThat(resp).contains("<name>" + msg + "</name>");
- assertThat(resp).contains("<ns2:Envelope
xmlns:ns2=\"http://schemas.xmlsoap.org/soap/envelope/\"");
+ @ParameterizedTest
+ @ValueSource(strings = { "1.1", "1.2" })
+ public void testMarshal(String soapVersion) throws IOException {
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body("Mr Camel Quarkus SOAP V" + soapVersion)
+ .pathParam("soapVersion", soapVersion)
+ .post("/soap/marshal/{soapVersion}")
+ .then()
+ .statusCode(201)
+ .body("Envelope.Body.getCustomersByName.name", equalTo("Mr
Camel Quarkus SOAP V" + soapVersion));
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = { "1.1", "1.2" })
+ public void testMarshalFault(String soapVersion) {
+ String prefix = "Envelope.Body.Fault";
+ String xpath = prefix;
+ if (soapVersion.equals("1.1")) {
+ xpath += ".faultstring";
+ } else {
+ xpath += ".Reason.Text";
+ }
+
+ RestAssured.given()
+ .body("invalid customer")
+ .pathParam("soapVersion", soapVersion)
+ .post("/soap/marshal/fault/{soapVersion}")
+ .then()
+ .statusCode(201)
+ .body(xpath, equalTo("Specified customer was not found"));
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = { "1.1", "1.2" })
+ public void testUnmarshalSoap(String soapVersion) throws IOException {
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .body(readFile("/getCustomersByName" + soapVersion + ".xml"))
+ .pathParam("soapVersion", soapVersion)
+ .post("/soap/unmarshal/{soapVersion}")
+ .then()
+ .statusCode(201)
+ .body(equalTo("Mr Camel Quarkus SOAP V" + soapVersion));
+ }
+
+ @ParameterizedTest
+ @ValueSource(strings = { "1.1", "1.2" })
+ public void testUnmarshalSoapFault(String soapVersion) throws IOException {
+ RestAssured.given()
+ .contentType(ContentType.XML)
+ .body(readFile("/soapFault" + soapVersion + ".xml"))
+ .pathParam("soapVersion", soapVersion)
+ .post("/soap/unmarshal/fault/{soapVersion}")
+ .then()
+ .statusCode(201)
+ .body(equalTo("Customer not found"));
}
@Test
- public void testMarshalSoap12() {
+ public void marshalUnmarshal() {
final String msg = UUID.randomUUID().toString().replace("-", "");
- // GetCustomersS
- String resp = RestAssured.given()
-
.contentType(ContentType.TEXT).body(msg).post("/soap/marshal/1.2") //
- .then().statusCode(201).extract().body().asString();
- assertThat(resp).contains("<ns3:getCustomersByName>");
- assertThat(resp).contains("<name>" + msg + "</name>");
- assertThat(resp).contains("<ns2:Envelope
xmlns:ns2=\"http://www.w3.org/2003/05/soap-envelope\"");
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body(msg)
+ .post("/soap/marshal/unmarshal")
+ .then()
+ .statusCode(201)
+ .body(equalTo(msg));
}
@Test
- public void testUnmarshalSoap() {
+ public void qNameStrategy() {
final String msg = UUID.randomUUID().toString().replace("-", "");
- String resp = RestAssured.given()
- .contentType(ContentType.XML).body(getSoapMessage("1.1",
msg)).post("/soap/unmarshal/1.1") //
- .then().statusCode(201)
- .extract().body().asString();
- assertThat(resp).isEqualTo(msg);
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body(msg)
+ .post("/soap/qname/strategy")
+ .then()
+ .statusCode(201)
+ .body(equalTo(msg));
}
@Test
- public void testUnmarshalSoap12() {
+ public void serviceInterfaceStrategy() {
final String msg = UUID.randomUUID().toString().replace("-", "");
- String resp = RestAssured.given()
- .contentType(ContentType.XML).body(getSoapMessage("1.2",
msg)).post("/soap/unmarshal/1.2") //
- .then().statusCode(201)
- .extract().body().asString();
- assertThat(resp).isEqualTo(msg);
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body(msg)
+ .post("/soap/serviceinterface/strategy")
+ .then()
+ .statusCode(201)
+ .body(equalTo(msg));
}
@Test
- public void round() {
+ public void multipart() {
final String msg = UUID.randomUUID().toString().replace("-", "");
- String resp = RestAssured.given()
- .contentType(ContentType.TEXT).body(msg).post("/soap/round") //
- .then().statusCode(201)
- .extract().body().asString();
- assertThat(resp).isEqualTo(msg);
+ RestAssured.given()
+ .contentType(ContentType.TEXT)
+ .body(msg)
+ .post("/soap/multipart")
+ .then()
+ .statusCode(201)
+ .body(equalTo(msg));
}
- private String getSoapMessage(String namespace, String name) {
- final String url = (namespace.equals("1.2") ?
"http://www.w3.org/2003/05/soap-envelope"
- : "http://schemas.xmlsoap.org/soap/envelope/");
- return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+
- "<soap:Envelope xmlns:soap=\"" + url + "\">" +
- "<soap:Body>" +
- "<ns2:getCustomersByName
xmlns:ns2=\"http://example.it.soap.component.quarkus.camel.apache.org/\">" +
- "<name>" + name + "</name>" +
- "</ns2:getCustomersByName>" +
- "</soap:Body>" +
- "</soap:Envelope>";
+ private String readFile(String path) throws IOException {
+ InputStream resource = SoapTest.class.getResourceAsStream(path);
+ return IOUtils.toString(resource, StandardCharsets.UTF_8);
}
}
diff --git
a/integration-tests/soap/src/test/resources/getCustomersByName1.1.xml
b/integration-tests/soap/src/test/resources/getCustomersByName1.1.xml
new file mode 100644
index 0000000..2e036d6
--- /dev/null
+++ b/integration-tests/soap/src/test/resources/getCustomersByName1.1.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <soap:Body>
+ <ns2:getCustomersByName
xmlns:ns2="http://service.it.soap.component.quarkus.camel.apache.org/">
+ <name>Mr Camel Quarkus SOAP V1.1</name>
+ </ns2:getCustomersByName>
+ </soap:Body>
+</soap:Envelope>
diff --git
a/integration-tests/soap/src/test/resources/getCustomersByName1.2.xml
b/integration-tests/soap/src/test/resources/getCustomersByName1.2.xml
new file mode 100644
index 0000000..a3da0eb
--- /dev/null
+++ b/integration-tests/soap/src/test/resources/getCustomersByName1.2.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
+ <soap:Body>
+ <ns2:getCustomersByName
xmlns:ns2="http://service.it.soap.component.quarkus.camel.apache.org/">
+ <name>Mr Camel Quarkus SOAP V1.2</name>
+ </ns2:getCustomersByName>
+ </soap:Body>
+</soap:Envelope>
diff --git a/integration-tests/soap/src/test/resources/soapFault1.1.xml
b/integration-tests/soap/src/test/resources/soapFault1.1.xml
new file mode 100644
index 0000000..fc0c357
--- /dev/null
+++ b/integration-tests/soap/src/test/resources/soapFault1.1.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<ns2:Envelope xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns3="http://customerservice.example.com/">
+ <ns2:Body>
+ <ns2:Fault>
+ <faultcode>ns2:Receiver</faultcode>
+ <faultstring>Customer not found</faultstring>
+ <detail>
+ <ns3:NoSuchCustomer>
+ <customerId>An invalid customer id</customerId>
+ </ns3:NoSuchCustomer>
+ </detail>
+ </ns2:Fault>
+ </ns2:Body>
+</ns2:Envelope>
\ No newline at end of file
diff --git a/integration-tests/soap/src/test/resources/soapFault1.2.xml
b/integration-tests/soap/src/test/resources/soapFault1.2.xml
new file mode 100644
index 0000000..044e66f
--- /dev/null
+++ b/integration-tests/soap/src/test/resources/soapFault1.2.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+
+ 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.
+
+-->
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+ <env:Body>
+ <env:Fault>
+ <env:Code>
+ <env:Value>Sender</env:Value>
+ <env:Subcode>
+ <env:Value>Customer not found</env:Value>
+ </env:Subcode>
+ </env:Code>
+ <env:Reason>
+ <env:Text xml:lang="en">Customer not found</env:Text>
+ </env:Reason>
+ </env:Fault>
+ </env:Body>
+</env:Envelope>
diff --git a/pom.xml b/pom.xml
index 19a07ad..b3211bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,7 +82,8 @@
<htrace.version>4.2.0-incubating</htrace.version><!-- Mess in hbase
transitive deps -->
<influxdb.version>${influx-java-driver-version}</influxdb.version>
<jackson-asl.version>1.9.13</jackson-asl.version><!-- Mess in the
transitive dependencies of spark and hbase-testing-util -->
- <java.xml.ws.version>2.3.1</java.xml.ws.version>
+ <jakarta.jws.ws.api.version>2.1.0</jakarta.jws.ws.api.version>
+ <jakarta.xml.ws.api.version>2.3.3</jakarta.xml.ws.api.version>
<jcodings.version>1.0.55</jcodings.version><!-- used by hbase -->
<joni.version>2.1.31</joni.version><!-- used by json-validator -->
<jsoup.version>1.12.1</jsoup.version><!-- used by oaipmh -->
@@ -108,9 +109,9 @@
<quarkus-qpid-jms.version>0.24.0</quarkus-qpid-jms.version>
<protobuf.version>${protobuf-version}</protobuf.version>
<retrofit.version>2.5.0</retrofit.version>
+ <saaj.impl.version>1.5.3</saaj.impl.version>
<scala-2.11.version>2.11.12</scala-2.11.version><!-- Spark -->
<smallrye.reactive.messaging.camel.version>2.9.0</smallrye.reactive.messaging.camel.version>
<!-- keep in sync with Quarkus SmallRye Reactive Messaging -->
- <soap-api.version>1.4.0</soap-api.version><!-- keep in sync with Camel
-->
<!-- Keep spring.version aligned with the version used by Camel -->
<spring.version>${spring5-version}</spring.version>
<snakeyaml.version>${snakeyaml-version}</snakeyaml.version>
@@ -492,6 +493,7 @@
<spring.provides>CAMEL_PROPERTIES_STYLE</spring.provides>
<tm>CAMEL_PROPERTIES_STYLE</tm>
<kt>SLASHSTAR_STYLE</kt>
+ <wsdl>XML_STYLE</wsdl>
</mapping>
<headerDefinitions>
<headerDefinition>license-properties-headerdefinition.xml</headerDefinition>
diff --git a/poms/bom-test/pom.xml b/poms/bom-test/pom.xml
index 3ddfad7..2130cb8 100644
--- a/poms/bom-test/pom.xml
+++ b/poms/bom-test/pom.xml
@@ -202,6 +202,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>jakarta.jws</groupId>
+ <artifactId>jakarta.jws-api</artifactId>
+ <version>${jakarta.jws.ws.api.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>htmlunit-driver</artifactId>
<version>${htmlunit-driver.version}</version>
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index 66282bc..77d9bae 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -5709,6 +5709,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>com.sun.xml.messaging.saaj</groupId>
+ <artifactId>saaj-impl</artifactId>
+ <version>${saaj.impl.version}</version>
+ </dependency>
+ <dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.version}</version>
@@ -5824,14 +5829,9 @@
<version>${smallrye.reactive.messaging.camel.version}</version>
</dependency>
<dependency>
- <groupId>javax.xml.soap</groupId>
- <artifactId>javax.xml.soap-api</artifactId>
- <version>${soap-api.version}</version>
- </dependency>
- <dependency>
- <groupId>javax.xml.ws</groupId>
- <artifactId>jaxws-api</artifactId>
- <version>${java.xml.ws.version}</version>
+ <groupId>jakarta.xml.ws</groupId>
+ <artifactId>jakarta.xml.ws-api</artifactId>
+ <version>${jakarta.xml.ws.api.version}</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>