You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by sc...@apache.org on 2008/02/04 22:46:25 UTC
svn commit: r618452 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
Author: scheu
Date: Mon Feb 4 13:46:24 2008
New Revision: 618452
URL: http://svn.apache.org/viewvc?rev=618452&view=rev
Log:
WSCOMMONS-301
Contributor:Rich Scheuerle
Quick Fix and test for OMSourcedElement.buildWithAttachments() to avoid unnecessary expansion.
Modified:
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-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
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=618452&r1=618451&r2=618452&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 Feb 4 13:46:24 2008
@@ -920,13 +920,23 @@
* @see org.apache.axiom.om.OMNode#buildAll()
*/
public void buildWithAttachments() {
+
+ // If not done, force the parser to build the elements
if (!done) {
this.build();
}
- Iterator iterator = getChildren();
- while (iterator.hasNext()) {
- OMNode node = (OMNode) iterator.next();
- node.buildWithAttachments();
+
+ // If the OMSourcedElement is in in expanded form, then
+ // walk the descendents to make sure they are built.
+ // If the OMSourcedElement is backed by a OMDataSource,
+ // we don't want to walk the children (because this will result
+ // in an unnecessary translation from OMDataSource to a full OM tree).
+ if (isExpanded()) {
+ Iterator iterator = getChildren();
+ while (iterator.hasNext()) {
+ OMNode node = (OMNode) iterator.next();
+ node.buildWithAttachments();
+ }
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java?rev=618452&r1=618451&r2=618452&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/OMSourcedElementTest.java Mon Feb 4 13:46:24 2008
@@ -123,6 +123,13 @@
output.indexOf(payload1) > 0);
assertTrue("OMSourcedElement is expanded. This is unexpected", !child.isExpanded());
+ // If a consumer calls build or buildWithAttachments on the tree, the
+ // tree should not be expanded.
+ soapBody.build();
+ assertTrue("OMSourcedElement is expanded after build(). This is unexpected", !child.isExpanded());
+ soapBody.buildWithAttachments();
+ assertTrue("OMSourcedElement is expanded after buildWithAttachments(). This is unexpected", !child.isExpanded());
+
// Test getting the raw bytes from the ByteArrayDataSource.
OMDataSourceExt ds = (OMDataSourceExt) child.getDataSource();
byte[] bytes = ds.getXMLBytes("UTF-16"); // Get the bytes as UTF-16
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org