Author: wtam Date: Tue Oct 20 21:10:08 2009 New Revision: 827794 URL: http://svn.apache.org/viewvc?rev=827794&view=rev Log: add soap header filter that uses no service class config
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java?rev=827794&r1=827793&r2=827794&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java (original) +++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java Tue Oct 20 21:10:08 2009 @@ -34,6 +34,7 @@ import javax.xml.ws.Endpoint; import javax.xml.ws.Holder; +import org.w3c.dom.Element; import org.w3c.dom.Node; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; @@ -43,6 +44,7 @@ import org.apache.camel.component.cxf.CxfConstants; import org.apache.camel.component.cxf.CxfEndpoint; import org.apache.camel.component.cxf.CxfHeaderFilterStrategy; +import org.apache.camel.component.cxf.CxfPayload; import org.apache.camel.component.cxf.MessageHeaderFilter; import org.apache.camel.impl.DefaultExchange; import org.apache.cxf.binding.soap.SoapHeader; @@ -51,6 +53,7 @@ import org.apache.cxf.headers.Header.Direction; import org.apache.cxf.helpers.CastUtils; import org.apache.cxf.helpers.DOMUtils; +import org.apache.cxf.helpers.XMLUtils; import org.apache.cxf.jaxb.JAXBDataBinding; import org.apache.cxf.message.MessageContentsList; import org.apache.cxf.outofband.header.OutofBandHeader; @@ -349,6 +352,43 @@ assertTrue("Expected in band response header *not* to propagate but did", header.value == null); } + + @Test + public void testInoutHeaderCXFClientNoServiceClassNoRelay() throws Exception { + QName qname = QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SOAPHeaderInfo"); + String uri = "cxf:bean:routerNoRelayNoServiceClassEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"; + String requestHeader = "<ns2:SOAPHeaderInfo xmlns:ns2=\"http://apache.org/camel/" + + "component/cxf/soap/headers\"><originator>CxfSoapHeaderRoutePropagationTest.testInOutHeader Requestor" + + "</originator><message>Invoking CxfSoapHeaderRoutePropagationTest.testInOutHeader() Request" + + "</message></ns2:SOAPHeaderInfo>"; + String requestBody = "<ns2:inoutHeader xmlns:ns2=\"http://apache.org/camel/component/cxf/soap/headers\">" + + "<requestType>CXF user</requestType></ns2:inoutHeader>"; + List<Element> elements = new ArrayList<Element>(); + elements.add(DOMUtils.readXml(new StringReader(requestBody)).getDocumentElement()); + final List<SoapHeader> headers = new ArrayList<SoapHeader>(); + headers.add(new SoapHeader(qname, + DOMUtils.readXml(new StringReader(requestHeader)).getDocumentElement())); + final CxfPayload<SoapHeader> cxfPayload = new CxfPayload<SoapHeader>(headers, elements); + + Exchange exchange = template.send(uri, new Processor() { + public void process(Exchange exchange) throws Exception { + exchange.getIn().setBody(cxfPayload); + exchange.getIn().setHeader(Header.HEADER_LIST, headers); + } + + }); + + CxfPayload<?> out = exchange.getOut().getBody(CxfPayload.class); + assertEquals(1, out.getBody().size()); + + assertEquals(0, out.getHeaders().size()); + + String response = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + + "<ns2:inoutHeaderResponse xmlns:ns2=\"http://apache.org/camel/" + + "component/cxf/soap/headers\"><responseType>pass</responseType>" + + "</ns2:inoutHeaderResponse>"; + assertEquals(response, XMLUtils.toString(out.getBody().get(0))); + } @Test public void testMessageHeadersRelaysSpringContext() throws Exception { Modified: camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml?rev=827794&r1=827793&r2=827794&view=diff ============================================================================== --- camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml (original) +++ camel/trunk/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest-context.xml Tue Oct 20 21:10:08 2009 @@ -46,7 +46,7 @@ <ref bean="logInbound"/> </cxf:inInterceptors> <cxf:outInterceptors> - <ref bean="loggingOutInterceptor"/> + <ref bean="logOutbound"/> </cxf:outInterceptors> </cxf:cxfEndpoint> @@ -62,6 +62,17 @@ <entry key="dataFormat" value="PAYLOAD"/> </cxf:properties> </cxf:cxfEndpoint> + + <cxf:cxfEndpoint id="routerNoRelayNoServiceClassEndpoint" + address="http://localhost:7002/HeaderService" + endpointName="tns:SoapPortNoRelay" + serviceName="tns:HeaderService" + wsdlURL="soap_header.wsdl" + xmlns:tns="http://apache.org/camel/component/cxf/soap/headers"> + <cxf:properties> + <entry key="dataFormat" value="PAYLOAD"/> + </cxf:properties> + </cxf:cxfEndpoint> <cxf:cxfEndpoint id="serviceRelayEndpoint" address="http://localhost:9091/HeaderService/" @@ -83,7 +94,7 @@ <ref bean="logInbound"/> </cxf:inInterceptors> <cxf:outInterceptors> - <ref bean="loggingOutInterceptor"/> + <ref bean="logOutbound"/> </cxf:outInterceptors> </cxf:cxfEndpoint> @@ -100,6 +111,17 @@ </cxf:properties> </cxf:cxfEndpoint> + <cxf:cxfEndpoint id="serviceNoRelayNoServiceClassEndpoint" + address="http://localhost:7070/HeaderService/" + endpointName="tns:SoapPortNoRelay" + serviceName="tns:HeaderService" + wsdlURL="soap_header.wsdl" + xmlns:tns="http://apache.org/camel/component/cxf/soap/headers"> + <cxf:properties> + <entry key="dataFormat" value="PAYLOAD"/> + </cxf:properties> + </cxf:cxfEndpoint> + <cxf:cxfEndpoint id="serviceExtraRelays" address="http://localhost:6060/HeaderService/" serviceClass="org.apache.camel.component.cxf.soap.headers.HeaderTester" @@ -163,6 +185,11 @@ <!-- END SNIPPET: noRelayRoute --> <route> + <from uri="cxf:bean:routerNoRelayNoServiceClassEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/> + <to uri="cxf:bean:serviceNoRelayNoServiceClassEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy"/> + </route> + + <route> <from uri="cxf:bean:serviceExtraRelays?headerFilterStrategy=#customMessageFilterStrategy"/> <to uri="mock:result"/> </route> @@ -170,6 +197,6 @@ <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="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/> </beans>