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-examples.git
commit 30e8edbc27339003b310236bd96d13dbca703920 Author: JiriOndrusek <[email protected]> AuthorDate: Wed Jun 10 11:06:26 2026 +0200 [camel-4.21] Fix #8691 CXF SOAP example for CAMEL-23526 header name changes (#507) * Fix #8691 CXF SOAP example for CAMEL-23526 header name changes CAMEL-23526 renamed CXF header constants to follow Camel naming conventions: - operationName → CamelCxfOperationName - operationNamespace → CamelCxfOperationNamespace * Avoid hard coding header names --------- Co-authored-by: James Netherton <[email protected]> --- .../main/java/org/acme/cxf/soap/pojo/PojoCxfConsumerRouteBuilder.java | 4 +++- .../main/java/org/acme/cxf/soap/pojo/PojoCxfProducerRouteBuilder.java | 3 +++ cxf-soap/src/main/java/org/acme/cxf/soap/utils/CxfServerUtils.java | 3 +++ cxf-soap/src/main/java/org/acme/cxf/soap/wsdl/MyWsdlRouteBuilder.java | 4 +++- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfConsumerRouteBuilder.java b/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfConsumerRouteBuilder.java index dcec4cfa..c46e1ccf 100644 --- a/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfConsumerRouteBuilder.java +++ b/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfConsumerRouteBuilder.java @@ -23,6 +23,8 @@ import org.acme.cxf.soap.pojo.service.ContactService; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.cxf.jaxws.CxfEndpoint; +import static org.acme.cxf.soap.utils.CxfServerUtils.OPERATION_NAME_HEADER; + /** * This class demonstrate how to expose a SOAP endpoint starting from java classes */ @@ -43,6 +45,6 @@ public class PojoCxfConsumerRouteBuilder extends RouteBuilder { @Override public void configure() throws Exception { from("cxf:bean:contact") - .recipientList(simple("bean:inMemoryContactService?method=${header.operationName}")); + .recipientList(simple("bean:inMemoryContactService?method=" + OPERATION_NAME_HEADER)); } } diff --git a/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfProducerRouteBuilder.java b/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfProducerRouteBuilder.java index 8db54754..6239b576 100644 --- a/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfProducerRouteBuilder.java +++ b/cxf-soap/src/main/java/org/acme/cxf/soap/pojo/PojoCxfProducerRouteBuilder.java @@ -25,6 +25,7 @@ import org.acme.cxf.soap.pojo.service.Contacts; import org.acme.cxf.soap.utils.CxfServerUtils; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.cxf.common.DataFormat; +import org.apache.camel.component.cxf.common.message.CxfConstants; import org.apache.camel.component.cxf.jaxws.CxfEndpoint; import org.apache.camel.model.dataformat.JsonLibrary; import org.apache.camel.model.rest.RestBindingMode; @@ -60,9 +61,11 @@ public class PojoCxfProducerRouteBuilder extends RouteBuilder { .to("direct:contacts"); from("direct:contact") + .setHeader(CxfConstants.OPERATION_NAME, constant("addContact")) .to("cxf:bean:soapClientEndpointPojo"); from("direct:contacts") + .setHeader(CxfConstants.OPERATION_NAME, constant("getContacts")) .to("cxf:bean:soapClientEndpointPojo") .convertBodyTo(Contacts.class) .marshal().json(JsonLibrary.Jackson); diff --git a/cxf-soap/src/main/java/org/acme/cxf/soap/utils/CxfServerUtils.java b/cxf-soap/src/main/java/org/acme/cxf/soap/utils/CxfServerUtils.java index dec296ad..23325fa6 100644 --- a/cxf-soap/src/main/java/org/acme/cxf/soap/utils/CxfServerUtils.java +++ b/cxf-soap/src/main/java/org/acme/cxf/soap/utils/CxfServerUtils.java @@ -17,10 +17,13 @@ package org.acme.cxf.soap.utils; import io.quarkus.runtime.LaunchMode; +import org.apache.camel.component.cxf.common.message.CxfConstants; import org.eclipse.microprofile.config.Config; import org.eclipse.microprofile.config.ConfigProvider; public final class CxfServerUtils { + public static final String OPERATION_NAME_HEADER = "${header.%s}".formatted(CxfConstants.OPERATION_NAME); + private CxfServerUtils() { } diff --git a/cxf-soap/src/main/java/org/acme/cxf/soap/wsdl/MyWsdlRouteBuilder.java b/cxf-soap/src/main/java/org/acme/cxf/soap/wsdl/MyWsdlRouteBuilder.java index 2a28ab49..7659de2e 100644 --- a/cxf-soap/src/main/java/org/acme/cxf/soap/wsdl/MyWsdlRouteBuilder.java +++ b/cxf-soap/src/main/java/org/acme/cxf/soap/wsdl/MyWsdlRouteBuilder.java @@ -31,6 +31,8 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.cxf.jaxws.CxfEndpoint; import org.apache.cxf.message.MessageContentsList; +import static org.acme.cxf.soap.utils.CxfServerUtils.OPERATION_NAME_HEADER; + /** * This class demonstrate how to expose a SOAP endpoint starting from a wsdl, using the * quarkus-maven-plugin:generate-code @@ -63,7 +65,7 @@ public class MyWsdlRouteBuilder extends RouteBuilder { public void configure() throws Exception { // CustomerService is generated with quarkus-maven-plugin:generate-code during the build from("cxf:bean:customer") - .recipientList(simple("direct:${header.operationName}")); + .recipientList(simple("direct:" + OPERATION_NAME_HEADER)); from("direct:getCustomersByName").process(exchange -> { String name = exchange.getIn().getBody(String.class);
