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 2014/07/06 22:28:08 UTC

svn commit: r1608290 - in /webservices/axiom/trunk/modules: axiom-api/src/main/java/org/apache/axiom/om/impl/ axiom-api/src/main/java/org/apache/axiom/om/impl/builder/ axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ axiom-dom/src/main/...

Author: veithen
Date: Sun Jul  6 20:28:07 2014
New Revision: 1608290

URL: http://svn.apache.org/r1608290
Log:
Reduce the coupling between the builder and the OM implementation.

Modified:
    webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMElementEx.java
    webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java
    webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/INode.java
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMContainerSupport.aj
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMElementSupport.aj
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java

Modified: webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMElementEx.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMElementEx.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMElementEx.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMElementEx.java Sun Jul  6 20:28:07 2014
@@ -41,4 +41,6 @@ public interface OMElementEx extends OME
      * @return the created namespace information item
      */
     OMNamespace addNamespaceDeclaration(String uri, String prefix);
+    
+    void detachAndDiscardParent();
 }

Modified: webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java Sun Jul  6 20:28:07 2014
@@ -19,7 +19,6 @@
 
 package org.apache.axiom.om.impl;
 
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMNode;
 
 /**
@@ -27,12 +26,6 @@ import org.apache.axiom.om.OMNode;
  * public API.
  */
 public interface OMNodeEx extends OMNode {
-    public void setNextOMSibling(OMNode node);
-
-    public void setPreviousOMSibling(OMNode previousSibling);
-
-    public void setParent(OMContainer element);
-
     public void setComplete(boolean state);
 
     /**

Modified: webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java Sun Jul  6 20:28:07 2014
@@ -31,7 +31,6 @@ import org.apache.axiom.om.OMHierarchyEx
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.OMContainerEx;
 import org.apache.axiom.om.impl.OMElementEx;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.util.stax.XMLEventUtils;
 import org.apache.commons.logging.Log;
@@ -572,10 +571,7 @@ public class StAXOMBuilder extends StAXB
     public OMElement getDocumentElement(boolean discardDocument) {
         OMElement element = getDocument().getOMDocumentElement();
         if (discardDocument) {
-            OMNodeEx nodeEx = (OMNodeEx)element;
-            nodeEx.setParent(null);
-            nodeEx.setPreviousOMSibling(null);
-            nodeEx.setNextOMSibling(null);
+            ((OMElementEx)element).detachAndDiscardParent();
             document = null;
         }
         return element;

Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/INode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/INode.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/INode.java (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/INode.java Sun Jul  6 20:28:07 2014
@@ -18,8 +18,14 @@
  */
 package org.apache.axiom.om.impl.common;
 
+import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.OMNodeEx;
 
 public interface INode extends OMNodeEx, CoreChildNode {
+    public void setNextOMSibling(OMNode node);
 
+    public void setPreviousOMSibling(OMNode previousSibling);
+
+    public void setParent(OMContainer element);
 }

Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMContainerSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMContainerSupport.aj?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMContainerSupport.aj (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMContainerSupport.aj Sun Jul  6 20:28:07 2014
@@ -33,7 +33,6 @@ import org.apache.axiom.om.OMSourcedElem
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.OMXMLStreamReader;
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
@@ -92,18 +91,18 @@ public aspect OMContainerSupport {
     }
 
     public void IContainer.addChild(OMNode omNode, boolean fromBuilder) {
-        OMNodeEx child;
+        INode child;
         if (fromBuilder) {
             // If the new child was provided by the builder, we know that it was created by
             // the same factory
-            child = (OMNodeEx)omNode;
+            child = (INode)omNode;
         } else {
             // Careful here: if the child was created by another Axiom implementation, it doesn't
-            // necessarily implement OMNodeEx
+            // necessarily implement INode
             if (omNode.getOMFactory().getMetaFactory().equals(getOMFactory().getMetaFactory())) {
-                child = (OMNodeEx)omNode;
+                child = (INode)omNode;
             } else {
-                child = (OMNodeEx)((OMFactoryEx)getOMFactory()).importNode(omNode);
+                child = (INode)((OMFactoryEx)getOMFactory()).importNode(omNode);
             }
             if (!isComplete()) {
                 build();
@@ -126,7 +125,7 @@ public aspect OMContainerSupport {
         } else {
             OMNode lastChild = getLastKnownOMChild();
             child.setPreviousOMSibling(lastChild);
-            ((OMNodeEx)lastChild).setNextOMSibling(child);
+            ((INode)lastChild).setNextOMSibling(child);
         }
         setLastChild(child);
 
@@ -186,9 +185,9 @@ public aspect OMContainerSupport {
         CoreChildNode child = coreGetFirstChildIfAvailable();
         while (child != null) {
             CoreChildNode nextSibling = (CoreChildNode)child.getNextOMSiblingIfAvailable();
-            child.setPreviousOMSibling(null);
-            child.setNextOMSibling(null);
-            child.setParent(null);
+            ((INode)child).setPreviousOMSibling(null);
+            ((INode)child).setNextOMSibling(null);
+            ((INode)child).setParent(null);
             child = nextSibling;
         }
         setFirstChild(null);

Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMElementSupport.aj?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMElementSupport.aj (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMElementSupport.aj Sun Jul  6 20:28:07 2014
@@ -37,6 +37,7 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMSourcedElement;
 import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.util.namespace.MapBasedNamespaceContext;
 import org.apache.axiom.util.stax.XMLStreamReaderUtils;
@@ -154,6 +155,12 @@ public aspect OMElementSupport {
         detach();
     }
     
+    public void IElement.detachAndDiscardParent() {
+        setParent(null);
+        setPreviousOMSibling(null);
+        setNextOMSibling(null);
+    }
+    
     public static void insertChild(OMElement parent, Class[] sequence, int pos, OMNode newChild) {
         if (!sequence[pos].isInstance(newChild)) {
             throw new IllegalArgumentException();

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java Sun Jul  6 20:28:07 2014
@@ -29,8 +29,8 @@ import org.apache.axiom.om.OMOutputForma
 import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.common.INode;
 import org.apache.axiom.om.impl.common.InformationItem;
 import org.apache.axiom.om.impl.common.serializer.push.OutputException;
 import org.apache.axiom.om.impl.common.serializer.push.Serializer;
@@ -599,7 +599,7 @@ public abstract class NodeImpl extends I
         if (sibling.getParent() != null) {
             sibling.detach();
         }
-        ((OMNodeEx) sibling).setParent((OMContainer)parentNode);
+        ((INode)sibling).setParent((OMContainer)parentNode);
         if (sibling instanceof NodeImpl) {
             NodeImpl domSibling = (NodeImpl) sibling;
             domSibling.internalSetPreviousSibling(this);

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Sun Jul  6 20:28:07 2014
@@ -24,10 +24,10 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMSourcedElement;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.common.CoreChildNode;
 import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.CoreParentNode;
+import org.apache.axiom.om.impl.common.INode;
 import org.apache.axiom.om.impl.common.serializer.push.sax.XMLReaderImpl;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -65,7 +65,7 @@ public abstract class ParentNode extends
 
     public void setFirstChild(OMNode firstChild) {
         if (firstChild != null) {
-            ((OMNodeEx) firstChild).setParent((OMContainer)this);
+            ((INode)firstChild).setParent((OMContainer)this);
         }
         this.firstChild = (NodeImpl) firstChild;
     }

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Sun Jul  6 20:28:07 2014
@@ -30,10 +30,10 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.common.CoreChildNode;
 import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.IElement;
+import org.apache.axiom.om.impl.common.INode;
 import org.apache.axiom.om.impl.common.NamespaceIterator;
 import org.apache.axiom.om.impl.common.OMChildElementIterator;
 import org.apache.axiom.om.impl.common.OMNamedInformationItemHelper;
@@ -526,7 +526,7 @@ public class OMElementImpl extends OMNod
     /** Method setFirstChild. */
     public void setFirstChild(OMNode firstChild) {
         if (firstChild != null) {
-            ((OMNodeEx) firstChild).setParent(this);
+            ((INode)firstChild).setParent(this);
         }
         this.firstChild = firstChild;
     }

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java Sun Jul  6 20:28:07 2014
@@ -25,11 +25,11 @@ import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMInformationItem;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.OMFactoryEx;
 import org.apache.axiom.om.impl.common.CoreChildNode;
 import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.CoreParentNode;
+import org.apache.axiom.om.impl.common.INode;
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
 
 /** Class OMNodeImpl */
@@ -122,7 +122,7 @@ public abstract class OMNodeImpl extends
         // Note that we don't need to force creation of the next sibling because the
         // builder will always add new nodes to the end of list of children of the
         // document or element being built.
-        OMNodeImpl nextSibling = (OMNodeImpl) getNextOMSiblingIfAvailable();
+        INode nextSibling = (INode)getNextOMSiblingIfAvailable();
         if (previousSibling == null) {
             parent.setFirstChild(nextSibling);
         } else {
@@ -155,7 +155,7 @@ public abstract class OMNodeImpl extends
         if (sibling.getParent() != null) {
             sibling.detach();
         }
-        ((OMNodeEx) sibling).setParent(parent);
+        ((INode)sibling).setParent(parent);
         if (sibling instanceof OMNodeImpl) {
             OMNodeImpl siblingImpl = (OMNodeImpl) sibling;
             if (nextSibling == null) {
@@ -167,7 +167,7 @@ public abstract class OMNodeImpl extends
             } else {
                 nextSibling.setPreviousOMSibling(sibling);
             }
-            ((OMNodeEx) sibling).setNextOMSibling(nextSibling);
+            ((INode)sibling).setNextOMSibling(nextSibling);
             nextSibling = siblingImpl;
         }
     }

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=1608290&r1=1608289&r2=1608290&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java Sun Jul  6 20:28:07 2014
@@ -1143,4 +1143,8 @@ public class OMSourcedElementImpl extend
     public CoreChildNode coreGetFirstChildIfAvailable() {
         return super.coreGetFirstChildIfAvailable();
     }
+
+    public void detachAndDiscardParent() {
+        super.detachAndDiscardParent();
+    }
 }