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());