You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ay...@apache.org on 2016/06/21 08:16:39 UTC
camel git commit: CAMEL-10080 CxfPayloadConverter to use a
XMLStreamReader based conversion if applicable
Repository: camel
Updated Branches:
refs/heads/master 84e6b76bd -> da0fc7bff
CAMEL-10080 CxfPayloadConverter to use a XMLStreamReader based conversion if applicable
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/da0fc7bf
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/da0fc7bf
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/da0fc7bf
Branch: refs/heads/master
Commit: da0fc7bffac1f369697ba20796e3c4343d349754
Parents: 84e6b76
Author: Akitoshi Yoshida <ay...@apache.org>
Authored: Tue Jun 21 10:16:09 2016 +0200
Committer: Akitoshi Yoshida <ay...@apache.org>
Committed: Tue Jun 21 10:16:33 2016 +0200
----------------------------------------------------------------------
.../component/cxf/converter/CxfPayloadConverter.java | 14 +++++++++++---
.../cxf/converter/CxfPayloadConverterTest.java | 13 +++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/da0fc7bf/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
index 74e0d10..196dbce 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
@@ -195,7 +195,16 @@ public final class CxfPayloadConverter {
if (type.isInstance(s)) {
return type.cast(s);
}
- TypeConverter tc = registry.lookup(type, Source.class);
+ TypeConverter tc = registry.lookup(type, XMLStreamReader.class);
+ if (tc != null && (s instanceof StaxSource || s instanceof StAXSource)) {
+ XMLStreamReader r = (s instanceof StAXSource)
+ ? ((StAXSource)s).getXMLStreamReader() : ((StaxSource) s).getXMLStreamReader();
+ if (payload.getNsMap() != null) {
+ r = new DelegatingXMLStreamReader(r, payload.getNsMap());
+ }
+ return (T)tc.convertTo(type, r);
+ }
+ tc = registry.lookup(type, Source.class);
if (tc != null) {
XMLStreamReader r = null;
if (payload.getNsMap() != null) {
@@ -208,8 +217,7 @@ public final class CxfPayloadConverter {
s = new StAXSource(new DelegatingXMLStreamReader(r, payload.getNsMap()));
}
}
- T t = tc.convertTo(type, s);
- return t;
+ return (T)tc.convertTo(type, s);
}
}
TypeConverter tc = registry.lookup(type, NodeList.class);
http://git-wip-us.apache.org/repos/asf/camel/blob/da0fc7bf/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
index 5bf636f..8e2d46c 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
@@ -27,6 +27,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stax.StAXSource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -36,6 +37,7 @@ import org.w3c.dom.NodeList;
import org.apache.camel.StreamCache;
import org.apache.camel.component.cxf.CxfPayload;
import org.apache.camel.test.junit4.ExchangeTestSupport;
+import org.apache.cxf.staxutils.StaxUtils;
import org.junit.Before;
import org.junit.Test;
@@ -43,6 +45,7 @@ public class CxfPayloadConverterTest extends ExchangeTestSupport {
private Document document;
private CxfPayload<String[]> payload;
private CxfPayload<String[]> emptyPayload;
+ private CxfPayload<String[]> staxpayload;
private FileInputStream inputStream;
@Override
@@ -62,8 +65,11 @@ public class CxfPayloadConverterTest extends ExchangeTestSupport {
document.getDocumentElement().normalize();
List<Source> body = new ArrayList<Source>();
body.add(new DOMSource(document.getDocumentElement()));
+ List<Source> staxbody = new ArrayList<Source>();
+ staxbody.add(new StAXSource(StaxUtils.createXMLStreamReader(new FileInputStream(file), "utf-8")));
payload = new CxfPayload<String[]>(new ArrayList<String[]>(), body, null);
emptyPayload = new CxfPayload<String[]>(new ArrayList<String[]>(), new ArrayList<Source>(), null);
+ staxpayload = new CxfPayload<String[]>(new ArrayList<String[]>(), staxbody, null);
inputStream = new FileInputStream(file);
}
@@ -115,6 +121,13 @@ public class CxfPayloadConverterTest extends ExchangeTestSupport {
}
@Test
+ public void testFromCxfStAXPayload() {
+ exchange.getIn().setBody(staxpayload);
+ InputStream inputStream = exchange.getIn().getBody(InputStream.class);
+ assertTrue(inputStream instanceof InputStream);
+ }
+
+ @Test
public void testCxfPayloadToNode() {
// call the payload conversion that works
exchange.getIn().setBody(payload);