## org.dom4j.tree
Class AbstractBranch

    java.lang.Object
      org.dom4j.tree.AbstractNode
          org.dom4j.tree.AbstractBranch

All Implemented Interfaces:
  Branch, Cloneable, Node, Serializable

Direct Known Subclasses:
  AbstractDocument, AbstractElement

public abstract class AbstractBranch
extends AbstractNode
implements Branch

`AbstractBranch` is an abstract base class for tree implementors to use for implementation inheritence.

Version:
  $Revision: 1.44 $
Author:
  James Strachan
See Also:
  Serialized Form

Field Summary
`protected static int` `DEFAULT_CONTENT_LIST_SIZE`

Fields inherited from class org.dom4j.tree.AbstractNode
`NODE_TYPE_NAMES`

Fields inherited from interface org.dom4j.Node
`ANY_NODE, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_REFERENCE_NODE, MAX_NODE_TYPE, NAMESPACE_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE, UNKNOWN_NODE`

Constructor Summary
`AbstractBranch()`

Method Summary
`void` `add(Comment comment)` Adds the given `Comment` to this branch.
`void` `add(Element element)` Adds the given `Element` to this branch.
`void` `add(Node node)` Adds the given `Node` or throws `IllegalAddException` if the given node is not of a valid type.
`void` `add(ProcessingInstruction pi)` Adds the given `ProcessingInstruction` to this branch.
`Element` `addElement(QName qname)` Adds a new `Element` node with the given `QName`to this branch and returns a reference to the new node.
`Element` `addElement(String name)` Adds a new `Element` node with the given name to this branch and returns a reference to the new node.
`Element` `addElement(String qualifiedName, String namespaceURI)` Adds a new `Element` node with the given qualified name and namespace URI to this branch and returns a reference to the new node.
`Element` `addElement(String name, String prefix, String uri)`
`protected abstract void` `addNode(int index, Node node)`
`protected abstract void` `addNode(Node node)`
`void` `appendContent(Branch branch)` Appends the content of the given branch to this branch instance.
`protected abstract void` `childAdded(Node node)` Called when a new child node has been added to me to allow any parent relationships to be created or events to be fired.
`protected abstract void` `childRemoved(Node node)` Called when a child node has been removed to allow any parent relationships to be deleted or events to be fired.
`List` `content()` Returns the content nodes of this branch as a backed `List`so that the content of this branch may be modified directly using the `List`interface.
`protected abstract List` `contentList()` DOCUMENT ME!
`protected void` `contentRemoved()` Called when the given List content has been removed so each node should have its parent and document relationships cleared
`protected List` `createContentList()` A Factory Method pattern which creates a List implementation used to store content
`protected List` `createContentList(int size)` A Factory Method pattern which creates a List implementation used to store content
`protected List` `createEmptyList()` A Factory Method pattern which creates an empty a BackedList implementation
`protected BackedList` `createResultList()` A Factory Method pattern which creates a BackedList implementation used to store results of a filtered content query.
`protected List` `createSingleResultList(Object result)` A Factory Method pattern which creates a BackedList implementation which contains a single result
`Element` `elementByID(String elementID)` Returns the element of the given ID attribute value.
`protected String` `elementID(Element element)` DOCUMENT ME!
`protected String` `getContentAsStringValue(Object content)` DOCUMENT ME!
`protected String` `getContentAsText(Object content)` DOCUMENT ME!
`String` `getText()` Returns the text of this node.
`String` `getTextTrim()`
`boolean` `hasContent()` `hasContent` returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.
`int` `indexOf(Node node)` Returns the index of the given node if it is a child node of this branch or -1 if the given node is not a child node.
`protected void` `invalidNodeTypeAddException(Node node)` Called when an invalid node has been added.
`boolean` `isReadOnly()` `isReadOnly` returns true if this node is read only and cannot be modified.
`Node` `node(int index)` Returns the `Node` at the specified index position.
`int` `nodeCount()` Returns the number of `Node` instances that this branch contains.
`Iterator` `nodeIterator()` Returns an iterator through the content nodes of this branch
`boolean` `remove(Comment comment)` Removes the given `Comment` if the node is an immediate child of this branch.
`boolean` `remove(Element element)` Removes the given `Element` if the node is an immediate child of this branch.
`boolean` `remove(Node node)` Removes the given `Node` if the node is an immediate child of this branch.
`boolean` `remove(ProcessingInstruction pi)` Removes the given `ProcessingInstruction` if the node is an immediate child of this branch.
`protected abstract boolean` `removeNode(Node node)`
`void` `setProcessingInstructions(List listOfPIs)` Sets all the processing instructions for this branch

