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 635737e5b1 Test Java first CXF server endpoint with multiple SEI 
methods #4306
635737e5b1 is described below

commit 635737e5b1b3c523483dc2382ddf5b265e4de146
Author: Peter Palaga <[email protected]>
AuthorDate: Wed Nov 30 14:11:57 2022 +0100

    Test Java first CXF server endpoint with multiple SEI methods #4306
---
 .../cxf/soap/server/it}/CodeFirstService.java      | 15 ++++++--
 .../cxf/soap/server/it/CxfSoapRoutes.java          | 13 ++++++-
 .../cxf/soap/server/it/CxfSoapServiceTest.java     | 43 ++++++++++++++--------
 3 files changed, 50 insertions(+), 21 deletions(-)

diff --git 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/com/helloworld/service/CodeFirstService.java
 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CodeFirstService.java
similarity index 62%
rename from 
integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/com/helloworld/service/CodeFirstService.java
rename to 
integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CodeFirstService.java
index c3fc931c12..245e0e210b 100644
--- 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/com/helloworld/service/CodeFirstService.java
+++ 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CodeFirstService.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.helloworld.service;
+package org.apache.camel.quarkus.component.cxf.soap.server.it;
 
 import javax.jws.WebMethod;
 import javax.jws.WebParam;
@@ -23,11 +23,18 @@ import javax.jws.WebService;
 import javax.jws.soap.SOAPBinding;
 import javax.jws.soap.SOAPBinding.ParameterStyle;
 
-@WebService(targetNamespace = "http://www.helloworld.com/CodeFirstService/";, 
name = "CodeFirstService")
+@WebService(targetNamespace = CodeFirstService.TARGET_NS, name = 
"CodeFirstService", serviceName = "CodeFirstService")
 @SOAPBinding(parameterStyle = ParameterStyle.BARE)
 public interface CodeFirstService {
+    public static final String TARGET_NS = 
"http://www.helloworld.com/CodeFirstService/";;
+
     @WebMethod(operationName = "Hello", action = 
"https://www.helloworld.com/CodeFirstService/Hello";)
-    @WebResult(name = "HelloResponse", targetNamespace = 
"http://www.helloworld.com/CodeFirstService/";)
+    @WebResult(name = "HelloResponse", targetNamespace = TARGET_NS)
     String hello(
-            @WebParam(name = "HelloRequest", targetNamespace = 
"http://www.helloworld.com/CodeFirstService/";) String var1);
+            @WebParam(name = "HelloRequest", targetNamespace = TARGET_NS) 
String var1);
+
+    @WebMethod(operationName = "GoodBye", action = 
"https://www.helloworld.com/CodeFirstService/GoodBye";)
+    @WebResult(name = "GoodByeResponse", targetNamespace = TARGET_NS)
+    String goodBye(
+            @WebParam(name = "GoodByeRequest", targetNamespace = TARGET_NS) 
String var1);
 }
diff --git 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapRoutes.java
 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapRoutes.java
index 46fa8ad7a0..45e09365a7 100644
--- 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapRoutes.java
+++ 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/main/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapRoutes.java
@@ -30,7 +30,6 @@ import javax.xml.xpath.XPathConstants;
 
 import org.w3c.dom.Element;
 
-import com.helloworld.service.CodeFirstService;
 import com.helloworld.service.HelloPortType;
 import com.sun.xml.messaging.saaj.soap.ver1_1.Message1_1Impl;
 import org.apache.camel.builder.RouteBuilder;
@@ -67,7 +66,17 @@ public class CxfSoapRoutes extends RouteBuilder {
                         .setBody().simple("Hello ${body} from CXF service");
 
         from("cxf:bean:codeFirstServiceEndpoint")
-                .setBody().constant("Hello CamelQuarkusCXF");
+                .choice()
+                .when(simple("${header.operationName} == 'Hello'"))
+                .setBody().simple("Hello ${body} code first")
+                .endChoice()
+                .when(simple("${header.operationName} == 'GoodBye'"))
+                .setBody().simple("Good bye ${body} code first")
+                .endChoice()
+                .otherwise()
+                .process(e -> {
+                    throw new IllegalStateException("Unexpected operation " + 
e.getMessage().getHeader("operationName"));
+                });
 
         from("cxf:bean:echoServiceResponseFromRouteCxfMessageDataFormat")
                 .process(exchange -> {
diff --git 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/test/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapServiceTest.java
 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/test/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapServiceTest.java
index 60dec478d7..79106560aa 100644
--- 
a/integration-test-groups/cxf-soap/cxf-soap-server/src/test/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapServiceTest.java
+++ 
b/integration-test-groups/cxf-soap/cxf-soap-server/src/test/java/org/apache/camel/quarkus/component/cxf/soap/server/it/CxfSoapServiceTest.java
@@ -24,14 +24,18 @@ import io.quarkiverse.cxf.test.QuarkusCxfClientTestUtil;
 import io.quarkus.runtime.LaunchMode;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
-import io.restassured.http.ContentType;
+import io.restassured.config.RestAssuredConfig;
 import org.eclipse.microprofile.config.Config;
 import org.eclipse.microprofile.config.ConfigProvider;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 
+import static io.quarkiverse.cxf.test.QuarkusCxfClientTestUtil.anyNs;
+
 @QuarkusTest
 class CxfSoapServiceTest {
 
@@ -53,24 +57,33 @@ class CxfSoapServiceTest {
     }
 
     @Test
-    public void testCodeFirstSoapService() {
+    public void codeFirstWsdl() {
 
-        final String response = RestAssured.given()
-                .contentType(ContentType.XML)
-                .body("<soapenv:Envelope 
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"; 
xmlns:ser=\"http://www.helloworld.com/CodeFirstService/\";>\n"
-                        +
-                        "   <soapenv:Header/>\n" +
-                        "   <soapenv:Body>\n" +
-                        "      
<ser:HelloRequest>HelloWorld</ser:HelloRequest>\n" +
-                        "   </soapenv:Body>\n" +
-                        "</soapenv:Envelope>")
-                .post("/soapservice/codefirst")
+        RestAssuredConfig config = RestAssured.config();
+        config.getXmlConfig().namespaceAware(false);
+        RestAssured.given()
+                .config(config)
+                .when().get("/soapservice/codefirst?wsdl")
                 .then()
                 .statusCode(200)
-                .assertThat()
-                .extract().asString();
+                .body(
+                        /* Make sure that the two operations are available in 
the generated WSDL */
+                        Matchers.hasXPath(
+                                anyNs("definitions", "binding", "operation")
+                                        + "[1]/@*[local-name() = 'name']",
+                                CoreMatchers.is("GoodBye")),
+                        Matchers.hasXPath(
+                                anyNs("definitions", "binding", "operation")
+                                        + "[2]/@*[local-name() = 'name']",
+                                CoreMatchers.is("Hello")));
+    }
 
-        org.junit.jupiter.api.Assertions.assertTrue(response.contains("Hello 
CamelQuarkusCXF"));
+    @Test
+    public void codeFirstSoapService() {
+        final CodeFirstService client = 
QuarkusCxfClientTestUtil.getClient(CodeFirstService.TARGET_NS, 
CodeFirstService.class,
+                "/soapservice/codefirst");
+        Assertions.assertEquals("Hello Joe code first", client.hello("Joe"));
+        Assertions.assertEquals("Good bye Laszlo code first", 
client.goodBye("Laszlo"));
     }
 
     @ParameterizedTest

Reply via email to