public Object get(Object object, String xpath, Class target) { JXPathContext context = JXPathContext.newContext(object); Enumeration declaredPrefixes = namespaces.getDeclaredPrefixes(); while (declaredPrefixes.hasMoreElements()) { String prefix = (String) declaredPrefixes.nextElement(); String uri = namespaces.getURI(prefix); context.registerNamespace(prefix, uri); } Iterator it = context.iteratePointers(xpath); List results = new ArrayList<Object>(); while (it.hasNext()) { Pointer pointer = (Pointer) it.next(); if (pointer instanceof AttributeNodePointer) { results.add(((AttributeNodePointer) pointer).getImmediateAttribute()); } else { results.add(pointer.getValue()); } } if (results.size() == 0) { throw new IllegalArgumentException("x-path gives no results."); } else if (results.size() == 1) { return results.get(0); } else { return results; } }
public String asPath() { return this.pointer.asPath(); } }
/** * TODO document that method. * @return TODO */ public Object getResult() { return pointer.getNode(); }
/** return the xpath for a particular object. * * @param target object to return xpath for. must be in object tree (or a similar object equivalent under equals()) * @return xpath for that object, or null * */ public final String getXPathFor(Object target) { // add variable we're looking for. JXPathContext cxt = this.accessJXPathContext(); cxt.getVariables().declareVariable("target",target); Pointer p = cxt.getPointer("//*[fn:matchTarget()]"); // tidyup cxt.getVariables().undeclareVariable("target"); // sanity check.. return p != null && p.getNode() != null ? p.asPath() : null; }
while (rowPointers.hasNext()) { Pointer jxp = (Pointer)rowPointers.next(); JXPathContext rowContext = repeaterContext.getRelativeContext((Pointer)jxp.clone()); List contextIdentity = getIdentity(rowContext); repeaterContext.getRelativeContext(newRowContextPointer); if (getLogger().isDebugEnabled()) { getLogger().debug("inserted row at " + newRowContextPointer.asPath());
pointer.setValue(o); return true; // OK. We have an initial Object of the right Class initialized.
public Object getRootNode() { return pointer.getRootNode(); }
@Override public Object[] applyModification(Object[] originalArguments) { if (updatedArgumentIndex >= originalArguments.length) { throw new VariationRuntimeException("Failed to apply variaion \"" + getVariationID() + "\". Number of argument to modify is [" + updatedArgumentIndex + "] but arguments length is " + originalArguments.length); } JXPathContext context = JXPathContext.newContext(originalArguments[updatedArgumentIndex]); Pointer pointer = compiledExpression.createPath(context); pointer.setValue(valueToSet); return originalArguments; }
NodePointer.newNodePointer( new QName(null, "root"), contextPointer.getRootNode(), getLocale());
private Object getXpathResultObject(Object obj) { if (obj instanceof Pointer) { obj = ((Pointer) obj).getValue(); } return obj; }
public Object next() { return ((Pointer)iter.next()).getNode(); }
public static String convertPath(Pointer pointer) { String pointerPath = pointer.asPath(); String[] nodes = pointerPath.split("/"); /* * The format of the pointer is like "/child/child[x]/.../child[y]". After the split the first two "nodes" are: * "" and "child". If a third is missing we are at the root. */ if (nodes.length < 3) { return ""; } StringBuilder pathBuilder = new StringBuilder(); // Since we have handled the case with the root for (int index = 2; index < nodes.length; index++) { // the format is 'node[someNumber]' so we drop 'node[' and ']' String nodeIndex = nodes[index].substring(5, nodes[index].length() - 1); Integer indexValue = Integer.valueOf(nodeIndex) - 1; pathBuilder.append(indexValue).append(AccessibilityElement.PATH_SEPARATOR); } return pathBuilder.toString(); } }
@Override public Object[] applyModification(Object[] originalArguments) { if (updatedArgumentIndex >= originalArguments.length) { throw new VariationRuntimeException("Failed to apply variaion \"" + getVariationID() + "\". Number of argument to modify is [" + updatedArgumentIndex + "] but arguments length is " + originalArguments.length); } JXPathContext context = JXPathContext.newContext(originalArguments[updatedArgumentIndex]); Pointer pointer = compiledExpression.createPath(context); pointer.setValue(valueToSet); return originalArguments; }
private Object getXpathResultObject(Object obj) { if (obj instanceof Pointer) { obj = ((Pointer) obj).getValue(); } return obj; }
public synchronized List getNodes() { if (nodes == null) { nodes = new ArrayList(); for (int i = 0; i < pointers.size(); i++) { Pointer pointer = (Pointer) pointers.get(i); nodes.add(pointer.getNode()); } nodes = Collections.unmodifiableList(nodes); } return nodes; }
public String toString() { Pointer ptr = getContextNodePointer(); return ptr == null ? "Empty expression context" : "Expression context [" + getPosition() + "] " + ptr.asPath(); }
rowPtr.setValue(value);
public Object next() { Object o = iterator.next(); return o instanceof Pointer ? ((Pointer) o).getValue() : o; }
/** * TODO document that method. * @return TODO */ public Context getContext() { return new Context( pointer.getNode().toString() ); }