Methods inherited from class org.dom4j.tree.AbstractNode
`asXPathResult, clone, createPattern, createXPath, createXPathFilter, createXPathResult, detach, getDocument, getDocumentFactory, getName, getNodeType, getNodeTypeName, getParent, getPath, getStringValue, getUniquePath, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, setDocument, setName, setParent, setText, supportsParent, valueOf, write`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.dom4j.Branch
`clearContent, normalize, processingInstruction, processingInstructions, processingInstructions, removeProcessingInstruction, setContent`

Methods inherited from interface org.dom4j.Node
`accept, asXML, asXPathResult, clone, createXPath, detach, getDocument, getName, getNodeType, getNodeTypeName, getParent, getPath, getPath, getStringValue, getUniquePath, getUniquePath, matches, numberValueOf, selectNodes, selectNodes, selectNodes, selectObject, selectSingleNode, setDocument, setName, setParent, setText, supportsParent, valueOf, write`

Field Detail

### DEFAULT_CONTENT_LIST_SIZE

    protected static final int DEFAULT_CONTENT_LIST_SIZE

See Also:
  Constant Field Values

Constructor Detail

### AbstractBranch

    public AbstractBranch()

Method Detail

### isReadOnly

    public boolean isReadOnly()

  Description copied from interface: `Node`

  `isReadOnly` returns true if this node is read only and cannot be modified. Any attempt to modify a read-only `Node` will result in an `UnsupportedOperationException` being thrown.

  Specified by:
    `isReadOnly` in interface `Node`
  Overrides:
    `isReadOnly` in class `AbstractNode`

### hasContent

    public boolean hasContent()

  Description copied from interface: `Node`

  `hasContent` returns true if this node is a Branch (either an Element or a Document) and it contains at least one content node such as a child Element or Text node.

  Specified by:
    `hasContent` in interface `Node`
  Overrides:
    `hasContent` in class `AbstractNode`

### content

    public List content()

  Description copied from interface: `Branch`

  Returns the content nodes of this branch as a backed `List`so that the content of this branch may be modified directly using the `List`interface. The `List` is backed by the `Branch` so that changes to the list are reflected in the branch and vice versa.

  Specified by:
    `content` in interface `Branch`
  Returns:
    the nodes that this branch contains as a `List`

### getText

    public String getText()

  Description copied from interface: `Node`

  Returns the text of this node.

  Specified by:
    `getText` in interface `Node`
  Overrides:
    `getText` in class `AbstractNode`

### getContentAsText

    protected String getContentAsText(Object content)

  DOCUMENT ME!

  Parameters:
    `content` - DOCUMENT ME!
  Returns:
    the text value of the given content object as text which returns the text value of CDATA, Entity or Text nodes

### getContentAsStringValue

    protected String getContentAsStringValue(Object content)

  DOCUMENT ME!

  Parameters:
    `content` - DOCUMENT ME!
  Returns:
    the XPath defined string-value of the given content object

### getTextTrim

    public String getTextTrim()

### setProcessingInstructions

    public void setProcessingInstructions(List listOfPIs)

  Description copied from interface: `Branch`
  Sets all the processing instructions for this branch

  Specified by:
    `setProcessingInstructions` in interface `Branch`
  Parameters:
    `listOfPIs` - DOCUMENT ME!

