You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/02/06 11:33:27 UTC

svn commit: r1728806 - in /webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common: builder/BuilderHandler.java builder/PushOMBuilder.java builder/StAXOMBuilder.java factory/SAXOMBuilder.java

Author: veithen
Date: Sat Feb  6 10:33:26 2016
New Revision: 1728806

URL: http://svn.apache.org/viewvc?rev=1728806&view=rev
Log:
Unify the endElement logic in the three builder implementations.

Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1728806&r1=1728805&r2=1728806&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sat Feb  6 10:33:26 2016
@@ -129,6 +129,19 @@ public final class BuilderHandler {
         return element;
     }
     
+    public void endElement() {
+        elementLevel--;
+        target.setComplete(true);
+        if (elementLevel == 0) {
+            // This is relevant for OMSourcedElements and for the case where the document has been discarded
+            // using getDocumentElement(true). In these cases, this will actually set target to null. In all
+            // other cases, this will have the same effect as the instruction in the else clause.
+            target = document;
+        } else {
+            target = (AxiomContainer)((AxiomElement)target).getParent();
+        }
+    }
+
     public void processCharacterData(Object data, boolean ignorable) {
         AxiomCharacterDataNode node = nodeFactory.createNode(AxiomCharacterDataNode.class);
         node.coreSetCharacterData(data);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java?rev=1728806&r1=1728805&r2=1728806&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java Sat Feb  6 10:33:26 2016
@@ -30,7 +30,6 @@ import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.impl.intf.AxiomContainer;
 import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
 import org.apache.axiom.om.impl.intf.OMFactoryEx;
@@ -111,6 +110,7 @@ public class PushOMBuilder extends Abstr
         if (handler.target == null) {
             root.validateName(prefix, localName, namespaceURI);
             handler.target = root;
+            handler.elementLevel = 1;
         } else {
             handler.startElement(namespaceURI, localName, prefix);
         }
@@ -124,14 +124,7 @@ public class PushOMBuilder extends Abstr
     }
 
     protected void doWriteEndElement() {
-        if (handler.target == root) {
-            handler.target = null;
-        } else {
-            // Since we use the createOMElement variant that takes a OMXMLParserWrapper parameter,
-            // we need to update the completion status.
-            handler.target.setComplete(true);
-            handler.target = (AxiomContainer)((OMElement)handler.target).getParent();
-        }
+        handler.endElement();
     }
 
     protected void doWriteEmptyElement(String prefix, String localName, String namespaceURI) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java?rev=1728806&r1=1728805&r2=1728806&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java Sat Feb  6 10:33:26 2016
@@ -587,8 +587,7 @@ public class StAXOMBuilder implements Bu
                     createOMText(token);
                     break;
                 case XMLStreamConstants.END_ELEMENT:
-                    handler.elementLevel--;
-                    endElement();
+                    handler.endElement();
                     break;
                 case XMLStreamConstants.END_DOCUMENT:
                     handler.done = true;
@@ -766,18 +765,6 @@ public class StAXOMBuilder implements Bu
         return text;
     }
 
-    private void endElement() {
-        handler.target.setComplete(true);
-        if (handler.elementLevel == 0) {
-            // This is relevant for OMSourcedElements and for the case where the document has been discarded
-            // using getDocumentElement(true). In these cases, this will actually set target to null. In all
-            // other cases, this will have the same effect as the instruction in the else clause.
-            handler.target = handler.document;
-        } else {
-            handler.target = (AxiomContainer)((OMElement)handler.target).getParent();
-        }
-    }
-
     public final OMElement getDocumentElement() {
         return getDocumentElement(false);
     }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java?rev=1728806&r1=1728805&r2=1728806&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java Sat Feb  6 10:33:26 2016
@@ -23,7 +23,6 @@ import org.apache.axiom.core.NodeFactory
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.OMContentHandler;
 import org.apache.axiom.om.impl.common.builder.BuilderHandler;
@@ -151,8 +150,7 @@ public class SAXOMBuilder extends OMCont
     }
 
     protected void completed() {
-        ((AxiomElement)handler.target).setComplete(true);
-        handler.target = (AxiomContainer)((OMNode)handler.target).getParent();
+        handler.endElement();
     }
 
     protected void createOMText(String text, int type) {