You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2011/08/17 04:01:43 UTC
svn commit: r1158488 - in /camel/branches/camel-2.8.x: ./
components/camel-cxf/src/main/java/org/apache/camel/component/cxf/
components/camel-cxf/src/test/java/org/apache/camel/component/cxf/
Author: ningjiang
Date: Wed Aug 17 02:01:43 2011
New Revision: 1158488
URL: http://svn.apache.org/viewvc?rev=1158488&view=rev
Log:
Merged revisions 1157831,1158153 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r1157831 | ningjiang | 2011-08-15 21:00:13 +0800 (Mon, 15 Aug 2011) | 1 line
CAMEL-4336 camel-cxf payload should take consideration of the namespace which is defined in the soap envelope
........
r1158153 | ningjiang | 2011-08-16 16:34:23 +0800 (Tue, 16 Aug 2011) | 1 line
CAMEL-4336 clean up the test code
........
Added:
camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java
- copied, changed from r1157831, camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java
Modified:
camel/branches/camel-2.8.x/ (props changed)
camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java
camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java
Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 17 02:01:43 2011
@@ -1 +1 @@
-/camel/trunk:1155230,1156108,1156260,1156524,1157348,1157798,1157878
+/camel/trunk:1155230,1156108,1156260,1156524,1157348,1157798,1157831,1157878,1158153
Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java?rev=1158488&r1=1158487&r2=1158488&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java (original)
+++ camel/branches/camel-2.8.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java Wed Aug 17 02:01:43 2011
@@ -28,6 +28,7 @@ import java.util.TreeMap;
import javax.activation.DataHandler;
import javax.security.auth.Subject;
+import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
@@ -35,6 +36,7 @@ import javax.xml.ws.Holder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.apache.camel.Exchange;
@@ -44,6 +46,8 @@ import org.apache.camel.spi.HeaderFilter
import org.apache.camel.spi.HeaderFilterStrategyAware;
import org.apache.camel.util.ObjectHelper;
import org.apache.cxf.attachment.AttachmentImpl;
+import org.apache.cxf.binding.soap.Soap11;
+import org.apache.cxf.binding.soap.Soap12;
import org.apache.cxf.binding.soap.SoapBindingConstants;
import org.apache.cxf.binding.soap.SoapHeader;
import org.apache.cxf.endpoint.Client;
@@ -618,9 +622,28 @@ public class DefaultCxfBinding implement
}
return answer;
}
-
+
+ protected static void addNamespace(Element element, Map<String, String> nsMap) {
+ for (String ns : nsMap.keySet()) {
+ element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+ }
+
+ }
protected static List<Element> getPayloadBodyElements(Message message) {
+ // take the namespace attribute from soap envelop
+ Document soapEnv = (Document) message.getContent(Node.class);
+ Map<String, String> nsMap = new HashMap<String, String>();
+ if (soapEnv != null) {
+ NamedNodeMap attrs = soapEnv.getFirstChild().getAttributes();
+ for (int i = 0; i < attrs.getLength(); i++) {
+ Node node = attrs.item(i);
+ if (!node.getNodeValue().equals(Soap11.SOAP_NAMESPACE)
+ && !node.getNodeValue().equals(Soap12.SOAP_NAMESPACE)) {
+ nsMap.put(node.getLocalName(), node.getNodeValue());
+ }
+ }
+ }
MessageContentsList inObjects = MessageContentsList.getContentsList(message);
if (inObjects == null) {
return null;
@@ -667,6 +690,7 @@ public class DefaultCxfBinding implement
}
if (element != null) {
+ addNamespace(element, nsMap);
answer.add(element);
}
@@ -675,6 +699,7 @@ public class DefaultCxfBinding implement
element == null ? "null" : XMLUtils.toString(element));
}
} else if (part instanceof Element) {
+ addNamespace((Element)part, nsMap);
answer.add((Element)part);
} else {
if (LOG.isDebugEnabled()) {
Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java?rev=1158488&r1=1158487&r2=1158488&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java (original)
+++ camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerMessageTest.java Wed Aug 17 02:01:43 2011
@@ -72,7 +72,7 @@ public class CxfConsumerMessageTest exte
}
@Test
- public void testInvokingServiceFromCXFClient() throws Exception {
+ public void testInvokingServiceFromClient() throws Exception {
ClientProxyFactoryBean proxyFactory = new ClientProxyFactoryBean();
ClientFactoryBean clientBean = proxyFactory.getClientFactoryBean();
clientBean.setAddress(simpleEndpointAddress);
Modified: camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java?rev=1158488&r1=1158487&r2=1158488&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java (original)
+++ camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConsumerPayloadTest.java Wed Aug 17 02:01:43 2011
@@ -39,6 +39,16 @@ public class CxfConsumerPayloadTest exte
+ "<arg0 xmlns=\"http://cxf.component.camel.apache.org/\">Hello World!</arg0></ns1:echo>";
private static final String ECHO_BOOLEAN_REQUEST = "<ns1:echoBoolean xmlns:ns1=\"http://cxf.component.camel.apache.org/\">"
+ "<arg0 xmlns=\"http://cxf.component.camel.apache.org/\">true</arg0></ns1:echoBoolean>";
+
+ private static final String ELEMENT_NAMESPACE = "http://cxf.component.camel.apache.org/";
+
+ protected void checkRequest(String expect, String request) {
+ if (expect.equals("ECHO_REQUEST")) {
+ assertEquals("Get a wrong request", ECHO_REQUEST, request);
+ } else {
+ assertEquals("Get a wrong request", ECHO_BOOLEAN_REQUEST, request);
+ }
+ }
// START SNIPPET: payload
protected RouteBuilder createRouteBuilder() {
@@ -54,11 +64,17 @@ public class CxfConsumerPayloadTest exte
String request = exchange.getIn().getBody(String.class);
XmlConverter converter = new XmlConverter();
String documentString = ECHO_RESPONSE;
+
+ // Just check the element namespace
+ if (!inElements.get(0).getNamespaceURI().equals(ELEMENT_NAMESPACE)) {
+ throw new IllegalArgumentException("Wrong element namespace");
+ }
if (inElements.get(0).getLocalName().equals("echoBoolean")) {
documentString = ECHO_BOOLEAN_RESPONSE;
- assertEquals("Get a wrong request", ECHO_BOOLEAN_REQUEST, request);
+ checkRequest("ECHO_BOOLEAN_REQUEST", request);
} else {
- assertEquals("Get a wrong request", ECHO_REQUEST, request);
+ documentString = ECHO_RESPONSE;
+ checkRequest("ECHO_REQUEST", request);
}
Document outDocument = converter.toDOMDocument(documentString);
outElements.add(outDocument.getDocumentElement());
Copied: camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java (from r1157831, camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java)
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java?p2=camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java&p1=camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java&r1=1157831&r2=1158488&rev=1158488&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java (original)
+++ camel/branches/camel-2.8.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfConusmerNamespacePayLoadTest.java Wed Aug 17 02:01:43 2011
@@ -25,6 +25,11 @@ import org.apache.http.util.EntityUtils;
import org.junit.Test;
public class CxfConusmerNamespacePayLoadTest extends CxfConsumerPayloadTest {
+ private static final String ECHO_RESPONSE = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ + "<soap:Body><ns1:echoResponse xmlns:ns1=\"http://cxf.component.camel.apache.org/\">"
+ + "<return xmlns=\"http://cxf.component.camel.apache.org/\">echo Hello World!</return>"
+ + "</ns1:echoResponse></soap:Body></soap:Envelope>";
+
private static final String ECHO_REQUEST = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" "
+ "xmlns:ns1=\"http://cxf.component.camel.apache.org/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xmlns:ns2=\"http://cxf.component.camel.apache.org/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body>"
@@ -49,11 +54,10 @@ public class CxfConusmerNamespacePayLoad
try {
HttpResponse response = httpclient.execute(post);
- //assertEquals(200, response.getStatusLine().getStatusCode());
+ assertEquals(200, response.getStatusLine().getStatusCode());
String responseBody = EntityUtils.toString(response.getEntity());
- System.out.println(responseBody);
- //assertEquals("Get a wrong response", correct, responseBody);
+ assertEquals("Get a wrong response", ECHO_RESPONSE, responseBody);
} finally {
httpclient.getConnectionManager().shutdown();
}