cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r735799 - in /cxf/branches/2.0.x-fixes: ./ common/common/src/main/java/org/apache/cxf/staxutils/ rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/
Date Mon, 19 Jan 2009 20:43:08 GMT
Author: dkulp
Date: Mon Jan 19 12:43:08 2009
New Revision: 735799

URL: http://svn.apache.org/viewvc?rev=735799&view=rev
Log:
Merged revisions 726749 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/branches/2.1.x-fixes

................
  r726749 | dkulp | 2008-12-15 13:04:50 -0500 (Mon, 15 Dec 2008) | 9 lines
  
  Merged revisions 726631 via svnmerge from 
  https://svn.apache.org/repos/asf/cxf/trunk
  
  ........
    r726631 | dkulp | 2008-12-15 02:20:22 -0500 (Mon, 15 Dec 2008) | 2 lines
    
    Performance change to streamreader to not use indexes for next nodes for DOM, use getNextSibling.
  ........
................

Modified:
    cxf/branches/2.0.x-fixes/   (props changed)
    cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
    cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java
    cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/JDOMStreamReader.java

Propchange: cxf/branches/2.0.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 19 12:43:08 2009
@@ -1,3 +1,3 @@
-/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765,686827,687097,687464-687465,689109,689112,689122,691316,691357,691491,691711,691715,691745,692162-692163,692468,692500,694466-694469,694472,694717,694748-694749,694870,695503,695509,695553,695555,695563,695875-695877,695940,695980,696436,696455,696721,697086,698129,701526,701634,702275,702443,702527,702582,702604,702610,702642-702643,702649,702760,702870,702873,702959,703193,703242,703523,704303,704587,704738,704998,705153,705280-705449,705455,709357,709641,709644,710177,710184,711736,712199,712225,712275,712600,712896,713083,713410,713413,713594,713599,713808,713901,714169-714171,718622,718929,719211,719221-719223,7192
 96,719300-719301,719303,719308,719332,719356,719363,719369-719383,719650,719695,720124,723545,724403-724404,724421,724448,724451,724486-724487,724714,725367,725371,725763,725774,726045,726048,726106,726123,726745-726746,726754,726756-726758,726995,733587
-/cxf/trunk:651669-686342,686344-686363,686764,686820,687096,687387,687463,688086,688102,688735,691271,691355,691488,691602,691706,691728,692116,692157,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694869,695396,695484,695537,695552,695561,695619,695684,695835,695935,695977,696094,696433,696720,697085,698128,700261,700602,701783,701830,701862,702267,702580,702602,702609,702616,702656,702957,703191,703239,703501,704584,704997,705150,705274,705340,705446,708550,708554,709353-709354,709425,710150,712194,712198,712272,712312,712670,712893,713082,713584,713597,713804,713899,714167-714168,718281,718565,718620,718640,718665,719017,719210,719215-719218,719222,719273,719327-719354,719362,719368,719382,719649,719680,720119-720217,723338,723717-723791,724334-724371,724433-724438,724449,724481,724485,724668,724782,724795,725754,725773,725799,725839,726342,726524,726637,726639,726692,726724,726992,733582
+/cxf/branches/2.1.x-fixes:673548,674485,674547,674551,674562,674601,674649,674764,674887,675644,675653,677048,677385,678004,678009,678559,678629,678808,678852,678891,678893,679248,679597,680435,681060,681165,681813,681816,682902,682951,683089,683290,683318,684099,684790-684793,684842,684862,684895-684918,685205,685253,686237,686283,686299,686333-686364,686765,686827,687097,687464-687465,689109,689112,689122,691316,691357,691491,691711,691715,691745,692162-692163,692468,692500,694466-694469,694472,694717,694748-694749,694870,695503,695509,695553,695555,695563,695875-695877,695940,695980,696436,696455,696721,697086,698129,701526,701634,702275,702443,702527,702582,702604,702610,702642-702643,702649,702760,702870,702873,702959,703193,703242,703523,704303,704587,704738,704998,705153,705280-705449,705455,709357,709641,709644,710177,710184,711736,712199,712225,712275,712600,712896,713083,713410,713413,713594,713599,713808,713901,714169-714171,718622,718929,719211,719221-719223,7192
 96,719300-719301,719303,719308,719332,719356,719363,719369-719383,719650,719695,720124,723545,724403-724404,724421,724448,724451,724486-724487,724714,725367,725371,725763,725774,726045,726048,726106,726123,726745-726746,726749,726754,726756-726758,726995,733587
