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/05/14 17:22:25 UTC

svn commit: r774818 - in /cxf/branches/2.1.x-fixes: ./ common/common/src/main/java/org/apache/cxf/staxutils/ rt/core/src/main/java/org/apache/cxf/databinding/source/

Author: dkulp
Date: Thu May 14 15:22:25 2009
New Revision: 774818

URL: http://svn.apache.org/viewvc?rev=774818&view=rev
Log:
Merged revisions 774558 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r774558 | dkulp | 2009-05-13 18:11:40 -0400 (Wed, 13 May 2009) | 2 lines
  
  Some optimizations for message mode SOAP dispatcher things
........

Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
    cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java
    cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu May 14 15:22:25 2009
@@ -1 +1 @@
-/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963,767159,767191,767927,771416,772143,772402,772658,772714,773009-773010,773027,773049,773146,773581,773691,773693,774446-774496
+/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963,767159,767191,767927,771416,772143,772402,772658,772714,773009-773010,773027,773049,773146,773581,773691,773693,774446-774496,774558

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java?rev=774818&r1=774817&r2=774818&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java (original)
+++ cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java Thu May 14 15:22:25 2009
@@ -192,6 +192,17 @@
      */
     public abstract String getElementText() throws XMLStreamException;
 
+    public void consumeFrame() {
+        frame.started = true;
+        frame.ended = true;
+        if (frame.isDocument()) {
+            currentEvent = END_DOCUMENT;                
+        } else {
+            currentEvent = END_ELEMENT;
+            endElement();
+        }
+    }
+    
     /*
      * (non-Javadoc)
      * 

Modified: cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java?rev=774818&r1=774817&r2=774818&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java (original)
+++ cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataReader.java Thu May 14 15:22:25 2009
@@ -44,7 +44,9 @@
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.message.Attachment;
 import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.staxutils.DepthXMLStreamReader;
 import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.staxutils.W3CDOMStreamReader;
 
 
 
@@ -116,8 +118,19 @@
         // Use a DOMSource for now, we should really use a StaxSource/SAXSource though for 
         // performance reasons
         try {
-            Document document = StaxUtils.read(reader);
-            return new DOMSource(document);
+            XMLStreamReader reader2 = reader;
+            if (reader2 instanceof DepthXMLStreamReader) {
+                reader2 = ((DepthXMLStreamReader)reader2).getReader();
+            }
+            if (reader2 instanceof W3CDOMStreamReader) {
+                W3CDOMStreamReader domreader = (W3CDOMStreamReader)reader2;
+                Object o = new DOMSource(domreader.getCurrentElement());
+                domreader.consumeFrame();
+                return o;
+            } else {
+                Document document = StaxUtils.read(reader);
+                return new DOMSource(document);
+            }
         } catch (XMLStreamException e) {
             throw new Fault(new Message("COULD_NOT_READ_XML_STREAM", LOG), e);
         }

Modified: cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java?rev=774818&r1=774817&r2=774818&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java (original)
+++ cxf/branches/2.1.x-fixes/rt/core/src/main/java/org/apache/cxf/databinding/source/XMLStreamDataWriter.java Thu May 14 15:22:25 2009
@@ -53,6 +53,22 @@
                 reader = StaxUtils.createXMLStreamReader(ds.getInputStream());
                 StaxUtils.copy(reader, writer);
                 reader.close();
+            } else if (obj instanceof Node) {
+                Node nd = (Node)obj;
+                if (writer instanceof W3CDOMStreamWriter
+                    && ((W3CDOMStreamWriter)writer).getCurrentNode() != null) {
+                    W3CDOMStreamWriter dw = (W3CDOMStreamWriter)writer;
+                    
+                    if (nd.getOwnerDocument() == dw.getCurrentNode().getOwnerDocument()) {
+                        dw.getCurrentNode().appendChild(nd);
+                        return;
+                    } else if (nd instanceof DocumentFragment) {
+                        nd = dw.getDocument().importNode(nd, true);
+                        dw.getCurrentNode().appendChild(nd);
+                        return;
+                    }
+                }
+                StaxUtils.writeNode(nd, writer, true);
             } else {
                 Source s = (Source) obj;
                 if (s instanceof DOMSource