Author: veithen
Date: Mon Oct 24 22:37:15 2011
New Revision: 1188426
URL: http://svn.apache.org/viewvc?rev=1188426&view=rev
Log:
Fixed a node completeness issue in LLOM.
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=1188426&r1=1188425&r2=1188426&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
Mon Oct 24 22:37:15 2011
@@ -24,6 +24,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMSourcedElement;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
import org.apache.axiom.om.impl.OMContainerEx;
@@ -186,6 +187,10 @@ public class OMDocumentImpl extends OMSe
child.setParent(this);
lastChild = child;
+ if (!child.isComplete() &&
+ !(child instanceof OMSourcedElement)) {
+ this.setComplete(false);
+ }
}
/**
@@ -344,6 +349,19 @@ public class OMDocumentImpl extends OMSe
return OMContainerHelper.getXMLStreamReader(this, cache, false);
}
+ 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);
+ }
+ }
+
public SAXSource getSAXSource(boolean cache) {
return new OMSource(this);
}
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=1188426&r1=1188425&r2=1188426&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
Mon Oct 24 22:37:15 2011
@@ -1108,7 +1108,7 @@ public class OMElementImpl extends OMNod
}
/** This method will be called when one of the children becomes complete.
*/
- protected void notifyChildComplete() {
+ void notifyChildComplete() {
if (!this.done && builder == null) {
Iterator iterator = getChildren();
while (iterator.hasNext()) {
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java?rev=1188426&r1=1188425&r2=1188426&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
Mon Oct 24 22:37:15 2011
@@ -154,6 +154,8 @@ public abstract class OMNodeImpl extends
parent.setComplete(false);
} else if (parent instanceof OMElementImpl) {
((OMElementImpl) parent).notifyChildComplete();
+ } else if (parent instanceof OMDocumentImpl) {
+ ((OMDocumentImpl) parent).notifyChildComplete();
}
}
}
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=1188426&r1=1188425&r2=1188426&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
Mon Oct 24 22:37:15 2011
@@ -1008,7 +1008,7 @@ public class OMSourcedElementImpl extend
super.build();
}
- protected void notifyChildComplete() {
+ void notifyChildComplete() {
super.notifyChildComplete();
}
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java?rev=1188426&r1=1188425&r2=1188426&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
Mon Oct 24 22:37:15 2011
@@ -33,9 +33,6 @@ import org.apache.axiom.ts.om.node.TestI
public class OMImplementationTest extends TestCase {
public static TestSuite suite() {
OMTestSuiteBuilder builder = new OMTestSuiteBuilder(new
OMLinkedListMetaFactory());
- // TODO: this looks like a bug
-
builder.exclude(org.apache.axiom.ts.om.document.TestIsCompleteAfterAddingIncompleteChild.class);
-
// TODO: Axiom should throw an exception if an attempt is made to
create a cyclic parent-child relationship
builder.exclude(TestInsertSiblingAfterOnChild.class);
builder.exclude(TestInsertSiblingBeforeOnChild.class);