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 2009/11/14 14:27:18 UTC

svn commit: r836167 - in /cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils: AbstractDOMStreamReader.java StaxUtils.java W3CDOMStreamReader.java

Author: dkulp
Date: Sat Nov 14 13:27:18 2009
New Revision: 836167

URL: http://svn.apache.org/viewvc?rev=836167&view=rev
Log:
[CXF-2536] If .createXMLStreamReader(Source source) returns null, try
using the other methods.

Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
    cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
    cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java?rev=836167&r1=836166&r2=836167&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java Sat Nov 14 13:27:18 2009
@@ -325,6 +325,12 @@
                 || currentEvent == COMMENT || currentEvent == SPACE;
     }
 
+    public String getSystemId() {
+        return null;
+    }
+    public String getPublicId() {
+        return null;
+    }
     public Location getLocation() {
         return new Location() {
 
@@ -341,11 +347,11 @@
             }
 
             public String getPublicId() {
-                return null;
+                return AbstractDOMStreamReader.this.getPublicId();
             }
 
             public String getSystemId() {
-                return null;
+                return AbstractDOMStreamReader.this.getSystemId();
             }
 
         };

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=836167&r1=836166&r2=836167&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 Sat Nov 14 13:27:18 2009
@@ -1047,7 +1047,7 @@
                 }
                 
                 if (null != el) {
-                    return new W3CDOMStreamReader(el);
+                    return new W3CDOMStreamReader(el, source.getSystemId());
                 }
             } else if ("javax.xml.transform.stax.StAXSource".equals(source.getClass().getName())) {
                 try {
@@ -1060,7 +1060,19 @@
             
             XMLInputFactory factory = getXMLInputFactory();
             try {
-                return factory.createXMLStreamReader(source);
+                XMLStreamReader reader = factory.createXMLStreamReader(source);
+                if (reader == null && source instanceof StreamSource) {
+                    //createXMLStreamReader from Source is optional, we'll try and map it
+                    StreamSource ss = (StreamSource)source;
+                    if (ss.getInputStream() != null) {
+                        reader = factory.createXMLStreamReader(ss.getSystemId(),
+                                                               ss.getInputStream());
+                    } else {
+                        reader = factory.createXMLStreamReader(ss.getSystemId(),
+                                                               ss.getReader());
+                    }
+                }
+                return reader;
             } finally {
                 returnXMLInputFactory(factory);
             }

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java?rev=836167&r1=836166&r2=836167&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java Sat Nov 14 13:27:18 2009
@@ -44,6 +44,8 @@
     private Document document;
 
     private W3CNamespaceContext context;
+    
+    private String sysId;
 
     /**
      * @param element
@@ -55,6 +57,10 @@
                 
         this.document = element.getOwnerDocument();
     }
+    public W3CDOMStreamReader(Element element, String systemId) {
+        this(element);
+        sysId = systemId;
+    }
     public W3CDOMStreamReader(Document doc) {
         super(new ElementFrame<Node, Node>(doc, false) {
             public boolean isDocument() {
@@ -80,7 +86,9 @@
     public Document getDocument() {
         return document;
     }
-
+    public String getSystemId() {
+        return sysId == null ? document.getDocumentURI() : sysId;
+    }
     /**
      * Find name spaces declaration in atrributes and move them to separate
      * collection.