Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.jxpath.ri.compiler
Class Path

    java.lang.Object
      org.apache.commons.jxpath.ri.compiler.Expression
          org.apache.commons.jxpath.ri.compiler.Path

Direct Known Subclasses:
  ExpressionPath, LocationPath

    public abstract class Path

extends Expression

Version:
  $Revision: 681111 $ $Date: 2008-07-30 11:30:29 -0500 (Wed, 30 Jul 2008) $
Author:
  Dmitri Plotnikov

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.commons.jxpath.ri.compiler.Expression
`Expression.PointerIterator, Expression.ValueIterator`

Field Summary

Fields inherited from class org.apache.commons.jxpath.ri.compiler.Expression
`NOT_A_NUMBER, ONE, ZERO`

Constructor Summary
`Path(Step[] steps)` Create a new Path.

Method Summary
`protected boolean` | `areBasicPredicates(Expression[] predicates)` Learn whether the elements of the specified array are "basic" predicates.
`protected EvalContext` | `buildContextChain(EvalContext context, int stepCount, boolean createInitialContext)` Build a context from a chain of contexts.
`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()` Get the steps.
`boolean` | `isSimplePath()` Recognizes 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]".
`protected 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`

Constructor Detail

### Path

    public Path(Step[] steps)

  Create a new Path.

  Parameters:
    `steps` - that compose the Path

Method Detail

### getSteps

    public Step[] getSteps()

  Get the steps.

  Returns:
    Step[]

### computeContextDependent

    public boolean computeContextDependent()

  Description copied from class: `Expression`
  Implemented by subclasses and result is cached by isContextDependent()

  Specified by:
    `computeContextDependent` in class `Expression`
  Returns:
    calculated context-dependentness as boolean

### isSimplePath

    public boolean isSimplePath()

  Recognizes paths formatted as `foo/bar[3]/baz[@name = 'biz']`. The evaluation of such "simple" paths is optimized and streamlined.

  Returns:
    `true` if this path is simple

### isSimpleStep

    protected boolean isSimpleStep(Step step)

  A Step is "simple" if it takes one of these forms: ".", "/foo", "@bar", "/foo[3]". If there are predicates, they should be context independent for the step to still be considered simple.

  Parameters:
    `step` - the step to check
  Returns:
    boolean

### areBasicPredicates

    protected boolean areBasicPredicates(Expression[] predicates)

  Learn whether the elements of the specified array are "basic" predicates.

  Parameters:
    `predicates` - the Expression[] to check
  Returns:
    boolean

### getSingleNodePointerForSteps

    protected Pointer getSingleNodePointerForSteps(EvalContext context)

  Given a root context, walks a path therefrom and finds the pointer to the first element matching the path.

  Parameters:
    `context` - evaluation context
  Returns:
    Pointer

### searchForPath

    protected Pointer searchForPath(EvalContext context)

  The idea here is to return a NullPointer rather than null if that's at all possible. Take for example this path: "//map/key". Let's say, "map" is an existing node, but "key" is not there. We will create a NullPointer that can be used to set/create the "key" property.

  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.

  Parameters:
    `context` - evaluation context
  Returns:
    Pointer

### evalSteps

    protected EvalContext evalSteps(EvalContext context)

  Given a root context, walks a path therefrom and builds a context that contains all nodes matching the path.

  Parameters:
    `context` - evaluation context
  Returns:
    EvaluationContext

### buildContextChain

    protected EvalContext buildContextChain(EvalContext context,
                                            int stepCount,
                                            boolean createInitialContext)

  Build a context from a chain of contexts.

  Parameters:
    `context` - evaluation context
    `stepCount` - number of steps to descend
    `createInitialContext` - whether to create the initial context
  Returns:
    created context

### createContextForStep

    protected EvalContext createContextForStep(EvalContext context,
                                               int axis,
                                               NodeTest nodeTest)

  Different axes are serviced by different contexts. This method allocates the right context for the supplied step.

  Parameters:
    `context` - evaluation context
    `axis` - code
    `nodeTest` - node test
  Returns:
    EvalContext

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2008 The Apache Software Foundation. All Rights Reserved.