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 2014/08/29 11:23:10 UTC

[1/2] git commit: CAMEL-7762 Fixed the Camel CxfPayload issue when using namespace with no prefix (xmlns:xmlns)

Repository: camel
Updated Branches:
  refs/heads/camel-2.12.x ad9624787 -> 2776fd555
  refs/heads/camel-2.13.x 4ce44057d -> 1c6b76ade


CAMEL-7762 Fixed the Camel CxfPayload issue when using namespace with no prefix (xmlns:xmlns)


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1c6b76ad
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1c6b76ad
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1c6b76ad

Branch: refs/heads/camel-2.13.x
Commit: 1c6b76ade9770ee67d454ec7187770f7d4b69e33
Parents: 4ce4405
Author: Willem Jiang <wi...@gmail.com>
Authored: Fri Aug 29 17:19:20 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Fri Aug 29 17:22:33 2014 +0800

----------------------------------------------------------------------
 .../apache/camel/component/cxf/CxfPayload.java  |  6 +++-
 .../camel/component/cxf/DefaultCxfBinding.java  |  6 +++-
 .../component/cxf/DefaultCxfBindingTest.java    | 35 ++++++++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1c6b76ad/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
index 2fad481..1330b0f 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
@@ -110,7 +110,11 @@ public class CxfPayload<T> {
     protected static void addNamespace(Element element, Map<String, String> nsMap) {
         if (nsMap != null) {
             for (String ns : nsMap.keySet()) {
-                element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+                if (XMLConstants.XMLNS_ATTRIBUTE.equals(ns)) {
+                    element.setAttribute(ns, nsMap.get(ns));
+                } else {
+                    element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+                }
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/1c6b76ad/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
index 4ca79df..ef4c072 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
@@ -731,7 +731,11 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware
 
     protected static void addNamespace(Element element, Map<String, String> nsMap) {
         for (String ns : nsMap.keySet()) {
-            element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+            if (XMLConstants.XMLNS_ATTRIBUTE.equals(ns)) {
+                element.setAttribute(ns, nsMap.get(ns));
+            } else {
+                element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+            }
         }
                      
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/1c6b76ad/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
index 2faa63f..2097f3e 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
@@ -27,10 +27,17 @@ import java.util.TreeMap;
 
 import javax.activation.DataHandler;
 import javax.activation.FileDataSource;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
+import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultHeaderFilterStrategy;
@@ -43,6 +50,7 @@ import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.message.Attachment;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 import org.junit.Assert;
@@ -52,6 +60,11 @@ import org.junit.Test;
  * 
  */
 public class DefaultCxfBindingTest extends Assert {
+    
+    private static final String SOAP_MESSAGE = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""
+        + " xmlns=\"http://www.mycompany.com/test/\" xmlns:ns1=\"http://www.mycompany.com/test/1/\">"
+        + " <soap:Body> <request> <ns1:identifier>TEST</ns1:identifier> </request>"
+        + " </soap:Body> </soap:Envelope>";
     private DefaultCamelContext context = new DefaultCamelContext();
 
     @Test
@@ -64,6 +77,28 @@ public class DefaultCxfBindingTest extends Assert {
     }
     
     @Test
+    public void testPayloadBodyNamespace() throws Exception {
+        MessageImpl message = new MessageImpl();
+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+        documentBuilderFactory.setNamespaceAware(true);
+        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+        Document document = documentBuilder.parse(IOConverter.toInputStream(SOAP_MESSAGE, null));
+        document.getDocumentElement().normalize();
+        message.setContent(Node.class, document);
+        Map<String, String> nsMap = new HashMap<String, String>();
+        DefaultCxfBinding.getPayloadBodyElements(message, nsMap);
+        
+        assertEquals(2, nsMap.size());
+        assertEquals("http://www.mycompany.com/test/", nsMap.get("xmlns"));
+        
+        document = documentBuilder.newDocument();
+        Element element = document.createElement("tag");
+        DefaultCxfBinding.addNamespace(element, nsMap);
+        assertEquals("http://www.mycompany.com/test/", element.getAttribute("xmlns"));
+        assertEquals("http://www.mycompany.com/test/1/", element.getAttribute("xmlns:ns1"));
+    }
+    
+    @Test
     public void testSetCharsetWithContentType() {
         DefaultCxfBinding cxfBinding = new DefaultCxfBinding();
         cxfBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy());


[2/2] git commit: CAMEL-7762 Fixed the Camel CxfPayload issue when using namespace with no prefix (xmlns:xmlns)

Posted by ni...@apache.org.
CAMEL-7762 Fixed the Camel CxfPayload issue when using namespace with no prefix (xmlns:xmlns)


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2776fd55
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2776fd55
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2776fd55

Branch: refs/heads/camel-2.12.x
Commit: 2776fd555b52e3e0073f81fab97775c406e541d8
Parents: ad96247
Author: Willem Jiang <wi...@gmail.com>
Authored: Fri Aug 29 17:19:20 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Fri Aug 29 17:22:47 2014 +0800

----------------------------------------------------------------------
 .../apache/camel/component/cxf/CxfPayload.java  |  6 +++-
 .../camel/component/cxf/DefaultCxfBinding.java  |  6 +++-
 .../component/cxf/DefaultCxfBindingTest.java    | 35 ++++++++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2776fd55/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
index 2fad481..1330b0f 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfPayload.java
@@ -110,7 +110,11 @@ public class CxfPayload<T> {
     protected static void addNamespace(Element element, Map<String, String> nsMap) {
         if (nsMap != null) {
             for (String ns : nsMap.keySet()) {
-                element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+                if (XMLConstants.XMLNS_ATTRIBUTE.equals(ns)) {
+                    element.setAttribute(ns, nsMap.get(ns));
+                } else {
+                    element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+                }
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/2776fd55/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
index 337bf89..97c0274 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
@@ -733,7 +733,11 @@ public class DefaultCxfBinding implements CxfBinding, HeaderFilterStrategyAware
 
     protected static void addNamespace(Element element, Map<String, String> nsMap) {
         for (String ns : nsMap.keySet()) {
-            element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+            if (XMLConstants.XMLNS_ATTRIBUTE.equals(ns)) {
+                element.setAttribute(ns, nsMap.get(ns));
+            } else {
+                element.setAttribute(XMLConstants.XMLNS_ATTRIBUTE + ":" + ns, nsMap.get(ns));
+            }
         }
                      
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/2776fd55/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
index e6d9b3d..9b3a8ec 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/DefaultCxfBindingTest.java
@@ -27,10 +27,17 @@ import java.util.TreeMap;
 
 import javax.activation.DataHandler;
 import javax.activation.FileDataSource;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.component.cxf.common.message.CxfConstants;
+import org.apache.camel.converter.IOConverter;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultExchange;
 import org.apache.camel.impl.DefaultHeaderFilterStrategy;
@@ -43,6 +50,7 @@ import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.message.Attachment;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 import org.junit.Assert;
@@ -52,6 +60,11 @@ import org.junit.Test;
  * 
  */
 public class DefaultCxfBindingTest extends Assert {
+    
+    private static final String SOAP_MESSAGE = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""
+        + " xmlns=\"http://www.mycompany.com/test/\" xmlns:ns1=\"http://www.mycompany.com/test/1/\">"
+        + " <soap:Body> <request> <ns1:identifier>TEST</ns1:identifier> </request>"
+        + " </soap:Body> </soap:Envelope>";
     private DefaultCamelContext context = new DefaultCamelContext();
 
     @Test
@@ -64,6 +77,28 @@ public class DefaultCxfBindingTest extends Assert {
     }
     
     @Test
+    public void testPayloadBodyNamespace() throws Exception {
+        MessageImpl message = new MessageImpl();
+        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+        documentBuilderFactory.setNamespaceAware(true);
+        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
+        Document document = documentBuilder.parse(IOConverter.toInputStream(SOAP_MESSAGE, null));
+        document.getDocumentElement().normalize();
+        message.setContent(Node.class, document);
+        Map<String, String> nsMap = new HashMap<String, String>();
+        DefaultCxfBinding.getPayloadBodyElements(message, nsMap);
+        
+        assertEquals(2, nsMap.size());
+        assertEquals("http://www.mycompany.com/test/", nsMap.get("xmlns"));
+        
+        document = documentBuilder.newDocument();
+        Element element = document.createElement("tag");
+        DefaultCxfBinding.addNamespace(element, nsMap);
+        assertEquals("http://www.mycompany.com/test/", element.getAttribute("xmlns"));
+        assertEquals("http://www.mycompany.com/test/1/", element.getAttribute("xmlns:ns1"));
+    }
+    
+    @Test
     public void testSetCharsetWithContentType() {
         DefaultCxfBinding cxfBinding = new DefaultCxfBinding();
         cxfBinding.setHeaderFilterStrategy(new DefaultHeaderFilterStrategy());