public Object get(final Dom dom, Type returnType) { // TODO: perhaps support more collection types? final List<String> v = dom.leafElements(xmlName); if(!(returnType instanceof ParameterizedType)) throw new IllegalArgumentException("List needs to be parameterized"); final Class itemType = Types.erasure(Types.getTypeArgument(returnType,0)); // return a live list return new AbstractList<Object>() { public Object get(int index) { return convertLeafValue(dom, itemType, v.get(index)); } public void add(int index, Object element) { // update the master children list, as well as this view 'v' dom.addLeafElement(xmlName, elementValue(element)); v.add(index, element.toString()); } public Object remove(int index) { dom.removeLeafElement(xmlName, v.get(index)); return v.remove(index); } public Object set(int index, Object element) { dom.changeLeafElement(xmlName, v.get(index), elementValue(element)); return v.set(index, element.toString()); } public int size() { return v.size(); } }; }
public Map<String, String> getNodeAttributes(Dom node, String prefix) { Map<String, String> result = new HashMap<String, String>(); for (String attrName : node.model.getAttributeNames()) { String value = (String) node.model.findIgnoreCase(attrName).get(node, String.class); if (value!=null) { result.put(attrName, value); } } for (String leafName : node.model.getLeafElementNames()) { List values = node.leafElements(leafName); Iterator i = values.iterator(); StringBuffer value = new StringBuffer(); while (i.hasNext()) { String nextValue = (String) i.next(); if (nextValue!=null) { value.append(nextValue); if(i.hasNext()) { value.append(","); } } } result.put(leafName, value.toString()); } return result; }
public Object get(final Dom dom, Type returnType) { // TODO: perhaps support more collection types? final List<String> v = dom.leafElements(xmlName); if(!(returnType instanceof ParameterizedType)) throw new IllegalArgumentException("List needs to be parameterized"); final Class itemType = Types.erasure(Types.getTypeArgument(returnType,0)); // return a live list return new AbstractList<Object>() { public Object get(int index) { return convertLeafValue(itemType, v.get(index)); } public void add(int index, Object element) { // update the master children list, as well as this view 'v' dom.addLeafElement(xmlName, element.toString()); v.add(index, element.toString()); } public Object remove(int index) { dom.removeLeafElement(xmlName, v.get(index)); return v.remove(index); } public Object set(int index, Object element) { dom.changeLeafElement(xmlName, v.get(index), element.toString()); return v.set(index, element.toString()); } public int size() { return v.size(); } }; }
public Object get(final Dom dom, Type returnType) { // TODO: perhaps support more collection types? final List<String> v = dom.leafElements(xmlName); if(!(returnType instanceof ParameterizedType)) throw new IllegalArgumentException("List needs to be parameterized"); final Class itemType = Types.erasure(Types.getTypeArgument(returnType,0)); // return a live list return new AbstractList<Object>() { public Object get(int index) { return convertLeafValue(dom, itemType, v.get(index)); } public void add(int index, Object element) { // update the master children list, as well as this view 'v' dom.addLeafElement(xmlName, elementValue(element)); v.add(index, element.toString()); } public Object remove(int index) { dom.removeLeafElement(xmlName, v.get(index)); return v.remove(index); } public Object set(int index, Object element) { dom.changeLeafElement(xmlName, v.get(index), elementValue(element)); return v.set(index, element.toString()); } public int size() { return v.size(); } }; }
public Object get(final Dom dom, Type returnType) { // TODO: perhaps support more collection types? final List<String> v = dom.leafElements(xmlName); if(!(returnType instanceof ParameterizedType)) throw new IllegalArgumentException("List needs to be parameterized"); final Class itemType = Types.erasure(Types.getTypeArgument(returnType,0)); // return a live list return new AbstractList<Object>() { public Object get(int index) { return convertLeafValue(dom, itemType, v.get(index)); } public void add(int index, Object element) { // update the master children list, as well as this view 'v' dom.addLeafElement(xmlName, elementValue(element)); v.add(index, element.toString()); } public Object remove(int index) { dom.removeLeafElement(xmlName, v.get(index)); return v.remove(index); } public Object set(int index, Object element) { dom.changeLeafElement(xmlName, v.get(index), elementValue(element)); return v.set(index, element.toString()); } public int size() { return v.size(); } }; }
public Object get(final Dom dom, Type returnType) { // TODO: perhaps support more collection types? final List<String> v = dom.leafElements(xmlName); if(!(returnType instanceof ParameterizedType)) throw new IllegalArgumentException("List needs to be parameterized"); final Class itemType = Types.erasure(Types.getTypeArgument(returnType,0)); // return a live list return new AbstractList<Object>() { public Object get(int index) { return convertLeafValue(dom, itemType, v.get(index)); } public void add(int index, Object element) { // update the master children list, as well as this view 'v' dom.addLeafElement(xmlName, elementValue(element)); v.add(index, element.toString()); } public Object remove(int index) { dom.removeLeafElement(xmlName, v.get(index)); return v.remove(index); } public Object set(int index, Object element) { dom.changeLeafElement(xmlName, v.get(index), elementValue(element)); return v.set(index, element.toString()); } public int size() { return v.size(); } }; }