You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by wt...@apache.org on 2009/09/03 06:08:46 UTC
svn commit: r810776 - in /camel/branches/camel-1.x/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/
test/java/org/apache/camel/component/cxf/soap/headers/ test/resources/
test/resources/org/apache/camel/component/cxf/spring/
Author: wtam
Date: Thu Sep 3 04:08:46 2009
New Revision: 810776
URL: http://svn.apache.org/viewvc?rev=810776&view=rev
Log:
[CAMEL-1983] camel-cxf should let users to set out SOAP headers
Added:
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java (with props)
Modified:
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java
camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterImpl.java
camel/branches/camel-1.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/message_headers_relay.xml
camel/branches/camel-1.x/components/camel-cxf/src/test/resources/soap_header.wsdl
Modified: camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfBinding.java Thu Sep 3 04:08:46 2009
@@ -312,8 +312,8 @@
}
Map<String, Object> responseContext = (Map<String, Object>)context.get(Client.RESPONSE_CONTEXT);
List<Header> headers = (List<Header>)responseContext.get(Header.HEADER_LIST);
- responseContext.remove(Header.HEADER_LIST);
if (!endpoint.isRelayHeaders()) {
+ responseContext.remove(Header.HEADER_LIST);
Exchange e = exchange.getExchange();
if (e == null) {
return;
@@ -387,17 +387,14 @@
Map<String, Object> context,
MessageHeadersRelay relay) {
- List<Header> to = (List<Header>)context.get(Header.HEADER_LIST);
- boolean hasHeaders = true;
- if (to == null) {
- to = new ArrayList<Header>();
- hasHeaders = false;
- }
+// List<Header> to = (List<Header>)context.get(Header.HEADER_LIST);
+ List<Header> to = new ArrayList<Header>();
+
relay.relay(direction, from, to);
for (Header header : to) {
header.setDirection(Header.Direction.DIRECTION_OUT);
}
- if (!hasHeaders && to.size() > 0) {
+ if (to.size() > 0) {
context.put(Header.HEADER_LIST, to);
}
}
Modified: camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfExchange.java Thu Sep 3 04:08:46 2009
@@ -57,7 +57,28 @@
public CxfExchange(CxfExchange exchange) {
super(exchange);
- this.exchange = exchange.getExchange();
+ this.exchange = exchange.getExchange();
+
+ if (DataFormat.MESSAGE == exchange.getProperty(CxfConstants.DATA_FORMAT_PROPERTY, DataFormat.class)) {
+ // message body is an input stream so it is not copied to new exchange
+ return;
+ }
+
+ org.apache.camel.Message message = exchange.getIn();
+ if (message != null) {
+ this.setIn(message);
+ }
+
+ message = exchange.getOut(false);
+ if (message != null) {
+ this.setOut(message);
+ }
+
+ message = exchange.getFault(false);
+ if (message != null) {
+ this.setFault(message);
+ }
+
}
public CxfExchange(CamelContext context, ExchangePattern pattern, Message inMessage) {
Modified: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java Thu Sep 3 04:08:46 2009
@@ -17,6 +17,7 @@
package org.apache.camel.component.cxf.soap.headers;
+import java.io.StringReader;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
@@ -35,10 +36,13 @@
import javax.xml.ws.Holder;
import org.w3c.dom.Node;
+
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
+import org.apache.camel.Processor;
import org.apache.camel.component.cxf.CxfConstants;
import org.apache.camel.component.cxf.CxfEndpoint;
+import org.apache.camel.component.cxf.CxfMessage;
import org.apache.camel.component.cxf.headers.MessageHeadersRelay;
import org.apache.camel.impl.DefaultExchange;
import org.apache.camel.spring.SpringTestSupport;
@@ -47,9 +51,12 @@
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.ServerImpl;
import org.apache.cxf.headers.Header;
+import org.apache.cxf.headers.Header.Direction;
import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.jaxb.JAXBDataBinding;
import org.apache.cxf.jaxws.EndpointImpl;
+import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageContentsList;
import org.apache.cxf.outofband.header.OutofBandHeader;
import org.springframework.context.support.AbstractXmlApplicationContext;
@@ -60,7 +67,8 @@
private ServerImpl relayServer;
private ServerImpl noRelayServer;
-
+ private ServerImpl relayServerWithInsertion;
+
@Override
protected void setUp() throws Exception {
setUseRouteBuilder(false);
@@ -76,7 +84,10 @@
if (noRelayServer != null) {
noRelayServer.stop();
}
-
+ if (relayServerWithInsertion != null) {
+ relayServerWithInsertion.stop();
+ }
+
super.tearDown();
BusFactory.setDefaultBus(null);
}
@@ -96,6 +107,11 @@
address = "http://localhost:7070/HeaderService/";
endpoint = (EndpointImpl) Endpoint.publish(address, impl);
noRelayServer = endpoint.getServer();
+
+ impl = new HeaderTesterWithInsertionImpl();
+ address = "http://localhost:5091/HeaderService/";
+ endpoint = (EndpointImpl) Endpoint.publish(address, impl);
+ relayServerWithInsertion = endpoint.getServer();
}
@@ -200,7 +216,30 @@
response.getFirstName().equals("pass"));
validateReturnedOutOfBandHeader(proxy);
}
+
+ public void testInoutOutOfBandHeaderCXFClientRelayWithHeaderInsertion() throws Exception {
+ HeaderService s = new HeaderService(getClass().getClassLoader().getResource("soap_header.wsdl"),
+ HeaderService.SERVICE);
+ HeaderTester proxy = s.getSoapPortRelayWithInsertion();
+ addOutOfBoundHeader(proxy, false);
+ Me me = new Me();
+ me.setFirstName("john");
+ me.setLastName("Doh");
+ Me response = proxy.inoutOutOfBandHeader(me);
+ assertTrue("Expected the out of band header to propagate but it didn't",
+ response.getFirstName().equals("pass"));
+
+ InvocationHandler handler = Proxy.getInvocationHandler(proxy);
+ BindingProvider bp = null;
+ if (!(handler instanceof BindingProvider)) {
+ fail("Unable to cast dynamic proxy InocationHandler to BindingProvider type");
+ }
+ bp = (BindingProvider)handler;
+ Map<String, Object> responseContext = bp.getResponseContext();
+ validateReturnedOutOfBandHeaderWithInsertion(responseContext, true);
+ }
+
public void testOutOutOfBandHeaderCXFClientRelay() throws Exception {
HeaderService s = new HeaderService(getClass().getClassLoader().getResource("soap_header.wsdl"),
HeaderService.SERVICE);
@@ -341,7 +380,6 @@
public void testInOutOutOfBandHeaderCamelTemplateRelay() throws Exception {
doTestInOutOutOfBandHeaderCamelTemplate("direct:relayProducer");
}
-
protected void doTestInOutOfBandHeaderCamelTemplate(String producerUri) throws Exception {
// START SNIPPET: sending
@@ -488,4 +526,105 @@
+ hdrToTest.getHdrAttribute(), "testReturnHdrAttribute"
.equals(hdrToTest.getHdrAttribute()));
}
+
+ protected static void validateReturnedOutOfBandHeaderWithInsertion(Map<String, Object> responseContext, boolean expect) {
+ List<OutofBandHeader> hdrToTest = new ArrayList<OutofBandHeader>();
+ List oobHdr = (List)responseContext.get(Header.HEADER_LIST);
+ if (!expect) {
+ if (oobHdr == null || (oobHdr != null && oobHdr.size() == 0)) {
+ return;
+ }
+ fail("Should have got *no* out-of-band headers, but some were found");
+ }
+ if (oobHdr == null) {
+ fail("Should have got List of out-of-band headers");
+ }
+
+ assertTrue("HeaderHolder list expected to conain 2 object received " + oobHdr.size(),
+ oobHdr.size() == 2);
+
+ int i = 0;
+ if (oobHdr != null & oobHdr instanceof List) {
+ Iterator iter = oobHdr.iterator();
+ while (iter.hasNext()) {
+ Object hdr = iter.next();
+ if (hdr instanceof Header) {
+ Header hdr1 = (Header)hdr;
+ if (hdr1.getObject() instanceof Node) {
+ try {
+ JAXBElement job = (JAXBElement)JAXBContext
+ .newInstance(org.apache.cxf.outofband.header.ObjectFactory.class)
+ .createUnmarshaller().unmarshal((Node)hdr1.getObject());
+ hdrToTest.add((OutofBandHeader)job.getValue());
+ } catch (JAXBException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+ }
+ }
+
+ assertTrue("out-of-band header should not be null", hdrToTest.size() > 0);
+ assertTrue("Expected out-of-band Header name testOobReturnHeaderName recevied :"
+ + hdrToTest.get(0).getName(), "testOobReturnHeaderName".equals(hdrToTest.get(0).getName()));
+ assertTrue("Expected out-of-band Header value testOobReturnHeaderValue recevied :"
+ + hdrToTest.get(0).getValue(), "testOobReturnHeaderValue".equals(hdrToTest.get(0).getValue()));
+ assertTrue("Expected out-of-band Header attribute testReturnHdrAttribute recevied :"
+ + hdrToTest.get(0).getHdrAttribute(), "testReturnHdrAttribute"
+ .equals(hdrToTest.get(0).getHdrAttribute()));
+
+ assertTrue("Expected out-of-band Header name New_testOobHeader recevied :"
+ + hdrToTest.get(1).getName(), "New_testOobHeader".equals(hdrToTest.get(1).getName()));
+ assertTrue("Expected out-of-band Header value New_testOobHeaderValue recevied :"
+ + hdrToTest.get(1).getValue(), "New_testOobHeaderValue".equals(hdrToTest.get(1).getValue()));
+ assertTrue("Expected out-of-band Header attribute testHdrAttribute recevied :"
+ + hdrToTest.get(1).getHdrAttribute(), "testHdrAttribute"
+ .equals(hdrToTest.get(1).getHdrAttribute()));
+ }
+
+ public static class InsertRequestOutHeaderProcessor implements Processor {
+
+ public void process(Exchange exchange) throws Exception {
+ CxfMessage message = exchange.getIn().getBody(CxfMessage.class);
+ Message cxf = message.getMessage();
+ List<SoapHeader> soapHeaders = (List)cxf.get(Header.HEADER_LIST);
+
+ // Insert a new header
+ String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><outofbandHeader "
+ + "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
+ + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\">"
+ + "<name>New_testOobHeader</name><value>New_testOobHeaderValue</value></outofbandHeader>";
+
+ SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
+ DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
+ // make sure direction is IN since it is a request message.
+ newHeader.setDirection(Direction.DIRECTION_IN);
+ //newHeader.setMustUnderstand(false);
+ soapHeaders.add(newHeader);
+
+ }
+
+ }
+
+ public static class InsertResponseOutHeaderProcessor implements Processor {
+
+ public void process(Exchange exchange) throws Exception {
+ CxfMessage message = exchange.getOut().getBody(CxfMessage.class);
+ Map responseContext = (Map)message.getMessage().get(Client.RESPONSE_CONTEXT);
+ List<SoapHeader> soapHeaders = (List)responseContext.get(Header.HEADER_LIST);
+
+ // Insert a new header
+ String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><outofbandHeader "
+ + "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
+ + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\">"
+ + "<name>New_testOobHeader</name><value>New_testOobHeaderValue</value></outofbandHeader>";
+ SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
+ DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
+ // make sure direction is OUT since it is a response message.
+ newHeader.setDirection(Direction.DIRECTION_OUT);
+ //newHeader.setMustUnderstand(false);
+ soapHeaders.add(newHeader);
+
+ }
+ }
}
Modified: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterImpl.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterImpl.java?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterImpl.java (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterImpl.java Thu Sep 3 04:08:46 2009
@@ -21,9 +21,6 @@
import java.util.logging.Logger;
import javax.annotation.Resource;
-import javax.jws.WebMethod;
-import javax.jws.WebParam;
-import javax.jws.WebResult;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
@@ -56,8 +53,8 @@
private static final Logger LOG = Logger.getLogger(HeaderTesterImpl.class.getName());
@Resource
- private WebServiceContext context;
- private boolean relayHeaders = true;
+ protected WebServiceContext context;
+ protected boolean relayHeaders = true;
public HeaderTesterImpl() {
}
@@ -189,7 +186,7 @@
}
}
- private boolean validateOutOfBandHander() {
+ protected boolean validateOutOfBandHander() {
MessageContext ctx = context == null ? null : context.getMessageContext();
if (!relayHeaders) {
if (ctx != null
Added: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java?rev=810776&view=auto
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java (added)
+++ camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java Thu Sep 3 04:08:46 2009
@@ -0,0 +1,93 @@
+/**
+ * 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.component.cxf.soap.headers;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.ws.handler.MessageContext;
+
+import org.w3c.dom.Node;
+
+import org.apache.cxf.headers.Header;
+import org.apache.cxf.outofband.header.OutofBandHeader;
+
+public class HeaderTesterWithInsertionImpl extends HeaderTesterImpl {
+
+ @Override
+ protected boolean validateOutOfBandHander() {
+ MessageContext ctx = context == null ? null : context.getMessageContext();
+ if (!relayHeaders) {
+ if (ctx != null
+ && !ctx.containsKey(Header.HEADER_LIST)
+ || (ctx.containsKey(Header.HEADER_LIST)
+ && ((List)ctx.get(Header.HEADER_LIST)).size() == 0)) {
+ return true;
+ }
+ return false;
+ }
+
+ boolean success = false;
+ if (ctx != null && ctx.containsKey(Header.HEADER_LIST)) {
+ List oobHdr = (List) ctx.get(Header.HEADER_LIST);
+ if (oobHdr.size() != 2) {
+ throw new RuntimeException("test failed expected 2 soap headers but found " + oobHdr.size());
+ }
+ verifyHeader(oobHdr.get(0), "testOobHeader", "testOobHeaderValue");
+ verifyHeader(oobHdr.get(1), "New_testOobHeader", "New_testOobHeaderValue");
+ oobHdr.clear();
+ success = true;
+ } else {
+ throw new RuntimeException("MessageContext is null or doesnot contain OOBHeaders");
+ }
+
+ return success;
+ }
+
+ private void verifyHeader(Object hdr, String headerName, String headerValue) {
+ if (hdr instanceof Header && ((Header) hdr).getObject() instanceof Node) {
+ Header hdr1 = (Header) hdr;
+ try {
+ JAXBElement job =
+ (JAXBElement)JAXBContext.newInstance(org.apache.cxf.outofband.header.ObjectFactory.class)
+ .createUnmarshaller()
+ .unmarshal((Node) hdr1.getObject());
+ OutofBandHeader ob = (OutofBandHeader) job.getValue();
+ if (!headerName.equals(ob.getName())) {
+ throw new RuntimeException("test failed expected name ' + headerName + ' but found '"
+ + ob.getName() + "'");
+ }
+
+ if (!headerValue.equals(ob.getValue())) {
+ throw new RuntimeException("test failed expected name ' + headerValue + ' but found '"
+ + ob.getValue() + "'");
+ }
+ } catch (JAXBException ex) {
+ throw new RuntimeException("test failed", ex);
+ }
+ } else {
+ throw new RuntimeException("test failed. Unexpected type " + hdr.getClass());
+ }
+
+ }
+
+
+
+}
Propchange: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/branches/camel-1.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/HeaderTesterWithInsertionImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/branches/camel-1.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/message_headers_relay.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/message_headers_relay.xml?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/message_headers_relay.xml (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/message_headers_relay.xml Thu Sep 3 04:08:46 2009
@@ -39,6 +39,21 @@
xmlns:tns="http://apache.org/camel/component/cxf/soap/headers">
</cxf:cxfEndpoint>
+ <cxf:cxfEndpoint id="routerRelayEndpointWithInsertion"
+ address="http://localhost:5000/HeaderService/"
+ serviceClass="org.apache.camel.component.cxf.soap.headers.HeaderTester"
+ endpointName="tns:SoapPortRelayWithInsertion"
+ serviceName="tns:HeaderService"
+ wsdlURL="soap_header.wsdl"
+ xmlns:tns="http://apache.org/camel/component/cxf/soap/headers">
+ <cxf:inInterceptors>
+ <ref bean="logInbound"/>
+ </cxf:inInterceptors>
+ <cxf:outInterceptors>
+ <ref bean="loggingOutInterceptor"/>
+ </cxf:outInterceptors>
+ </cxf:cxfEndpoint>
+
<cxf:cxfEndpoint id="routerNoRelayEndpoint"
address="http://localhost:7000/HeaderService"
serviceClass="org.apache.camel.component.cxf.soap.headers.HeaderTester"
@@ -57,6 +72,21 @@
wsdlURL="soap_header.wsdl"
xmlns:tns="http://apache.org/camel/component/cxf/soap/headers">
</cxf:cxfEndpoint>
+
+ <cxf:cxfEndpoint id="serviceRelayEndpointWithInsertion"
+ address="http://localhost:5091/HeaderService/"
+ serviceClass="org.apache.camel.component.cxf.soap.headers.HeaderTester"
+ endpointName="tns:SoapPortRelayWithInsertion"
+ serviceName="tns:HeaderService"
+ wsdlURL="soap_header.wsdl"
+ xmlns:tns="http://apache.org/camel/component/cxf/soap/headers">
+ <cxf:inInterceptors>
+ <ref bean="logInbound"/>
+ </cxf:inInterceptors>
+ <cxf:outInterceptors>
+ <ref bean="loggingOutInterceptor"/>
+ </cxf:outInterceptors>
+ </cxf:cxfEndpoint>
<cxf:cxfEndpoint id="serviceNoRelayEndpoint"
address="http://localhost:7070/HeaderService/"
@@ -83,7 +113,7 @@
</entry>
</cxf:properties>
</cxf:cxfEndpoint>
-
+
<bean id="customHeadersRelay" class="org.apache.camel.component.cxf.soap.headers.CustomHeadersRelay"/>
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
@@ -92,6 +122,12 @@
<to uri="cxf:bean:serviceRelayEndpoint"/>
</route>
<route>
+ <from uri="cxf:bean:routerRelayEndpointWithInsertion"/>
+ <process ref="InsertRequestOutHeaderProcessor" />
+ <to uri="cxf:bean:serviceRelayEndpointWithInsertion"/>
+ <process ref="InsertResponseOutHeaderProcessor" />
+ </route>
+ <route>
<from uri="direct:directProducer" />
<to uri="cxf:bean:serviceRelayEndpoint?dataFormat=POJO" />
</route>
@@ -108,4 +144,11 @@
<to uri="mock:result"/>
</route>
</camelContext>
+
+ <bean id="InsertRequestOutHeaderProcessor" class="org.apache.camel.component.cxf.soap.headers.CxfMessageHeadersRelayTest$InsertRequestOutHeaderProcessor" />
+ <bean id="InsertResponseOutHeaderProcessor" class="org.apache.camel.component.cxf.soap.headers.CxfMessageHeadersRelayTest$InsertResponseOutHeaderProcessor" />
+ <bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
+ <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+
+
</beans>
Modified: camel/branches/camel-1.x/components/camel-cxf/src/test/resources/soap_header.wsdl
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-cxf/src/test/resources/soap_header.wsdl?rev=810776&r1=810775&r2=810776&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-cxf/src/test/resources/soap_header.wsdl (original)
+++ camel/branches/camel-1.x/components/camel-cxf/src/test/resources/soap_header.wsdl Thu Sep 3 04:08:46 2009
@@ -278,6 +278,9 @@
</port>
<port binding="tns:headerTesterSOAPBinding" name="SoapPortCustomRelay">
<soap:address location="http://localhost:6000/HeaderService/"/>
- </port>
+ </port>
+ <port binding="tns:headerTesterSOAPBinding" name="SoapPortRelayWithInsertion">
+ <soap:address location="http://localhost:5000/HeaderService/"/>
+ </port>
</service>
</definitions>