package org.firesoa.common.jxpath.model.dom4j; import org.apache.commons.jxpath.ri.QName; import org.apache.commons.jxpath.ri.model.NodePointer; import org.apache.commons.jxpath.util.TypeUtils; import org.dom4j.Attribute; public class Dom4JAttributePointer extends NodePointer { /** * */ private static final long serialVersionUID = -5491204762084246036L; private Attribute attr; public Dom4JAttributePointer(NodePointer parent,Attribute attr){ super(parent); this.attr = attr; } @Override public boolean isLeaf() { return true; } @Override public boolean isCollection() { return false; } @Override public int getLength() { return 1; } @Override public QName getName() { return new QName( Dom4JNodePointer.getPrefix(attr), Dom4JNodePointer.getLocalName(attr)); } @Override public Object getBaseValue() { return attr; } @Override public Object getImmediateNode() { return attr; } @Override public void setValue(Object value) { attr.setValue((String) TypeUtils.convert(value, String.class)); } @Override public int compareChildNodePointers(NodePointer pointer1, NodePointer pointer2) { // TODO Auto-generated method stub return 0; } public void remove() { attr.getParent().remove(attr); } public boolean isActual() { return true; } public int hashCode() { return System.identityHashCode(attr); } public Object getValue() { return attr.getValue(); } public String getNamespaceURI() { String uri = attr.getNamespaceURI(); if (uri != null && uri.equals("")) { uri = null; } return uri; } public boolean equals(Object object) { return object == this || object instanceof Dom4JAttributePointer && ((Dom4JAttributePointer) object).attr == attr; } public String asPath() { StringBuffer buffer = new StringBuffer(); if (parent != null) { buffer.append(parent.asPath()); if (buffer.length() == 0 || buffer.charAt(buffer.length() - 1) != '/') { buffer.append('/'); } } buffer.append('@'); buffer.append(getName()); return buffer.toString(); } }