public Object evaluate(ObjectModel objectModel) throws ExpressionException{ return this.compiledExpression.getValue(getContext(objectModel)); }
public void assign(ObjectModel objectModel, Object value) throws ExpressionException { this.compiledExpression.setValue(getContext(objectModel), value); }
public Iterator iterate(ObjectModel objectModel) throws ExpressionException { final JXPathContext jxpathContext = getContext(objectModel); Object val = this.compiledExpression.getPointer(jxpathContext, this.expression).getNode(); // FIXME: workaround for JXPath bug if (val instanceof NativeArray) return new JSIntrospector.NativeArrayIterator((NativeArray) val); else return new Iterator() { Iterator iter = compiledExpression.iteratePointers(jxpathContext); public boolean hasNext() { return iter.hasNext(); } public Object next() { return ((Pointer)iter.next()).getNode(); } public void remove() { iter.remove(); } }; }
@Override public Object currentValue(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); return pointer.getValue(); }
public Object getNode(ObjectModel objectModel) throws ExpressionException { Iterator iter = this.compiledExpression.iteratePointers(getContext(objectModel)); if (iter.hasNext()) { Pointer first = (Pointer)iter.next(); if (iter.hasNext()) { List result = new LinkedList(); result.add(first.getNode()); boolean dom = (first.getNode() instanceof Node); while (iter.hasNext()) { Object obj = ((Pointer)iter.next()).getNode(); dom = dom && (obj instanceof Node); result.add(obj); } Object[] arr; if (dom) { arr = new Node[result.size()]; } else { arr = new Object[result.size()]; } result.toArray(arr); return arr; } return first.getNode(); } return null; }
@Override public Object currentValue(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); return pointer.getValue(); }
/** * Helper method for obtaining the value of a particular variable. * * @param variable variable name * @return variable value as an <code>Object</code> */ private Object getValue(final String variable) { Object value; if (m_cache.containsKey(variable)) { value = m_cache.get(variable); } else { value = JXPathContext.compile(variable).getValue(m_jxpathContext); if (value == null) { if (getLogger().isWarnEnabled()) { final String msg = "Value for jpath variable '" + variable + "' does not exist"; getLogger().warn(msg); } } m_cache.put(variable, value); } return value; }
@Override public void revertModifications(Object[] modifiedArguments, Object previousValue) { if (updatedArgumentIndex >= modifiedArguments.length) { throw new VariationRuntimeException("Failed to apply variaion \"" + getVariationID() + "\". Number of argument to modify is [" + updatedArgumentIndex + "] but arguments length is " + modifiedArguments.length); } JXPathContext context = JXPathContext.newContext(modifiedArguments[updatedArgumentIndex]); compiledExpression.setValue(context, previousValue); }
@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; }
public void findDriverWindow() { JXPathContext pathContext = JXPathContext.newContext(windows.values()); WindowInfo window = windows.peek(); if (window == null || !window.getWindowType().equals("normal")) { Integer windowId = (Integer) WINDOW_FINDER_EXPRESSION.getValue(pathContext); if (windowId != null) { setActiveWindowId(windowId); } else { throw new WindowNotFoundException("No window is available for driving"); } filterActiveWindow(); } }
@Override public void revertModifications(Object[] modifiedArguments, Object previousValue) { if (updatedArgumentIndex >= modifiedArguments.length) { throw new VariationRuntimeException("Failed to apply variaion \"" + getVariationID() + "\". Number of argument to modify is [" + updatedArgumentIndex + "] but arguments length is " + modifiedArguments.length); } JXPathContext context = JXPathContext.newContext(modifiedArguments[updatedArgumentIndex]); compiledExpression.setValue(context, previousValue); }
@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; }