You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dk...@apache.org on 2012/07/16 21:14:14 UTC
svn commit: r1362215 - in /camel/branches/camel-2.9.x:
camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
Author: dkulp
Date: Mon Jul 16 19:14:14 2012
New Revision: 1362215
URL: http://svn.apache.org/viewvc?rev=1362215&view=rev
Log:
Merged revisions 1362211 via git cherry-pick from
https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
........
r1362211 | dkulp | 2012-07-16 15:12:53 -0400 (Mon, 16 Jul 2012) | 12 lines
Merged revisions 1362210 via git cherry-pick from
https://svn.apache.org/repos/asf/camel/trunk
........
r1362210 | dkulp | 2012-07-16 15:11:29 -0400 (Mon, 16 Jul 2012) | 4 lines
[CXF-5449] Provide a direct CxfPayload -> Source conversion so XSLT
component can bypass the current CxfPayload(StaxSource) -> NodeList ->
DOMSource -> InputStream -> StreamSource thing it currently does.
........
........
Modified:
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java?rev=1362215&r1=1362214&r2=1362215&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/builder/xml/XsltBuilder.java Mon Jul 16 19:14:14 2012
@@ -47,6 +47,7 @@ import org.apache.camel.ExpectedBodyType
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.RuntimeTransformException;
+import org.apache.camel.TypeConverter;
import org.apache.camel.converter.jaxp.XmlConverter;
import org.apache.camel.converter.jaxp.XmlErrorListener;
import org.apache.camel.support.SynchronizationAdapter;
@@ -424,8 +425,10 @@ public class XsltBuilder implements Proc
return false;
} else if (body instanceof Node) {
return false;
+ } else if (exchange.getContext().getTypeConverterRegistry().lookup(Source.class, body.getClass()) != null) {
+ //there is a direct and hopefully optimized converter to Source
+ return false;
}
-
// yes an input stream is needed
return true;
}
@@ -446,9 +449,15 @@ public class XsltBuilder implements Proc
if (body instanceof Source) {
return (Source) body;
}
-
Source source = null;
- if (isAllowStAX()) {
+ if (body != null) {
+ TypeConverter tc = exchange.getContext().getTypeConverterRegistry().lookup(Source.class, body.getClass());
+ if (tc != null) {
+ source = tc.convertTo(Source.class, body);
+ }
+ }
+
+ if (source == null && isAllowStAX()) {
source = exchange.getContext().getTypeConverter().tryConvertTo(StAXSource.class, exchange, body);
}
if (source == null) {
Modified: camel/branches/camel-2.9.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.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java?rev=1362215&r1=1362214&r2=1362215&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java (original)
+++ camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/converter/CxfPayloadConverter.java Mon Jul 16 19:14:14 2012
@@ -90,6 +90,16 @@ public final class CxfPayloadConverter {
}
return null;
}
+
+ @Converter
+ public static <T> Source cxfPayLoadToSource(CxfPayload<T> payload, Exchange exchange) {
+ List<Source> payloadBody = payload.getBodySources();
+
+ if (payloadBody.size() > 0) {
+ return payloadBody.get(0);
+ }
+ return null;
+ }
@SuppressWarnings("unchecked")
@FallbackConverter
@@ -130,6 +140,14 @@ public final class CxfPayloadConverter {
}
// Convert a CxfPayload into something else
if (CxfPayload.class.isAssignableFrom(value.getClass())) {
+ CxfPayload<?> payload = (CxfPayload<?>) value;
+
+ if (payload.getBodySources().size() == 1) {
+ TypeConverter tc = registry.lookup(type, Source.class);
+ if (tc != null) {
+ return tc.convertTo(type, payload.getBodySources().get(0));
+ }
+ }
TypeConverter tc = registry.lookup(type, NodeList.class);
if (tc != null) {
return tc.convertTo(type, cxfPayloadToNodeList((CxfPayload<?>) value, exchange));