+/cxf/trunk:651669-686342,686344-686363,686764,686820,687096,687387,687463,688086,688102,688735,691271,691355,691488,691602,691706,691728,692116,692157,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694869,695396,695484,695537,695552,695561,695619,695684,695835,695935,695977,696094,696433,696720,697085,698128,700261,700602,701783,701830,701862,702267,702580,702602,702609,702616,702656,702957,703191,703239,703501,704584,704997,705150,705274,705340,705446,708550,708554,709353-709354,709425,710150,712194,712198,712272,712312,712670,712893,713082,713584,713597,713804,713899,714167-714168,718281,718565,718620,718640,718665,719017,719210,719215-719218,719222,719273,719327-719354,719362,719368,719382,719649,719680,720119-720217,723338,723717-723791,724334-724371,724433-724438,724449,724481,724485,724668,724782,724795,725754,725773,725799,725839,726342,726524,726631,726637,726639,726692,726724,726992,733582
 /incubator/cxf/trunk:434594-651668

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

Modified: cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java?rev=735799&r1=735798&r2=735799&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
(original)
+++ cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/AbstractDOMStreamReader.java
Mon Jan 19 12:43:08 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.cxf.staxutils;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -27,6 +28,7 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+
 /**
  * Abstract logic for creating XMLStreamReader from DOM documents. Its works
  * using adapters for Element, Node and Attribute (
@@ -34,61 +36,78 @@
  * @see ElementAdapter }
  * @author <a href="mailto:tsztelak@gmail.com">Tomasz Sztelak</a>
  */
