Example usage for org.apache.commons.jxpath.ri.model NodeIterator getNodePointer

List of usage examples for org.apache.commons.jxpath.ri.model NodeIterator getNodePointer

Introduction

In this page you can find the example usage for org.apache.commons.jxpath.ri.model NodeIterator getNodePointer.

Prototype

NodePointer getNodePointer();

Source Link

Document

Get the NodePointer at the current position.

Usage

From source file:org.eclipse.e4.emf.internal.xpath.CollectionNodeIterator.java

/**
 * Prepare...//from  w w  w  . j a  v  a 2 s  . c om
 */
private void prepare() {
    collection = new ArrayList<>();
    NodePointer ptr = (NodePointer) pointer.clone();
    int length = ptr.getLength();
    for (int i = 0; i < length; i++) {
        ptr.setIndex(i);
        NodePointer elementPointer = ptr.getValuePointer();
        NodeIterator iter = getElementNodeIterator(elementPointer);

        for (int j = 1; iter.setPosition(j); j++) {
            NodePointer childPointer = iter.getNodePointer();
            if (reverse) {
                collection.add(0, childPointer);
            } else {
                collection.add(childPointer);
            }
        }
    }
    if (startWith != null) {
        int index = collection.indexOf(startWith);
        if (index == -1) {
            throw new JXPathException("Invalid starting pointer for iterator: " + startWith);
        }
        while (collection.size() > index) {
            if (!reverse) {
                collection.remove(collection.size() - 1);
            } else {
                collection.remove(0);
            }
        }
    }
}

From source file:org.firesoa.common.jxpath.model.dom4j.Dom4JNodePointer.java

public NodePointer createChild(JXPathContext context, QName name, int index) {
    if (index == WHOLE_COLLECTION) {
        index = 0;//from ww w.j  a  v a  2s.  c om
    }
    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) + "]");
}

From source file:org.firesoa.common.jxpath.model.dom4j.Dom4JNodePointer.java

/**
 * ??nameattribute/*from  www.  ja  v  a2s.  co m*/
 */
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 nsUri = null;
        NamespaceResolver nsr = getNamespaceResolver();
        if (nsr != null) {
            nsUri = nsr.getNamespaceURI(prefix);
        }
        if (nsUri == null) {
            throw new JXPathException("Unknown namespace prefix: " + prefix);
        }
        Namespace dom4jNs = Namespace.get(prefix, nsUri);
        org.dom4j.QName attributeName = new org.dom4j.QName(name.getName(), dom4jNs);
        Attribute attr = element.attribute(attributeName);
        if (attr == null) {
            element.addAttribute(attributeName, "");
        }
    } else {
        Attribute attr = element.attribute(name.getName());
        if (attr == null) {
            element.addAttribute(name.getName(), "");
        }
    }
    NodeIterator it = attributeIterator(name);
    it.setPosition(1);
    return it.getNodePointer();
}