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