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/10 22:25:13 UTC

svn commit: r1729741 - in /webservices/axiom/trunk: aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/ aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/ implementations/fom-impl/src/main/java/org/apache/...

Author: veithen
Date: Wed Feb 10 21:25:13 2016
New Revision: 1729741

URL: http://svn.apache.org/viewvc?rev=1729741&view=rev
Log:
Some cleanup.

Added:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderListener.java
      - copied, changed from r1729544, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/NodePostProcessor.java
Removed:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/NodePostProcessor.java
Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
    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/StAXHelper.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/soap/impl/common/builder/StAXSOAPModelBuilder.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java?rev=1729741&r1=1729740&r2=1729741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java Wed Feb 10 21:25:13 2016
@@ -36,8 +36,8 @@ public abstract class AbstractBuilder im
         handler = repairNamespaces ? new NamespaceRepairingFilterHandler(builderHandler) : builderHandler;
     }
 
-    public final void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
-        builderHandler.addNodePostProcessor(nodePostProcessor);
+    public final void addListener(BuilderListener listener) {
+        builderHandler.addListener(listener);
     }
 
     public final boolean isCompleted() {

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=1729741&r1=1729740&r2=1729741&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 Wed Feb 10 21:25:13 2016
@@ -25,13 +25,12 @@ import java.util.Map;
 import javax.xml.stream.XMLStreamConstants;
 
 import org.apache.axiom.core.Builder;
+import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.impl.common.AxiomSemantics;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
 import org.apache.axiom.om.impl.intf.AxiomAttribute;
@@ -70,11 +69,11 @@ public final class BuilderHandler implem
     public AxiomDocument document;
     
     /**
-     * Tracks the depth of the node identified by {@link #target}. By definition, the level of the
-     * root element is defined as 1. Note that if caching is disabled, then this depth may be
-     * different from the actual depth reached by the underlying parser.
+     * Tracks the depth of the node identified by {@link #target}. By definition, the document has
+     * depth 0. Note that if caching is disabled, then this depth may be different from the actual
+     * depth reached by the underlying parser.
      */
-    public int elementLevel;
+    public int depth;
     
     /**
      * Stores the stack trace of the code that caused a node to be discarded or consumed. This is
@@ -82,7 +81,7 @@ public final class BuilderHandler implem
      */
     public Map<CoreParentNode,Throwable> discardTracker = log.isDebugEnabled() ? new LinkedHashMap<CoreParentNode,Throwable>() : null;
     
-    private ArrayList<NodePostProcessor> nodePostProcessors;
+    private ArrayList<BuilderListener> listeners;
 
     public BuilderHandler(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, Builder builder) {
         this.nodeFactory = nodeFactory;
@@ -91,17 +90,17 @@ public final class BuilderHandler implem
         this.builder = builder;
     }
 
-    public void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
-        if (nodePostProcessors == null) {
-            nodePostProcessors = new ArrayList<NodePostProcessor>();
+    public void addListener(BuilderListener listener) {
+        if (listeners == null) {
+            listeners = new ArrayList<BuilderListener>();
         }
-        nodePostProcessors.add(nodePostProcessor);
+        listeners.add(listener);
     }
     
-    public void postProcessNode(OMSerializable node) {
-        if (nodePostProcessors != null) {
-            for (int i=0, size=nodePostProcessors.size(); i<size; i++) {
-                nodePostProcessors.get(i).postProcessNode(node);
+    public void nodeAdded(CoreNode node) {
+        if (listeners != null) {
+            for (int i=0, size=listeners.size(); i<size; i++) {
+                listeners.get(i).nodeAdded(node, depth);
             }
         }
     }
@@ -120,7 +119,7 @@ public final class BuilderHandler implem
     
     private void addChild(AxiomChildNode node) {
         target.addChild(node, true);
-        postProcessNode(node);
+        nodeAdded(node);
     }
     
     public void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding, boolean standalone) {
@@ -131,7 +130,7 @@ public final class BuilderHandler implem
             document.coreSetXmlEncoding(xmlEncoding);
             document.coreSetStandalone(standalone);
             document.coreSetBuilder(builder);
-            postProcessNode(document);
+            nodeAdded(document);
             target = document;
         }
     }
@@ -148,16 +147,16 @@ public final class BuilderHandler implem
     }
     
     public void startElement(String namespaceURI, String localName, String prefix) {
-        elementLevel++;
+        depth++;
         AxiomElement element;
         OMNamespace ns = nsCache.getOMNamespace(namespaceURI, prefix);
-        if (elementLevel == 1 && root != null) {
+        if (depth == 1 && root != null) {
             root.validateName(prefix, localName, namespaceURI);
             root.initName(localName, ns, false);
             element = root;
         } else {
             element = nodeFactory.createNode(model.determineElementType(
-                    target, elementLevel, namespaceURI, localName));
+                    target, depth, namespaceURI, localName));
             element.coreSetBuilder(builder);
             element.coreSetState(CoreParentNode.ATTRIBUTES_PENDING);
             element.initName(localName, ns, false);
@@ -167,9 +166,9 @@ public final class BuilderHandler implem
     }
     
     public void endElement() {
-        elementLevel--;
+        depth--;
         target.setComplete(true);
-        if (elementLevel == 0) {
+        if (depth == 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.
@@ -242,7 +241,7 @@ public final class BuilderHandler implem
     }
     
     public void endDocument() {
-        if (elementLevel != 0) {
+        if (depth != 0) {
             throw new IllegalStateException();
         }
         if (document != null) {
@@ -254,7 +253,7 @@ public final class BuilderHandler implem
 
     @Override
     public void processOMDataSource(String namespaceURI, String localName, OMDataSource dataSource) throws StreamException {
-        Class<? extends AxiomElement> elementType = model.determineElementType(target, elementLevel+1, namespaceURI, localName);
+        Class<? extends AxiomElement> elementType = model.determineElementType(target, depth+1, namespaceURI, localName);
         Class<? extends AxiomSourcedElement> sourcedElementType;
         if (elementType == AxiomElement.class) {
             sourcedElementType = AxiomSourcedElement.class;

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderListener.java (from r1729544, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/NodePostProcessor.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderListener.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderListener.java&p1=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/NodePostProcessor.java&r1=1729544&r2=1729741&rev=1729741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/NodePostProcessor.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderListener.java Wed Feb 10 21:25:13 2016
@@ -18,8 +18,20 @@
  */
 package org.apache.axiom.om.impl.common.builder;
 
-import org.apache.axiom.om.OMSerializable;
+import org.apache.axiom.core.CoreDocument;
+import org.apache.axiom.core.CoreNode;
 
-public interface NodePostProcessor {
-    void postProcessNode(OMSerializable node);
+public interface BuilderListener {
+    /**
+     * Inform the listener that a node has been added to the tree. Note that this method will also
+     * be invoked for the {@link CoreDocument}.
+     * 
+     * @param node
+     *            the node that has been added
+     * @param depth
+     *            the depth of the node, with 0 corresponding to the document
+     */
+    // TODO: specify if what happens for attributes (including depth)
+    // TODO: an ancestor of the node may have been detached or moved; specify what this means for the depth
+    void nodeAdded(CoreNode node, int depth);
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java?rev=1729741&r1=1729740&r2=1729741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXHelper.java Wed Feb 10 21:25:13 2016
@@ -316,11 +316,11 @@ public class StAXHelper {
         String localName = parser.getLocalName();
         String prefix = normalize(parser.getPrefix());
         if (builderHandler != null) {
-            if (customBuilderForPayload != null && payloadSelector.isPayload(builderHandler.elementLevel+1, builderHandler.target)
+            if (customBuilderForPayload != null && payloadSelector.isPayload(builderHandler.depth+1, builderHandler.target)
                     && processWithCustomBuilder(customBuilderForPayload)) {
                 return;
             }
-            if (customBuilders != null && builderHandler.elementLevel < this.maxDepthForCustomBuilders) {
+            if (customBuilders != null && builderHandler.depth < this.maxDepthForCustomBuilders) {
                 CustomBuilder customBuilder = customBuilders.get(namespaceURI, localName);
                 if (customBuilder != null && processWithCustomBuilder(customBuilder)) {
                     return;
@@ -460,7 +460,7 @@ public class StAXHelper {
                     throw ex;
                 }
                 if (builderHandler != null && event == XMLStreamConstants.END_DOCUMENT) {
-                    if (builderHandler.cache && builderHandler.elementLevel != 0) {
+                    if (builderHandler.cache && builderHandler.depth != 0) {
                         throw new OMException("Unexpected END_DOCUMENT event");
                     }
                     if (autoClose) {

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=1729741&r1=1729740&r2=1729741&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 Wed Feb 10 21:25:13 2016
@@ -101,7 +101,7 @@ public class StAXOMBuilder extends Abstr
     }
     
     public final void discard(CoreParentNode container) {
-        int targetElementLevel = builderHandler.elementLevel;
+        int targetElementLevel = builderHandler.depth;
         AxiomContainer current = builderHandler.target;
         while (current != container) {
             targetElementLevel--;
@@ -132,14 +132,14 @@ public class StAXOMBuilder extends Abstr
                         discarded(builderHandler.target);
                         boolean found = container == builderHandler.target;
                         builderHandler.target = (AxiomContainer)((OMElement)builderHandler.target).getParent();
-                        builderHandler.elementLevel--;
+                        builderHandler.depth--;
                         if (found) {
                             break loop;
                         }
                     }
                     break;
                 case XMLStreamReader.END_DOCUMENT:
-                    if (skipDepth != 0 || builderHandler.elementLevel != 0) {
+                    if (skipDepth != 0 || builderHandler.depth != 0) {
                         throw new OMException("Unexpected END_DOCUMENT");
                     }
                     if (builderHandler.target != builderHandler.document) {
@@ -213,10 +213,10 @@ public class StAXOMBuilder extends Abstr
             parserAccessed = true;
             // Mark all containers in the hierarchy as discarded because they can no longer be built
             AxiomContainer current = builderHandler.target;
-            while (builderHandler.elementLevel > 0) {
+            while (builderHandler.depth > 0) {
                 discarded(current);
                 current = (AxiomContainer)((OMElement)current).getParent();
-                builderHandler.elementLevel--;
+                builderHandler.depth--;
             }
             if (current != null && current == builderHandler.document) {
                 discarded(current);
@@ -235,7 +235,7 @@ public class StAXOMBuilder extends Abstr
         // care of lookahead
         helper.parserNext();
         if (log.isDebugEnabled()) {
-            log.debug("Caching disabled; current element level is " + builderHandler.elementLevel);
+            log.debug("Caching disabled; current element level is " + builderHandler.depth);
         }
         return helper.parser;
     }
@@ -246,13 +246,13 @@ public class StAXOMBuilder extends Abstr
         AxiomContainer current = builderHandler.target;
         while (true) {
             discarded(current);
-            if (builderHandler.elementLevel == 0) {
+            if (builderHandler.depth == 0) {
                 if (current != container || current != builderHandler.document) {
                     throw new IllegalStateException();
                 }
                 break;
             }
-            builderHandler.elementLevel--;
+            builderHandler.depth--;
             if (current == container) {
                 break;
             }
@@ -262,7 +262,7 @@ public class StAXOMBuilder extends Abstr
         if (container == builderHandler.document) {
             builderHandler.target = null;
             builderHandler.done = true;
-        } else if (builderHandler.elementLevel == 0 && builderHandler.document == null) {
+        } else if (builderHandler.depth == 0 && builderHandler.document == null) {
             // Consume the remaining event; for the rationale, see StAXOMBuilder#next()
             while (helper.parserNext() != XMLStreamConstants.END_DOCUMENT) {
                 // Just loop
@@ -273,7 +273,7 @@ public class StAXOMBuilder extends Abstr
             builderHandler.target = (AxiomContainer)((OMElement)container).getParent();
         }
         if (log.isDebugEnabled()) {
-            log.debug("Caching re-enabled; new element level: " + builderHandler.elementLevel + "; done=" + builderHandler.done);
+            log.debug("Caching re-enabled; new element level: " + builderHandler.depth + "; done=" + builderHandler.done);
         }
         if (builderHandler.done && helper.autoClose) {
             close();

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java?rev=1729741&r1=1729740&r2=1729741&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java Wed Feb 10 21:25:13 2016
@@ -21,11 +21,11 @@ package org.apache.axiom.soap.impl.commo
 
 import java.io.Closeable;
 
+import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.om.OMException;
-import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.impl.builder.Detachable;
-import org.apache.axiom.om.impl.common.builder.NodePostProcessor;
+import org.apache.axiom.om.impl.common.builder.BuilderListener;
 import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
@@ -47,11 +47,11 @@ public class StAXSOAPModelBuilder extend
         // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
         // SOAPEnvelope. Register a post-processor that does the necessary updates on the
         // SOAPMessage.
-        addNodePostProcessor(new NodePostProcessor() {
+        addListener(new BuilderListener() {
             private AxiomSOAPMessage message;
             
             @Override
-            public void postProcessNode(OMSerializable node) {
+            public void nodeAdded(CoreNode node, int depth) {
                 if (node instanceof AxiomSOAPMessage) {
                     message = (AxiomSOAPMessage)node;
                 } else if (message != null && node instanceof AxiomSOAPEnvelope) {

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java?rev=1729741&r1=1729740&r2=1729741&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java Wed Feb 10 21:25:13 2016
@@ -26,12 +26,13 @@ import org.apache.abdera.model.Element;
 import org.apache.abdera.parser.ParseException;
 import org.apache.abdera.parser.ParserOptions;
 import org.apache.abdera.util.Constants;
+import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.fom.AbderaNode;
 import org.apache.axiom.fom.impl.FOMNodeFactory;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.impl.builder.Detachable;
-import org.apache.axiom.om.impl.common.builder.NodePostProcessor;
+import org.apache.axiom.om.impl.common.builder.BuilderListener;
 import org.apache.axiom.om.impl.common.builder.PayloadSelector;
 import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
 
@@ -46,9 +47,9 @@ public class FOMBuilder extends StAXOMBu
                 factory, PayloadSelector.DEFAULT, null);
         this.parserOptions = parserOptions;
         this.fomfactory = factory;
-        addNodePostProcessor(new NodePostProcessor() {
+        addListener(new BuilderListener() {
             @Override
-            public void postProcessNode(OMSerializable node) {
+            public void nodeAdded(CoreNode node, int depth) {
                 ((AbderaNode)node).setFactory(factory);
             }
         });