### addElement

    public Element addElement(String name)

  Description copied from interface: `Branch`
  Adds a new `Element` node with the given name to this branch and returns a reference to the new node.

  Specified by:
    `addElement` in interface `Branch`
  Parameters:
    `name` - is the name for the `Element` node.
  Returns:
    the newly added `Element` node.

### addElement

    public Element addElement(String qualifiedName,
                              String namespaceURI)

  Description copied from interface: `Branch`
  Adds a new `Element` node with the given qualified name and namespace URI to this branch and returns a reference to the new node.

  Specified by:
    `addElement` in interface `Branch`
  Parameters:
    `qualifiedName` - is the fully qualified name of the Element
    `namespaceURI` - is the URI of the namespace to use
  Returns:
    the newly added `Element` node.

### addElement

    public Element addElement(QName qname)

  Description copied from interface: `Branch`
  Adds a new `Element` node with the given `QName`to this branch and returns a reference to the new node.

  Specified by:
    `addElement` in interface `Branch`
  Parameters:
    `qname` - is the qualified name for the `Element` node.
  Returns:
    the newly added `Element` node.

### addElement

    public Element addElement(String name,
                              String prefix,
                              String uri)

### add

    public void add(Node node)

  Description copied from interface: `Branch`
  Adds the given `Node` or throws `IllegalAddException` if the given node is not of a valid type. This is a polymorphic method which will call the typesafe method for the node type such as add(Element) or add(Comment).

  Specified by:
    `add` in interface `Branch`
  Parameters:
    `node` - is the given node to add

### remove

    public boolean remove(Node node)

  Description copied from interface: `Branch`
  Removes the given `Node` if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the `Node.detach()`method should be used instead. This is a polymorphic method which will call the typesafe method for the node type such as remove(Element) or remove(Comment).

  Specified by:
    `remove` in interface `Branch`
  Parameters:
    `node` - is the given node to be removed
  Returns:
    true if the node was removed

### add

    public void add(Comment comment)

  Description copied from interface: `Branch`
  Adds the given `Comment` to this branch. If the given node already has a parent defined then an `IllegalAddException` will be thrown.

  Specified by:
    `add` in interface `Branch`
  Parameters:
    `comment` - is the comment to be added

### add

    public void add(Element element)

  Description copied from interface: `Branch`
  Adds the given `Element` to this branch. If the given node already has a parent defined then an `IllegalAddException` will be thrown.

  Specified by:
    `add` in interface `Branch`
  Parameters:
    `element` - is the element to be added

### add

    public void add(ProcessingInstruction pi)

  Description copied from interface: `Branch`
  Adds the given `ProcessingInstruction` to this branch. If the given node already has a parent defined then an `IllegalAddException` will be thrown.

  Specified by:
    `add` in interface `Branch`
  Parameters:
    `pi` - is the processing instruction to be added

### remove

    public boolean remove(Comment comment)

  Description copied from interface: `Branch`
  Removes the given `Comment` if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the `Node.detach()`method should be used instead.

  Specified by:
    `remove` in interface `Branch`
  Parameters:
    `comment` - is the comment to be removed
  Returns:
    true if the comment was removed

### remove

    public boolean remove(Element element)

  Description copied from interface: `Branch`
  Removes the given `Element` if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the `Node.detach()`method should be used instead.

  Specified by:
    `remove` in interface `Branch`
  Parameters:
    `element` - is the element to be removed
  Returns:
    true if the element was removed

### remove

    public boolean remove(ProcessingInstruction pi)

  Description copied from interface: `Branch`
  Removes the given `ProcessingInstruction` if the node is an immediate child of this branch. If the given node is not an immediate child of this branch then the `Node.detach()`method should be used instead.

  Specified by:
    `remove` in interface `Branch`
  Parameters:
    `pi` - is the processing instruction to be removed
  Returns:
    true if the processing instruction was removed

