Author: dkulp
Date: Tue Dec 18 21:12:27 2012
New Revision: 1423651
URL: http://svn.apache.org/viewvc?rev=1423651&view=rev
Log:
Merged revisions 1423645 via git cherry-pick from
https://svn.apache.org/repos/asf/camel/trunk
........
r1423645 | dkulp | 2012-12-18 15:58:07 -0500 (Tue, 18 Dec 2012) | 3 lines
[CAMEL-5877] Fix some issues converting to Source for CxfPayload
Modified patch from Aki Yoshida applied
........
Modified:
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
Modified:
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=1423651&r1=1423650&r2=1423651&view=diff
==============================================================================
---
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
(original)
+++
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
Tue Dec 18 21:12:27 2012
@@ -29,6 +29,7 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.WebServiceProvider;
@@ -931,7 +932,7 @@ public class CxfEndpoint extends Default
} else if (source instanceof StAXSource) {
StAXSource s = (StAXSource)source;
r = s.getXMLStreamReader();
- } else if (source instanceof StreamSource) {
+ } else if (source instanceof StreamSource || source instanceof
SAXSource) {
//flip to stax so we can get the name
r = StaxUtils.createXMLStreamReader(source);
StaxSource src2 = new StaxSource(r);
Modified:
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java?rev=1423651&r1=1423650&r2=1423651&view=diff
==============================================================================
---
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
(original)
+++
camel/branches/camel-2.10.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
Tue Dec 18 21:12:27 2012
@@ -17,6 +17,8 @@
package org.apache.camel.component.cxf.converter;
import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
@@ -113,11 +115,32 @@ public final class CxfPayloadConverter {
// CxfPayloads from other types
if (type.isAssignableFrom(CxfPayload.class)) {
if (!value.getClass().isArray()) {
- TypeConverter tc = registry.lookup(Source.class,
value.getClass());
- if (tc != null) {
- Source src = tc.convertTo(Source.class, exchange, value);
+ Source src = null;
+ // many of the common format that can have a Source created
directly
+ if (value instanceof InputStream) {
+ src = new StreamSource((InputStream)value);
+ } else if (value instanceof Reader) {
+ src = new StreamSource((Reader)value);
+ } else if (value instanceof String) {
+ src = new StreamSource(new StringReader((String)value));
+ } else if (value instanceof Node) {
+ src = new DOMSource((Node)value);
+ } else if (value instanceof Source) {
+ src = (Source)src;
+ }
+ if (src == null) {
+ // assuming staxsource is preferred, otherwise use the one
preferred
+ TypeConverter tc =
registry.lookup(javax.xml.transform.stax.StAXSource.class, value.getClass());
+ if (tc == null) {
+ tc = registry.lookup(Source.class, value.getClass());
+ }
+ if (tc != null) {
+ src = tc.convertTo(Source.class, exchange, value);
+ }
+ }
+ if (src != null) {
return (T) sourceToCxfPayload(src, exchange);
- }
+ }
}
TypeConverter tc = registry.lookup(NodeList.class,
value.getClass());
if (tc != null) {
Modified:
camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java?rev=1423651&r1=1423650&r2=1423651&view=diff
==============================================================================
---
camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
(original)
+++
camel/branches/camel-2.10.x/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/converter/CxfPayloadConverterTest.java
Tue Dec 18 21:12:27 2012
@@ -93,7 +93,10 @@ public class CxfPayloadConverterTest ext
exchange.getIn().setBody(inputStream);
CxfPayload<?> payload = exchange.getIn().getBody(CxfPayload.class);
assertTrue(payload instanceof CxfPayload);
+ assertEquals("Get a wrong size of body", 1,
payload.getBodySources().size());
assertEquals("Get a wrong size of body", 1, payload.getBody().size());
+ assertEquals("expects stream source", "streamsource",
payload.getBodySources().get(0).getClass().getSimpleName().toLowerCase());
+
}
@Test