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/17 20:20:35 UTC
svn commit: r1362594 - in
/camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf:
CxfEndpoint.java converter/CxfPayloadConverter.java
Author: dkulp
Date: Tue Jul 17 18:20:35 2012
New Revision: 1362594
URL: http://svn.apache.org/viewvc?rev=1362594&view=rev
Log:
Merged revisions 1362591 via git cherry-pick from
https://svn.apache.org/repos/asf/camel/branches/camel-2.10.x
........
r1362591 | dkulp | 2012-07-17 14:19:07 -0400 (Tue, 17 Jul 2012) | 11 lines
Merged revisions 1362589 via git cherry-pick from
https://svn.apache.org/repos/asf/camel/trunk
........
r1362589 | dkulp | 2012-07-17 14:18:10 -0400 (Tue, 17 Jul 2012) | 3 lines
Some optimizations and fixes around getting the name from stax based
payloads
........
........
Modified:
camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.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/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java?rev=1362594&r1=1362593&r2=1362594&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java (original)
+++ camel/branches/camel-2.9.x/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java Tue Jul 17 18:20:35 2012
@@ -33,7 +33,9 @@ import javax.xml.transform.stream.Stream
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.handler.Handler;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelException;
@@ -886,35 +888,37 @@ public class CxfEndpoint extends Default
private String findName(List<Source> sources, int i) {
Source source = sources.get(i);
+ XMLStreamReader r = null;
if (source instanceof DOMSource) {
- return ((Element)((DOMSource)source).getNode()).getLocalName();
+ Node nd = ((DOMSource)source).getNode();
+ if (nd instanceof Document) {
+ nd = ((Document)nd).getDocumentElement();
+ }
+ return ((Element)nd).getLocalName();
} else if (source instanceof StaxSource) {
StaxSource s = (StaxSource)source;
- return s.getXMLStreamReader().getLocalName();
+ r = s.getXMLStreamReader();
} else if (source instanceof StAXSource) {
StAXSource s = (StAXSource)source;
- XMLStreamReader r = s.getXMLStreamReader();
- if (r.getEventType() != XMLStreamReader.START_ELEMENT) {
- try {
- r.nextTag();
- } catch (XMLStreamException e) {
- //ignore
- }
- }
- return r.getLocalName();
+ r = s.getXMLStreamReader();
} else if (source instanceof StreamSource) {
//flip to stax so we can get the name
- XMLStreamReader reader = StaxUtils.createXMLStreamReader(source);
- StaxSource src2 = new StaxSource(reader);
+ r = StaxUtils.createXMLStreamReader(source);
+ StaxSource src2 = new StaxSource(r);
sources.set(i, src2);
- if (reader.getEventType() == XMLStreamReader.START_DOCUMENT) {
- try {
- reader.nextTag();
- } catch (XMLStreamException e) {
- //ignore
+ }
+ if (r != null) {
+ try {
+ if (r.getEventType() == XMLStreamReader.START_DOCUMENT) {
+ r.next();
+ }
+ if (r.getEventType() != XMLStreamReader.START_ELEMENT) {
+ r.nextTag();
}
+ } catch (XMLStreamException e) {
+ //ignore
}
- return reader.getLocalName();
+ return r.getLocalName();
}
return 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=1362594&r1=1362593&r2=1362594&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 Tue Jul 17 18:20:35 2012
@@ -21,6 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -145,7 +146,13 @@ public final class CxfPayloadConverter {
if (payload.getBodySources().size() == 1) {
TypeConverter tc = registry.lookup(type, Source.class);
if (tc != null) {
- return tc.convertTo(type, payload.getBodySources().get(0));
+ T t = tc.convertTo(type, payload.getBodySources().get(0));
+ if (t instanceof Document) {
+ payload.getBodySources().set(0, new DOMSource(((Document)t).getDocumentElement()));
+ } else if (t instanceof Source) {
+ payload.getBodySources().set(0, (Source)t);
+ }
+ return t;
}
}
TypeConverter tc = registry.lookup(type, NodeList.class);