[ 
https://issues.apache.org/jira/browse/WSCOMMONS-301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rich Scheuerle resolved WSCOMMONS-301.
--------------------------------------

    Resolution: Fixed

Committed Revision: 618452

> OMSourcedElement.buildWithAttachments results in inproper expansion
> -------------------------------------------------------------------
>
>                 Key: WSCOMMONS-301
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-301
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>            Reporter: Rich Scheuerle
>            Assignee: Rich Scheuerle
>
> Background:
> -----------------
> OMSourcedElement has either a backing object (OMDataSource) or is a normal OM 
> tree.
> When build() or buildWithAttachments() is called, the OMElement should 
> respond by building its contents from the Builder.
> Problem:
> -------------
> The current implementation of OMSE.buildWithAttachments() causes the OM tree 
> to be unnecessarily expanded.
> The current code is:
> 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();
>             }
>     
>     }
> Solution:
> ------------
> Iterating over the children is causing the expansion.  This should only be 
> performed if the OMSourcedElement is in an expanded state.
> A validating unit test will be provided with the code change.
> public void buildWithAttachments() {
>         
>         // If not done, force the parser to build the elements
>         if (!done) {
>             this.build();
>         }
>         
>         // 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();
>             }
>         }
>     }
> Kudos:
> ----------
> Thanks to Dan Zhong of the IBM performance team who found this problem during 
> Sandesha testing.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to