-public abstract class AbstractDOMStreamReader implements XMLStreamReader {
+public abstract class AbstractDOMStreamReader<T, I> implements XMLStreamReader {
     protected int currentEvent = XMLStreamConstants.START_DOCUMENT;
 
     private Map properties = new HashMap();
 
-    private FastStack<ElementFrame> frames = new FastStack<ElementFrame>();
+    private FastStack<ElementFrame<T, I>> frames = new FastStack<ElementFrame<T,
I>>();
 
-    private ElementFrame frame;
+    private ElementFrame<T, I> frame;
 
     
     /**
      *     
      */
-    public static class ElementFrame {
-        Object element;
+    public static class ElementFrame<T, I> {
+        T element;
+        I currentChild;
 
         boolean started;
-
         boolean ended;
-
-        int currentChild = -1;
-
+        
         int currentAttribute = -1;
-
         int currentNamespace = -1;
 
-        int currentElement = -1;
         List<String> uris;
         List<String> prefixes;
         List<Object> attributes;
         List<Object> allAttributes;
 
-        final ElementFrame parent;
+        final ElementFrame<T, I> parent;
+        
+        public ElementFrame(T element, ElementFrame<T, I> parent) {
+            this.element = element;
+            this.parent = parent;
+        }
         
-        public ElementFrame(Object element, ElementFrame parent) {
+        public ElementFrame(T element, ElementFrame<T, I> parent, I ch) {
             this.element = element;
             this.parent = parent;
+            this.currentChild = ch;
+        }
+        public ElementFrame(T doc) {
+            this.element = doc;
+            parent = null;
+            started = true;
+            attributes = Collections.emptyList();
+            prefixes = Collections.emptyList();
+            uris = Collections.emptyList();
+            allAttributes = Collections.emptyList();
         }
         
-        public Object getElement() {
+        public T getElement() {
             return element;
         }
 
+        public I getCurrentChild() {
+            return currentChild;
+        }
+        public void setCurrentChild(I o) {
+            currentChild = o;
+        }
 
     }
 
     /**
      * @param element
      */
-    public AbstractDOMStreamReader(ElementFrame frame) {
+    public AbstractDOMStreamReader(ElementFrame<T, I> frame) {
         this.frame = frame;
         frames.push(this.frame);
     }
 
-    protected ElementFrame getCurrentFrame() {
+    protected ElementFrame<T, I> getCurrentFrame() {
         return frame;
     }
 
@@ -110,7 +129,7 @@
         if (frame.ended) {
             frames.pop();
             if (!frames.empty()) {
-                frame = (ElementFrame)frames.peek();
+                frame = frames.peek();
             } else {
                 currentEvent = END_DOCUMENT;
                 return currentEvent;
@@ -126,13 +145,11 @@
         } else if (frame.currentNamespace < getNamespaceCount() - 1) {
             frame.currentNamespace++;
             currentEvent = NAMESPACE;
-        } else if (frame.currentChild < getChildCount() - 1) {
-            frame.currentChild++;
-
-            currentEvent = moveToChild(frame.currentChild);
+        } else if (hasMoreChildren()) {
+            currentEvent = nextChild();
 
             if (currentEvent == START_ELEMENT) {
-                ElementFrame newFrame = getChildFrame(frame.currentChild);
+                ElementFrame<T, I> newFrame = getChildFrame();
                 newFrame.started = true;
                 frame = newFrame;
                 frames.push(this.frame);
@@ -148,17 +165,15 @@
         return currentEvent;
     }
 
-    protected void newFrame(ElementFrame newFrame) {
+    protected void newFrame(ElementFrame<T, I> newFrame) {
     }
 
     protected void endElement() {
     }
 
-    protected abstract int moveToChild(int currentChild);
-
-    protected abstract ElementFrame getChildFrame(int currentChild);
-
-    protected abstract int getChildCount();
+    protected abstract boolean hasMoreChildren();
+    protected abstract int nextChild();
+    protected abstract ElementFrame<T, I> getChildFrame();
 
     /*
      * (non-Javadoc)

Modified: cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java?rev=735799&r1=735798&r2=735799&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java
(original)
+++ cxf/branches/2.0.x-fixes/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamReader.java
Mon Jan 19 12:43:08 2009
@@ -30,11 +30,13 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.w3c.dom.TypeInfo;
 
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.staxutils.AbstractDOMStreamReader.ElementFrame;
 
-public class W3CDOMStreamReader extends AbstractDOMStreamReader {
+public class W3CDOMStreamReader extends AbstractDOMStreamReader<Node, Node> {
     private Node content;
 
     private Document document;
@@ -45,11 +47,16 @@
      * @param element
      */
     public W3CDOMStreamReader(Element element) {
-        super(new ElementFrame(element, null));
+        super(new ElementFrame<Node, Node>(element, null));
+        content = element;
         newFrame(getCurrentFrame());
                 
         this.document = element.getOwnerDocument();
     }
+    public W3CDOMStreamReader(Document doc) {
+        super(new ElementFrame<Node, Node>(doc));
+        this.document = doc;
+    }
 
     /**
      * Get the document associated with this stream.
@@ -65,8 +72,8 @@
      * collection.
      */
     @Override
-    protected final void newFrame(ElementFrame frame) {
-        Element element = getCurrentElement();
+    protected final void newFrame(ElementFrame<Node, Node> frame) {
+        Node element = getCurrentNode();
         frame.uris = new ArrayList<String>();
         frame.prefixes = new ArrayList<String>();
         frame.attributes = new ArrayList<Object>();
@@ -74,8 +81,9 @@
         if (context == null) {
             context = new W3CNamespaceContext();
         }
-
-        context.setElement(element);
+        if (element instanceof Element) {
+            context.setElement((Element)element);
+        }
 
         NamedNodeMap nodes = element.getAttributes();
 
@@ -126,22 +134,29 @@
     }
 
     @Override
-    protected ElementFrame getChildFrame(int currentChild) {
-        return new ElementFrame(getCurrentElement().getChildNodes().item(currentChild), getCurrentFrame());
+    protected ElementFrame<Node, Node> getChildFrame() {
+        return new ElementFrame<Node, Node>(getCurrentFrame().currentChild, 
+                                getCurrentFrame());
     }
 
     @Override
-    protected int getChildCount() {
-        return getCurrentElement().getChildNodes().getLength();
+    protected boolean hasMoreChildren() {
+        if (getCurrentFrame().currentChild == null) {
+            return getCurrentNode().getFirstChild() != null;            
+        }
+        return ((Node)getCurrentFrame().currentChild).getNextSibling() != null;
     }
 
     @Override
-    protected int moveToChild(int currentChild) {
-        content = getCurrentNode().getFirstChild();
-        while (currentChild > 0 && content != null) {
-            content = content.getNextSibling();
-            --currentChild;
+    protected int nextChild() {
+        ElementFrame<Node, Node> frame = getCurrentFrame();
+        if (frame.currentChild == null) {
+            content = getCurrentNode().getFirstChild();            
+        } else {
+            content = ((Node)frame.currentChild).getNextSibling();
         }
+        
+        frame.currentChild = content;
         switch (content.getNodeType()) {
         case Node.ELEMENT_NODE:
             return START_ELEMENT;
@@ -162,7 +177,7 @@
     public String getElementText() throws XMLStreamException {
         String result = DOMUtils.getContent(content);
 
-        ElementFrame frame = getCurrentFrame();
+        ElementFrame<Node, Node> frame = getCurrentFrame();
         frame.ended = true;
         currentEvent = END_ELEMENT;
         endElement();
@@ -173,7 +188,7 @@
 
     @Override
     public String getNamespaceURI(String prefix) {
-        ElementFrame frame = getCurrentFrame();
+        ElementFrame<Node, Node> frame = getCurrentFrame();
 
         while (null != frame) {
             int index = frame.prefixes.indexOf(prefix);
@@ -251,16 +266,22 @@
     }
 
     public String getAttributeType(int i) {
-        return toStaxType(getAttribute(i).getNodeType());
-    }
-
-    public static String toStaxType(short jdom) {
-        switch (jdom) {
-        default:
-            return null;
+        Attr attr = getAttribute(i);
+        if (attr.isId()) {
+            return "ID";
         }
+        TypeInfo schemaType = null;
+        try {
+            schemaType = attr.getSchemaTypeInfo();
+        } catch (Throwable t) {
+            //DOM level 2?
+            schemaType = null;
+        }
+        return (schemaType == null) ? "CDATA" 
+            : schemaType.getTypeName() == null ? "CDATA" : schemaType.getTypeName();
     }
 
+
     public String getAttributeValue(int i) {
         return getAttribute(i).getValue();
     }
@@ -286,7 +307,10 @@
     }
 
     public String getText() {
-        return DOMUtils.getRawContent(getCurrentElement());
+        if (content instanceof Text) {
+            return ((Text)content).getData();
+        }
+        return DOMUtils.getRawContent(getCurrentNode());
     }
 
     public char[] getTextCharacters() {
@@ -306,7 +330,7 @@
     }
 
     public QName getName() {
-        Element el = getCurrentElement();
+        Node el = getCurrentNode();
 
         String prefix = getPrefix();
         String ln = getLocalName();
@@ -319,17 +343,17 @@
     }
 
     public String getLocalName() {
-        String ln = getCurrentElement().getLocalName();
+        String ln = getCurrentNode().getLocalName();
         if (ln == null) {
-            ln = getCurrentElement().getNodeName();
+            ln = getCurrentNode().getNodeName();
         }
         return ln;
     }
 
     public String getNamespaceURI() {
-        String ln = getCurrentElement().getLocalName();
+        String ln = getCurrentNode().getLocalName();
         if (ln == null) {
-            ln = getCurrentElement().getNodeName();
+            ln = getCurrentNode().getNodeName();
             if (ln.indexOf(":") == -1) {
                 ln = getNamespaceURI("");
             } else {
@@ -337,11 +361,11 @@
             }
             return ln;
         }
-        return getCurrentElement().getNamespaceURI();
+        return getCurrentNode().getNamespaceURI();
     }
 
     public String getPrefix() {
-        String prefix = getCurrentElement().getPrefix();
+        String prefix = getCurrentNode().getPrefix();
         if (prefix == null) {
             prefix = "";
         }

Modified: cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/JDOMStreamReader.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/JDOMStreamReader.java?rev=735799&r1=735798&r2=735799&view=diff
==============================================================================
--- cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/JDOMStreamReader.java
(original)
+++ cxf/branches/2.0.x-fixes/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/util/stax/JDOMStreamReader.java
Mon Jan 19 12:43:08 2009
@@ -45,7 +45,7 @@
  * 
  * @author <a href="mailto:tsztelak@gmail.com">Tomasz Sztelak</a>
  */
-public class JDOMStreamReader extends AbstractDOMStreamReader {
+public class JDOMStreamReader extends AbstractDOMStreamReader<Element, Integer> {
 
     private Content content;
 
@@ -62,7 +62,7 @@
      * @param element
      */
     public JDOMStreamReader(Element element) {
-        super(new ElementFrame(element, null));
+        super(new ElementFrame<Element, Integer>(element, null, -1));
 
         namespaceContext = new JDOMNamespaceContext();
         setupNamespaces(element);
@@ -182,21 +182,28 @@
     }
 
     public Element getCurrentElement() {
-        return (Element)getCurrentFrame().getElement();
+        return getCurrentFrame().getElement();
     }
 
     @Override
-    protected ElementFrame getChildFrame(int currentChild) {
-        return new ElementFrame(getCurrentElement().getContent(currentChild), getCurrentFrame());
+    protected ElementFrame<Element, Integer> getChildFrame() {
+        int currentChild = getCurrentFrame().getCurrentChild();
+        return new ElementFrame<Element, Integer>((Element)getCurrentElement().getContent(currentChild),
+                                                  getCurrentFrame(),
+                                                  -1);
     }
 
     @Override
-    protected int getChildCount() {
-        return getCurrentElement().getContentSize();
+    protected boolean hasMoreChildren() {
+        int currentChild = getCurrentFrame().getCurrentChild();
+        return currentChild < (getCurrentElement().getContentSize() - 1);
     }
 
     @Override
-    protected int moveToChild(int currentChild) {
+    protected int nextChild() {
+        int currentChild = getCurrentFrame().getCurrentChild();
+        currentChild++;
+        getCurrentFrame().setCurrentChild(currentChild);
         this.content = getCurrentElement().getContent(currentChild);
 
         if (content instanceof Text) {



Mime
View raw message