AXIOM exposes interface functions that should be implementation details
-----------------------------------------------------------------------

         Key: AXIS2-241
         URL: http://issues.apache.org/jira/browse/AXIS2-241
     Project: Apache Axis 2.0 (Axis2)
        Type: Improvement
  Components: om  
    Versions: 0.91    
    Reporter: Eric Johnson


The OMNode interface includes functions like:
    public void setNextSibling(OMNode node);
    public void setPreviousSibling(OMNode previousSibling);
    public void setParent(OMContainer element);
    public void setComplete(boolean state);
    public void setType(int nodeType) throws OMException;

OMContainer includes:
    public void setComplete(boolean state);
    public void setFirstChild(OMNode omNode);

The availability of these functions in the interface means that clients can 
accidentally or intentionally misbehave and corrupt the data structures.

For example, intentional corruption:

OMNode next = om.getNextSibling();
om.detach();
next.setPreviousSibling(om);

Or the accidental:
OMElement parent = theParent;
OMNode lastChild = parent.getLastChild();
lastChild.setNextSibling(theNewSibling);  // you might reasonably think that 
this will insert into parent!

Where possible, these functions ought to be defined in a package visible 
interface particular to the implementation package, so that only the 
implementation can alter crucial details that affect the integrity of the tree 
structure.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to