### elementByID

    public Element elementByID(String elementID)

  Description copied from interface: `Branch`
  Returns the element of the given ID attribute value. If this tree is capable of understanding which attribute value should be used for the ID then it should be used, otherwise this method should return null.

  Specified by:
    `elementByID` in interface `Branch`
  Parameters:
    `elementID` - DOCUMENT ME!
  Returns:
    DOCUMENT ME!

### appendContent

    public void appendContent(Branch branch)

  Description copied from interface: `Branch`
  Appends the content of the given branch to this branch instance. This method behaves like the `Collection.addAll(java.util.Collection)` method.

  Specified by:
    `appendContent` in interface `Branch`
  Parameters:
    `branch` - is the branch whose content will be added to me.

### node

    public Node node(int index)

  Description copied from interface: `Branch`
  Returns the `Node` at the specified index position.

  Specified by:
    `node` in interface `Branch`
  Parameters:
    `index` - the index of the node to return.
  Returns:
    the `Node` at the specified position.

### nodeCount

    public int nodeCount()

  Description copied from interface: `Branch`
  Returns the number of `Node` instances that this branch contains.

  Specified by:
    `nodeCount` in interface `Branch`
  Returns:
    the number of nodes this branch contains

### indexOf

    public int indexOf(Node node)

  Description copied from interface: `Branch`
  Returns the index of the given node if it is a child node of this branch or -1 if the given node is not a child node.

  Specified by:
    `indexOf` in interface `Branch`
  Parameters:
    `node` - the content child node to find.
  Returns:
    the index of the given node starting at 0 or -1 if the node is not a child node of this branch

### nodeIterator

    public Iterator nodeIterator()

  Description copied from interface: `Branch`
  Returns an iterator through the content nodes of this branch

  Specified by:
    `nodeIterator` in interface `Branch`
  Returns:
    an iterator through the content nodes of this branch

### elementID

    protected String elementID(Element element)

  DOCUMENT ME!

  Parameters:
    `element` - DOCUMENT ME!
  Returns:
    the ID of the given `Element`

### contentList

    protected abstract List contentList()

  DOCUMENT ME!

  Returns:
    the internal List used to manage the content

### createContentList

    protected List createContentList()

  A Factory Method pattern which creates a List implementation used to store content

  Returns:
    DOCUMENT ME!

### createContentList

    protected List createContentList(int size)

  A Factory Method pattern which creates a List implementation used to store content

  Parameters:
    `size` - DOCUMENT ME!
  Returns:
    DOCUMENT ME!

### createResultList

    protected BackedList createResultList()

  A Factory Method pattern which creates a BackedList implementation used to store results of a filtered content query.

  Returns:
    DOCUMENT ME!

### createSingleResultList

    protected List createSingleResultList(Object result)

  A Factory Method pattern which creates a BackedList implementation which contains a single result

  Parameters:
    `result` - DOCUMENT ME!
  Returns:
    DOCUMENT ME!

### createEmptyList

    protected List createEmptyList()

  A Factory Method pattern which creates an empty a BackedList implementation

  Returns:
    DOCUMENT ME!

### addNode

    protected abstract void addNode(Node node)

### addNode

    protected abstract void addNode(int index,
                                    Node node)

### removeNode

    protected abstract boolean removeNode(Node node)

### childAdded

    protected abstract void childAdded(Node node)

  Called when a new child node has been added to me to allow any parent relationships to be created or events to be fired.

  Parameters:
    `node` - DOCUMENT ME!

### childRemoved

    protected abstract void childRemoved(Node node)

  Called when a child node has been removed to allow any parent relationships to be deleted or events to be fired.

  Parameters:
    `node` - DOCUMENT ME!

### contentRemoved

    protected void contentRemoved()

  Called when the given List content has been removed so each node should have its parent and document relationships cleared

### invalidNodeTypeAddException

    protected void invalidNodeTypeAddException(Node node)

  Called when an invalid node has been added. Throws an `IllegalAddException`.

  Parameters:
    `node` - DOCUMENT ME!
  Throws:
    `IllegalAddException` - DOCUMENT ME!

Copyright © 2001-2005 MetaStuff Ltd.. All Rights Reserved.