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 2011/10/25 00:06:35 UTC
svn commit: r1188411 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/
axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/
axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/
Author: veithen
Date: Mon Oct 24 22:06:34 2011
New Revision: 1188411
URL: http://svn.apache.org/viewvc?rev=1188411&view=rev
Log:
AXIOM-315: Fixed known issues with respect to node completeness in DOOM.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestIsCompleteAfterAddingIncompleteChild.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestSerializeAndConsumeWithIncompleteDescendant.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java?rev=1188411&r1=1188410&r2=1188411&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java Mon Oct 24 22:06:34 2011
@@ -44,7 +44,7 @@ public abstract class ChildNode extends
}
public OMNode getNextOMSibling() throws OMException {
- while (nextSibling == null && this.parentNode != null && !this.parentNode.done) {
+ while (nextSibling == null && this.parentNode != null && !this.parentNode.done && parentNode.builder != null) {
this.parentNode.buildNext();
}
return nextSibling;
@@ -222,4 +222,14 @@ public abstract class ChildNode extends
return newnode;
}
+ public void setComplete(boolean state) {
+ super.setComplete(state);
+ if (parentNode != null) {
+ if (!done) {
+ parentNode.setComplete(false);
+ } else {
+ parentNode.notifyChildComplete();
+ }
+ }
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?rev=1188411&r1=1188410&r2=1188411&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Mon Oct 24 22:06:34 2011
@@ -26,6 +26,7 @@ import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMProcessingInstruction;
+import org.apache.axiom.om.OMSourcedElement;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.OMContainerEx;
@@ -89,8 +90,9 @@ public abstract class ParentNode extends
}
public void buildNext() {
- if (!this.done)
+ if (builder != null) {
builder.next();
+ }
}
public Iterator getChildren() {
@@ -275,7 +277,6 @@ public abstract class ParentNode extends
if (newDomChild.parentNode == null) {
newDomChild.parentNode = this;
}
- return newChild;
} else {
Iterator children = this.getChildren();
boolean found = false;
@@ -367,8 +368,13 @@ public abstract class ParentNode extends
newDomChild.parentNode = this;
}
- return newChild;
}
+
+ if (!newDomChild.isComplete() && !(newDomChild instanceof OMSourcedElement)) {
+ setComplete(false);
+ }
+
+ return newChild;
}
/** Replaces the oldChild with the newChild. */
@@ -706,4 +712,17 @@ public abstract class ParentNode extends
public SAXSource getSAXSource(boolean cache) {
return new OMSource(this);
}
+
+ void notifyChildComplete() {
+ if (!this.done && builder == null) {
+ Iterator iterator = getChildren();
+ while (iterator.hasNext()) {
+ OMNode node = (OMNode) iterator.next();
+ if (!node.isComplete()) {
+ return;
+ }
+ }
+ this.setComplete(true);
+ }
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java?rev=1188411&r1=1188410&r2=1188411&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java Mon Oct 24 22:06:34 2011
@@ -46,13 +46,8 @@ public class OMImplementationTest extend
builder.exclude(TestSetTextQNameWithEmptyPrefix.class);
builder.exclude(TestSetTextQNameWithoutNamespace.class);
- // TODO: AXIOM-315
- builder.exclude(org.apache.axiom.ts.om.document.TestIsCompleteAfterAddingIncompleteChild.class);
- builder.exclude(org.apache.axiom.ts.om.element.TestIsCompleteAfterAddingIncompleteChild.class);
-
- // TODO: these need to be investigated; may be related to AXIOM-315
+ // TODO: doesn't work because the test trigger a call to importNode which will build the descendant
builder.exclude(org.apache.axiom.ts.om.document.TestSerializeAndConsumeWithIncompleteDescendant.class);
- builder.exclude(org.apache.axiom.ts.om.element.TestSerializeAndConsumeWithIncompleteDescendant.class);
// TODO: Axiom should throw an exception if an attempt is made to create a cyclic parent-child relationship
builder.exclude(TestInsertSiblingAfterOnChild.class);
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestIsCompleteAfterAddingIncompleteChild.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestIsCompleteAfterAddingIncompleteChild.java?rev=1188411&r1=1188410&r2=1188411&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestIsCompleteAfterAddingIncompleteChild.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestIsCompleteAfterAddingIncompleteChild.java Mon Oct 24 22:06:34 2011
@@ -41,7 +41,8 @@ public class TestIsCompleteAfterAddingIn
OMFactory factory = metaFactory.getOMFactory();
OMElement incompleteElement = OMXMLBuilderFactory.createOMBuilder(factory,
new StringReader("<elem>text</elem>")).getDocumentElement(true);
- OMDocument document = factory.createOMDocument();
+ // TODO: need to get the OMFactory again because for DOOM, it is stateful
+ OMDocument document = metaFactory.getOMFactory().createOMDocument();
assertTrue(document.isComplete());
document.addChild(incompleteElement);
assertFalse(document.isComplete());
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestSerializeAndConsumeWithIncompleteDescendant.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestSerializeAndConsumeWithIncompleteDescendant.java?rev=1188411&r1=1188410&r2=1188411&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestSerializeAndConsumeWithIncompleteDescendant.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/document/TestSerializeAndConsumeWithIncompleteDescendant.java Mon Oct 24 22:06:34 2011
@@ -45,7 +45,8 @@ public class TestSerializeAndConsumeWith
OMFactory factory = metaFactory.getOMFactory();
OMElement incompleteElement = OMXMLBuilderFactory.createOMBuilder(factory,
new StringReader("<elem>text</elem>")).getDocumentElement(true);
- OMDocument document = factory.createOMDocument();
+ // TODO: need to get the OMFactory again because for DOOM, it is stateful
+ OMDocument document = metaFactory.getOMFactory().createOMDocument();
OMElement root = factory.createOMElement("root", null, document);
root.addChild(incompleteElement);
StringWriter out = new StringWriter();