|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.commons.jxpath.ri.compiler.Expression org.apache.commons.jxpath.ri.compiler.Path
Nested Class Summary |
Nested classes inherited from class org.apache.commons.jxpath.ri.compiler.Expression |
Expression.PointerIterator, Expression.ValueIterator |
Field Summary | |
private boolean |
basic
|
private boolean |
basicKnown
|
private Step[] |
steps
|
Fields inherited from class org.apache.commons.jxpath.ri.compiler.Expression |
NOT_A_NUMBER, ONE, ZERO |
Constructor Summary | |
Path(Step[] steps)
|
Method Summary | |
protected boolean |
areBasicPredicates(Expression[] predicates)
|
private EvalContext |
buildContextChain(EvalContext context,
int stepCount,
boolean createInitialContext)
|
boolean |
computeContextDependent()
Implemented by subclasses and result is cached by isContextDependent() |
protected EvalContext |
createContextForStep(EvalContext context,
int axis,
NodeTest nodeTest)
Different axes are serviced by different contexts. |
protected EvalContext |
evalSteps(EvalContext context)
Given a root context, walks a path therefrom and builds a context that contains all nodes matching the path. |
protected Pointer |
getSingleNodePointerForSteps(EvalContext context)
Given a root context, walks a path therefrom and finds the pointer to the first element matching the path. |
Step[] |
getSteps()
|
boolean |
isSimplePath()
Recognized paths formatted as foo/bar[3]/baz[@name = 'biz']
. |
protected boolean |
isSimpleStep(Step step)
A Step is "simple" if it takes one of these forms: ".", "/foo", "@bar", "/foo[3]". |
private Pointer |
searchForPath(EvalContext context)
The idea here is to return a NullPointer rather than null if that's at all possible. |
Methods inherited from class org.apache.commons.jxpath.ri.compiler.Expression |
compute, computeValue, isContextDependent, iterate, iteratePointers |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private Step[] steps
private boolean basicKnown
private boolean basic
Constructor Detail |
public Path(Step[] steps)
Method Detail |
public Step[] getSteps()
public boolean computeContextDependent()
Expression
computeContextDependent
in class Expression
public boolean isSimplePath()
foo/bar[3]/baz[@name = 'biz']
. The evaluation of such "simple" paths is optimized and
streamlined.
protected boolean isSimpleStep(Step step)
protected boolean areBasicPredicates(Expression[] predicates)
protected Pointer getSingleNodePointerForSteps(EvalContext context)
private Pointer searchForPath(EvalContext context)
However, a path like "//key" would still produce null, because we have no way of knowing where "key" would be if it existed.
To accomplish this, we first try the path itself. If it does not find anything, we chop off last step of the path, as long as it is a simple one like child:: or attribute:: and try to evaluate the truncated path. If it finds exactly one node - create a NullPointer and return. If it fails, chop off another step and repeat. If it finds more than one location - return null.
protected EvalContext evalSteps(EvalContext context)
private EvalContext buildContextChain(EvalContext context, int stepCount, boolean createInitialContext)
protected EvalContext createContextForStep(EvalContext context, int axis, NodeTest nodeTest)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |