public NodePointer getCurrentNodePointer() { if (position == 0 && !setPosition(1)) { return null; } return iterator == null ? null : iterator.getNodePointer(); }
/** * Checks if we are reentering a bean we have already seen and if so * returns true to prevent infinite recursion. * @return boolean */ private boolean isRecursive() { Object node = currentNodePointer.getNode(); for (int i = stack.size() - 1; --i >= 0;) { NodeIterator it = (NodeIterator) stack.get(i); Pointer pointer = it.getNodePointer(); if (pointer != null && pointer.getNode() == node) { return true; } } return false; } }
/** * Returns true if the pointer has an attribute called "name" and * its value is equal to the supplied string. * @param pointer input pointer * @param name name to check * @return boolean */ private static boolean isNameAttributeEqual( NodePointer pointer, String name) { NodeIterator it = pointer.attributeIterator(QNAME_NAME); return it != null && it.setPosition(1) && name.equals(it.getNodePointer().getValue()); }
NodePointer childPointer = iter.getNodePointer(); if (reverse) { collection.add(0, childPointer);
NodePointer childPointer = iter.getNodePointer(); if (reverse) { collection.add(0, childPointer);
NodePointer childPointer = iter.getNodePointer(); if (reverse) { collection.add(0, childPointer);
/** * This method is called on the last context on the path when only * one value is needed. Note that this will return the whole property, * even if it is a collection. It will not extract the first element * of the collection. For example, "books" will return the collection * of books rather than the first book from that collection. * @return Pointer */ public Pointer getSingleNodePointer() { if (position == 0) { while (nextSet()) { prepare(); if (iterator == null) { return null; } // See if there is a property there, singular or collection NodePointer pointer = iterator.getNodePointer(); if (pointer != null) { return pointer; } } return null; } return getCurrentNodePointer(); }
public Object getValue() { if (node instanceof Element) { StringBuffer buf = new StringBuffer(); for (NodeIterator children = childIterator(null, false, null); children.setPosition(children.getPosition() + 1);) { NodePointer ptr = children.getNodePointer(); if (ptr.getImmediateNode() instanceof Element || ptr.getImmediateNode() instanceof Text) { buf.append(ptr.getValue()); } } return buf.toString(); } if (node instanceof Comment) { String text = ((Comment) node).getText(); if (text != null) { text = text.trim(); } return text; } String result = null; if (node instanceof Text) { result = ((Text) node).getText(); } if (node instanceof ProcessingInstruction) { result = ((ProcessingInstruction) node).getData(); } boolean trim = !"preserve".equals(findEnclosingAttribute(node, "space", Namespace.XML_NAMESPACE)); return result != null && trim ? result.trim() : result; }
/** * Find the namespace prefix for the specified namespace URI and NodePointer. * @param pointer location * @param namespaceURI to check * @return prefix if found * @since JXPath 1.3 */ protected static String getPrefix(NodePointer pointer, String namespaceURI) { NodePointer currentPointer = pointer; while (currentPointer != null) { NodeIterator ni = currentPointer.namespaceIterator(); for (int position = 1; ni != null && ni.setPosition(position); position++) { NodePointer nsPointer = ni.getNodePointer(); String uri = nsPointer.getNamespaceURI(); if (uri.equals(namespaceURI)) { String prefix = nsPointer.getName().getName(); if (!"".equals(prefix)) { return prefix; } } } currentPointer = pointer.getParent(); } return null; }
NodeIterator it = (NodeIterator) stack.peek(); if (it.setPosition(it.getPosition() + 1)) { currentNodePointer = it.getNodePointer(); if (!isRecursive()) { if (!currentNodePointer.isLeaf()) {
NodeIterator it = (NodeIterator) stack.peek(); if (it.setPosition(it.getPosition() + 1)) { currentNodePointer = it.getNodePointer(); if (!currentNodePointer.isLeaf()) { stack.push( NodeIterator it = (NodeIterator) stack.peek(); if (it.setPosition(it.getPosition() + 1)) { currentNodePointer = it.getNodePointer(); if (!currentNodePointer.isLeaf()) { stack.push( if (!stack.isEmpty()) { it = (NodeIterator) stack.peek(); currentNodePointer = it.getNodePointer(); if (currentNodePointer.testNode(nodeTest)) { super.setPosition(getCurrentPosition() + 1);
public NodePointer createAttribute(JXPathContext context, QName name) { if (!(node instanceof Element)) { return super.createAttribute(context, name); } Element element = (Element) node; String prefix = name.getPrefix(); if (prefix != null) { String ns = null; NamespaceResolver nsr = getNamespaceResolver(); if (nsr != null) { ns = nsr.getNamespaceURI(prefix); } if (ns == null) { throw new JXPathException( "Unknown namespace prefix: " + prefix); } element.setAttributeNS(ns, name.toString(), ""); } else { if (!element.hasAttribute(name.getName())) { element.setAttribute(name.getName(), ""); } } NodeIterator it = attributeIterator(name); it.setPosition(1); return it.getNodePointer(); }
String key = keyFromPredicate(context, predicate); for (int i = 1; it.setPosition(i); i++) { NodePointer ptr = it.getNodePointer(); if (isNameAttributeEqual(ptr, key)) { pointer = ptr; int index = indexFromPredicate(context, predicate); if (it.setPosition(index + 1)) { pointer = it.getNodePointer(); List list = new ArrayList(); for (int i = 1; it.setPosition(i); i++) { list.add(it.getNodePointer());
return false; currentNodePointer = iterator.getNodePointer(); return true;
if (it != null) { for (int i = 1; it.setPosition(i); i++) { NodePointer childPointer = it.getNodePointer(); if (steps.length == currentStep + 1) {
public NodePointer createChild(JXPathContext context, QName name, int index) { if (index == WHOLE_COLLECTION) { index = 0; } boolean success = getAbstractFactory(context).createObject( context, this, node, name.toString(), index); if (success) { NodeTest nodeTest; String prefix = name.getPrefix(); String namespaceURI = prefix == null ? null : context .getNamespaceURI(prefix); nodeTest = new NodeNameTest(name, namespaceURI); NodeIterator it = childIterator(nodeTest, false, null); if (it != null && it.setPosition(index + 1)) { return it.getNodePointer(); } } throw new JXPathAbstractFactoryException( "Factory could not create a child node for path: " + asPath() + "/" + name + "[" + (index + 1) + "]"); }
public NodePointer createChild( JXPathContext context, QName name, int index) { if (index == WHOLE_COLLECTION) { index = 0; } boolean success = getAbstractFactory(context).createObject( context, this, node, name.toString(), index); if (success) { NodeTest nodeTest; String prefix = name.getPrefix(); String namespaceURI = prefix == null ? null : context .getNamespaceURI(prefix); nodeTest = new NodeNameTest(name, namespaceURI); NodeIterator it = childIterator(nodeTest, false, null); if (it != null && it.setPosition(index + 1)) { return it.getNodePointer(); } } throw new JXPathAbstractFactoryException("Factory could not create " + "a child node for path: " + asPath() + "/" + name + "[" + (index + 1) + "]"); }
return false; currentNodePointer = iterator.getNodePointer(); return true;
public NodePointer createAttribute(JXPathContext context, QName name) { if (!(node instanceof Element)) { return super.createAttribute(context, name); } Element element = (Element) node; String prefix = name.getPrefix(); if (prefix != null) { String namespaceUri = getNamespaceResolver().getNamespaceURI(prefix); if (namespaceUri == null) { throw new JXPathException( "Unknown namespace prefix: " + prefix); } Namespace ns = Namespace.getNamespace(prefix, namespaceUri); Attribute attr = element.getAttribute(name.getName(), ns); if (attr == null) { element.setAttribute(name.getName(), "", ns); } } else { Attribute attr = element.getAttribute(name.getName()); if (attr == null) { element.setAttribute(name.getName(), ""); } } NodeIterator it = attributeIterator(name); it.setPosition(1); return it.getNodePointer(); }