Esempio n. 1
0
 /** Removes an existing {@link NodeChild} */
 public synchronized void removeChild(final Dom reference) {
   ListIterator<Child> itr = children.listIterator();
   while (itr.hasNext()) {
     Child child = itr.next();
     if (child instanceof NodeChild) {
       NodeChild nc = (NodeChild) child;
       if (nc.dom == reference) {
         itr.remove();
         reference.release();
         return;
       }
     }
   }
   throw new IllegalArgumentException(
       reference + " is not a valid child of " + this + ". Children=" + children);
 }
Esempio n. 2
0
  /**
   * Replaces an existing {@link NodeChild} with another one.
   *
   * @see #insertAfter(Dom, String, Dom)
   */
  public synchronized void replaceChild(Dom reference, String name, Dom newNode) {
    ListIterator<Child> itr = children.listIterator();
    while (itr.hasNext()) {
      Child child = itr.next();
      if (child instanceof NodeChild) {
        NodeChild nc = (NodeChild) child;
        if (nc.dom == reference) {
          reference.release();
          newNode.domDescriptor =
              addWithAlias(getHabitat(), newNode, newNode.getProxyType(), newNode.getKey());

          itr.set(new NodeChild(name, newNode));
          return;
        }
      }
    }
    throw new IllegalArgumentException(
        reference + " is not a valid child of " + this + ". Children=" + children);
  }