/** * 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); }
/** * 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); }
/** * Updates node-element values. * <p> * Synchronized so that concurrenct modifications will work correctly. */ public synchronized void setNodeElements(final String name, Dom... values) { List<Child> newChildren = new ArrayList<Child>(children); NodeChild[] leaves = new NodeChild[values.length]; for (int i = 0; i < values.length; i++) leaves[i] = new NodeChild(name,values[i]); List<Child> removed = stitchList(newChildren,name,Arrays.asList(leaves)); children = newChildren; for (Child c : removed) { ((NodeChild) c).dom.release(); } // see attribute(String,String) for the issue with this getInjector().injectElement(this,name,get()); }
/** * 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); }
/** * 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); }
/** * Removes an existing {@link NodeChild} * */ public synchronized void removeChild(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(); habitat.removeIndex(reference.getProxyType().getName(), reference.getKey()); reference.release(); return; } } } throw new IllegalArgumentException(reference+" is not a valid child of "+this+". Children="+children); }
/** * Removes an existing {@link NodeChild} * */ public synchronized void removeChild(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(); habitat.removeIndex(reference.getProxyType().getName(), reference.getKey()); reference.release(); return; } } } throw new IllegalArgumentException(reference+" is not a valid child of "+this+". Children="+children); }
/** * 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); }
/** * 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); }
/** * Updates node-element values. * <p> * Synchronized so that concurrenct modifications will work correctly. */ public synchronized void setNodeElements(final String name, Dom... values) { List<Child> newChildren = new ArrayList<Child>(children); NodeChild[] leaves = new NodeChild[values.length]; for (int i = 0; i < values.length; i++) leaves[i] = new NodeChild(name,values[i]); List<Child> removed = stitchList(newChildren,name,Arrays.asList(leaves)); children = newChildren; for (Child c : removed) { ((NodeChild) c).dom.release(); } // see attribute(String,String) for the issue with this getInjector().injectElement(this,name,get()); }
/** * Updates node-element values. * <p> * Synchronized so that concurrenct modifications will work correctly. */ public synchronized void setNodeElements(final String name, Dom... values) { List<Child> newChildren = new ArrayList<Child>(children); NodeChild[] leaves = new NodeChild[values.length]; for (int i = 0; i < values.length; i++) leaves[i] = new NodeChild(name,values[i]); List<Child> removed = stitchList(newChildren,name,Arrays.asList(leaves)); children = newChildren; for (Child c : removed) { ((NodeChild) c).dom.release(); } // see attribute(String,String) for the issue with this getInjector().injectElement(this,name,get()); }