You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/05/19 17:47:35 UTC

svn commit: r946235 - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java

Author: dkulp
Date: Wed May 19 15:47:35 2010
New Revision: 946235

URL: http://svn.apache.org/viewvc?rev=946235&view=rev
Log:
Handle some cases where empty source objects are passed.

Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
    cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=946235&r1=946234&r2=946235&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java Wed May 19 15:47:35 2010
@@ -352,28 +352,42 @@ public final class StaxUtils {
     }
     public static void copy(Source source, XMLStreamWriter writer) throws XMLStreamException {
         if (source instanceof SAXSource) {
-            InputSource src = ((SAXSource)source).getInputSource();
-            if (src.getSystemId() == null && src.getPublicId() == null
-                && ((SAXSource)source).getXMLReader() != null) {
-                //OK - reader is OK.  We'll use that out
-                StreamWriterContentHandler ch = new StreamWriterContentHandler(writer);
-                XMLReader reader = ((SAXSource)source).getXMLReader();
-                reader.setContentHandler(ch);
-                try {
+            SAXSource ss = (SAXSource)source;
+            InputSource src = ss.getInputSource();
+            if (src == null || (src.getSystemId() == null && src.getPublicId() == null)) {
+                if (ss.getXMLReader() != null) {
+                    //OK - reader is OK.  We'll use that out
+                    StreamWriterContentHandler ch = new StreamWriterContentHandler(writer);
+                    XMLReader reader = ((SAXSource)source).getXMLReader();
+                    reader.setContentHandler(ch);
                     try {
-                        reader.setFeature("http://xml.org/sax/features/namespaces", true);
-                    } catch (Throwable t) {
-                        //ignore
+                        try {
+                            reader.setFeature("http://xml.org/sax/features/namespaces", true);
+                        } catch (Throwable t) {
+                            //ignore
+                        }
+                        reader.parse(((SAXSource)source).getInputSource());
+                        return;
+                    } catch (Exception e) {
+                        throw new XMLStreamException(e);
                     }
-                    reader.parse(((SAXSource)source).getInputSource());
+                } else if (ss.getInputSource() == null) {
+                    //nothing to copy, just return
                     return;
-                } catch (Exception e) {
-                    throw new XMLStreamException(e);
                 }
             }
        
         }
-        
+
+        if (source instanceof StreamSource) {
+            StreamSource ss = (StreamSource)source;
+            if (ss.getInputStream() == null
+                && ss.getReader() == null
+                && ss.getSystemId() == null) {
+                //nothing to copy, just return
+                return;
+            }
+        }
         XMLStreamReader reader = createXMLStreamReader(source);
         copy(reader, writer);
         reader.close();

Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?rev=946235&r1=946234&r2=946235&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java Wed May 19 15:47:35 2010
@@ -262,7 +262,7 @@ public class DispatchImpl<T> implements 
             }
             Object ret[] = client.invokeWrapped(opName,
                                                 obj);
-            if (isOneWay) {
+            if (isOneWay || ret == null || ret.length == 0) {
                 return null;
             }
             return (T)ret[0];