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/18 23:56:53 UTC
svn commit: r1611822 - in /webservices/axiom/trunk:
aspects/core-aspects/src/main/java/org/apache/axiom/core/
aspects/dom-aspects/src/main/java/org/apache/axiom/dom/
modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/
modules/axiom...
Author: veithen
Date: Fri Jul 18 21:56:52 2014
New Revision: 1611822
URL: http://svn.apache.org/r1611822
Log:
Unify the detach code.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj
webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMNodeSupport.aj
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
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
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj Fri Jul 18 21:56:52 2014
@@ -166,7 +166,8 @@ public aspect CoreChildNodeSupport {
CoreParentNode parent = coreGetParent();
if (parent != null) {
// TODO: ugly hack
- if (this instanceof CoreParentNode) {
+ if (this instanceof CoreParentNode &&
+ ((CoreParentNode)this).getState() == CoreParentNode.INCOMPLETE) {
((CoreParentNode)this).build();
}
Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj Fri Jul 18 21:56:52 2014
@@ -18,9 +18,22 @@
*/
package org.apache.axiom.dom;
+import static org.apache.axiom.dom.DOMExceptionUtil.newDOMException;
+
import org.apache.axiom.core.CoreChildNode;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
public aspect DOMParentNodeSupport {
+ public final Node DOMParentNode.removeChild(Node oldChild) throws DOMException {
+ if (oldChild.getParentNode() == this) {
+ ((CoreChildNode)oldChild).coreDetach(coreGetOwnerDocument(true));
+ return oldChild;
+ } else {
+ throw newDOMException(DOMException.NOT_FOUND_ERR);
+ }
+ }
+
public void DOMParentNode.normalize(DOMConfigurationImpl config) {
CoreChildNode child = coreGetFirstChild();
while (child != null) {
Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMNodeSupport.aj?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMNodeSupport.aj (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMNodeSupport.aj Fri Jul 18 21:56:52 2014
@@ -58,4 +58,13 @@ public aspect OMNodeSupport {
}
coreInsertSiblingBefore(parent.prepareNewChild(sibling));
}
+
+ public OMNode INode.detach() {
+ if (!coreHasParent()) {
+ throw new OMException(
+ "Nodes that don't have a parent can not be detached");
+ }
+ coreDetach(null);
+ return this;
+ }
}
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java Fri Jul 18 21:56:52 2014
@@ -25,11 +25,12 @@ import org.apache.axiom.dom.DOMChildNode
import org.apache.axiom.om.OMCloneOptions;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
-public abstract class ChildNode extends NodeImpl implements DOMChildNode {
+public abstract class ChildNode extends NodeImpl implements DOMChildNode, OMNode {
public ChildNode(OMFactory factory) {
super(factory);
}
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java Fri Jul 18 21:56:52 2014
@@ -452,7 +452,7 @@ public class DocumentImpl extends RootNo
if (node instanceof NodeImpl) {
NodeImpl childNode = (NodeImpl)node;
if (childNode instanceof CoreChildNode && ((CoreChildNode)childNode).coreHasParent()) {
- childNode.detach();
+ ((OMNode)childNode).detach();
}
childNode.coreSetOwnerDocument(this);
if (node instanceof AttrImpl) {
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?rev=1611822&r1=1611821&r2=1611822&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java Fri Jul 18 21:56:52 2014
@@ -920,13 +920,6 @@ public class ElementImpl extends ParentN
}
}
- OMNode detach(boolean useDomSemantics) {
- if (getState() == INCOMPLETE) {
- build();
- }
- return super.detach(useDomSemantics);
- }
-
public final void build() {
defaultBuild();
}
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=1611822&r1=1611821&r2=1611822&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 Fri Jul 18 21:56:52 2014
@@ -456,40 +456,6 @@ public abstract class NodeImpl extends I
}
}
- public OMNode detach() throws OMException {
- return detach(false);
- }
-
- OMNode detach(boolean useDomSemantics) {
- ParentNode parentNode = parentNode();
- if (parentNode == null) {
- throw new OMException("Parent level elements cannot be detached");
- } else {
- NodeImpl previousSibling = internalGetPreviousSibling();
- NodeImpl nextSibling = internalGetNextSibling();
- if (previousSibling == null) { // This is the first child
- if (nextSibling != null) {
- parentNode.coreSetFirstChild((CoreChildNode)nextSibling);
- } else {
- parentNode.coreSetFirstChild(null);
- parentNode.coreSetLastChild(null);
- }
- } else {
- previousSibling.setNextOMSibling((OMNode)nextSibling);
- }
- if (nextSibling != null) {
- nextSibling.setPreviousOMSibling((OMNode)previousSibling);
- internalSetNextSibling(null);
- }
- if (parentNode != null && parentNode.coreGetLastKnownChild() == this) {
- parentNode.coreSetLastChild((CoreChildNode)previousSibling);
- }
- setParent(null, useDomSemantics);
- internalSetPreviousSibling(null);
- }
- return (OMNode)this;
- }
-
public abstract OMXMLParserWrapper getBuilder();
public abstract void setComplete(boolean state);
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=1611822&r1=1611821&r2=1611822&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 Fri Jul 18 21:56:52 2014
@@ -326,16 +326,6 @@ public abstract class ParentNode extends
return oldChild;
}
- /** Removes the given child from the DOM Tree. */
- public final Node removeChild(Node oldChild) throws DOMException {
- if (oldChild.getParentNode() == this) {
- ((NodeImpl)oldChild).detach(true);
- return oldChild;
- } else {
- throw newDOMException(DOMException.NOT_FOUND_ERR);
- }
- }
-
/**
* Checks if the given node is an ancestor (or identical) to this node.
*
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=1611822&r1=1611821&r2=1611822&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 Fri Jul 18 21:56:52 2014
@@ -477,19 +477,6 @@ public class OMElementImpl extends OMNod
return addAttribute(new OMAttributeImpl(localName, namespace, value, getOMFactory()));
}
- /**
- * Removes this information item and its children, from the model completely.
- *
- * @throws OMException
- */
- public OMNode detach() throws OMException {
- if (getState() == INCOMPLETE) {
- build();
- }
- super.detach();
- return this;
- }
-
public void build() throws OMException {
/**
* builder is null. Meaning this is a programatical created element but it has children which are not completed
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=1611822&r1=1611821&r2=1611822&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 Fri Jul 18 21:56:52 2014
@@ -22,11 +22,9 @@ package org.apache.axiom.om.impl.llom;
import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.om.OMCloneOptions;
import org.apache.axiom.om.OMContainer;
-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.common.INode;
/** Class OMNodeImpl */
public abstract class OMNodeImpl extends OMSerializableImpl implements OMNode {
@@ -74,39 +72,6 @@ public abstract class OMNodeImpl extends
}
/**
- * Removes this information item and its children, from the model completely.
- *
- * @throws OMException
- */
- public OMNode detach() throws OMException {
- CoreParentNode parent = coreGetParent();
- if (parent == null) {
- throw new OMException(
- "Nodes that don't have a parent can not be detached");
- }
- // 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.
- INode nextSibling = (INode)getNextOMSiblingIfAvailable();
- INode previousSibling = (INode)coreGetPreviousSibling();
- if (previousSibling == null) {
- parent.coreSetFirstChild(nextSibling);
- } else {
- previousSibling.coreSetNextSibling(nextSibling);
- }
- if (nextSibling == null) {
- parent.coreSetLastChild(previousSibling);
- } else {
- nextSibling.coreSetPreviousSibling(previousSibling);
- }
-
- coreSetPreviousSibling(null);
- coreSetNextSibling(null);
- internalUnsetParent(null);
- return this;
- }
-
- /**
* Method setPreviousOMSibling.
*
* @param previousSibling