org.exolab.adaptx.xpath.engine
Class AbstractPathComponent

java.lang.Object
  extended by org.exolab.adaptx.xpath.engine.AbstractPathComponent
All Implemented Interfaces:
MatchExpression, PathComponent, XPathExpression

public abstract class AbstractPathComponent
extends java.lang.Object
implements PathComponent

The base class for paths (now basically called paths)

Version:
$Revision: 4055 $ $Date: 2004-01-13 01:08:41 -0500 (Tue, 13 Jan 2004) $
Author:
Keith Visco

Field Summary
 
Fields inherited from interface org.exolab.adaptx.xpath.XPathExpression
BOOLEAN, ERROR, FILTER_EXPR, LOCATION_PATH, NODE_TEST, NUMBER, PATH_EXPR, PRIMARY, STEP, STRING, UNION_EXPR
 
Constructor Summary
AbstractPathComponent()
          Creates a new AbstractPathComponent
 
Method Summary
 void addPredicate(org.exolab.adaptx.xpath.engine.PredicateExprImpl predicate)
          Adds the given Expression to this PathComponent's predicate List.
 void addPredicate(XPathExpression expr)
          Adds the given Expression to this PathComponent's predicate List.
abstract  XPathResult evaluate(XPathContext context)
          Evaluates the expression and returns the XPath result.
 void evaluatePredicates(NodeSet nodes, XPathContext context)
          Evaluates the PredicateExpr of this PathComponent against the given Node.
abstract  double getDefaultPriority()
          Determines the priority of a PatternExpr as follows:
abstract  short getExprType()
          Returns the type of this expression.
 PredicateExpr getPredicate()
          Returns the PredicateExpr of this PathComponent
abstract  XPathExpression getSubExpression()
          Returns the sub-expression encapsulated by this PathComponent.
 boolean hasPredicates()
          Returns true if this FilterBase has predicates expressions.
abstract  boolean isFilterExpr()
          Returns true if this PathComponent is a FilterExpr.
abstract  boolean isLocationStep()
          Returns true if this PathComponent is a LocationStep.
abstract  boolean matches(XPathNode node, XPathContext context)
          Determines if the given node is matched by this MatchExpr with respect to the given context.
 java.lang.String toString()
          Returns the String representation of this PathComponent
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractPathComponent

public AbstractPathComponent()
Creates a new AbstractPathComponent

Method Detail

addPredicate

public void addPredicate(XPathExpression expr)
                  throws XPathException
Adds the given Expression to this PathComponent's predicate List.

Parameters:
expr - the Expr to add to the predicate list
Throws:
XPathException

addPredicate

public void addPredicate(org.exolab.adaptx.xpath.engine.PredicateExprImpl predicate)
                  throws XPathException
Adds the given Expression to this PathComponent's predicate List.

Parameters:
expr - the Expr to add to the predicate list
Throws:
XPathException

getDefaultPriority

public abstract double getDefaultPriority()
Determines the priority of a PatternExpr as follows:
  From the 19991116 XSLT 1.0 Recommendation:
  + If the pattern has the form of a QName preceded by a
    ChildOrAttributeAxisSpecifier or has the form 
    processing-instruction(Literal) then the priority is 0.
  + If the pattern has the form NCName:* preceded by a 
    ChildOrAttributeAxisSpecifier, then the priority is -0.25
  + Otherwise if the pattern consists of just a NodeTest 
    preceded by a ChildOrAttributeAxisSpecifier then the
    priority is -0.5
  + Otherwise the priority is 0.5
 

Specified by:
getDefaultPriority in interface PathComponent
Returns:
the priority for this PatternExpr

getSubExpression

public abstract XPathExpression getSubExpression()
Returns the sub-expression encapsulated by this PathComponent. the sub-expression will either be a PrimaryExpr if this PathComponent is a FilterExpr, or a NodeExpression if this Pathcomponent is a LocationStep. This method may return null if no such sub-expression exists for the PathComponent.

Specified by:
getSubExpression in interface PathComponent
Returns:
the sub-expression encapsulated by this PathComponent.

getExprType

public abstract short getExprType()
Description copied from interface: XPathExpression
Returns the type of this expression.

Specified by:
getExprType in interface XPathExpression
Returns:
The type of this expression

evaluate

public abstract XPathResult evaluate(XPathContext context)
                              throws XPathException
Evaluates the expression and returns the XPath result.

Specified by:
evaluate in interface XPathExpression
Parameters:
context - The XPathContext to use during evaluation.
Returns:
The XPathResult (not null).
Throws:
XPathException - if an error occured while evaluating this expression.

getPredicate

public PredicateExpr getPredicate()
Returns the PredicateExpr of this PathComponent

Specified by:
getPredicate in interface PathComponent
Returns:
the PredicateExpr of this PathComponent

hasPredicates

public boolean hasPredicates()
Returns true if this FilterBase has predicates expressions.

Specified by:
hasPredicates in interface PathComponent
Returns:
true if this FilterBase has predicates expressions.

evaluatePredicates

public void evaluatePredicates(NodeSet nodes,
                               XPathContext context)
                        throws XPathException
Evaluates the PredicateExpr of this PathComponent against the given Node.

Specified by:
evaluatePredicates in interface PathComponent
Parameters:
nodes - the current NodeSet
contextInfo - provides a way to retrieve additional context information needed to evaluate some expressions
Throws:
XPathException

isFilterExpr

public abstract boolean isFilterExpr()
Returns true if this PathComponent is a FilterExpr. Note that if this method returns true, then a call to #isLocationStep must return false.

Specified by:
isFilterExpr in interface PathComponent
Returns:
true if this PathComponent is a FilterExpr
See Also:
isLocationStep

isLocationStep

public abstract boolean isLocationStep()
Returns true if this PathComponent is a LocationStep. Note that if this method returns true, then a call to #isFilterExpr must return false.

Specified by:
isLocationStep in interface PathComponent
Returns:
true if this PathComponent is a LocationStep
See Also:
isFilterExpr

matches

public abstract boolean matches(XPathNode node,
                                XPathContext context)
                         throws XPathException
Determines if the given node is matched by this MatchExpr with respect to the given context.

Specified by:
matches in interface MatchExpression
Parameters:
node - the node to determine a match for
context - the XPathContext
Returns:
true if the given node is matched by this MatchExpr
Throws:
XPathException - when an error occurs during evaluation

toString

public java.lang.String toString()
Returns the String representation of this PathComponent

Specified by:
toString in interface XPathExpression
Overrides:
toString in class java.lang.Object
Returns:
the String representation of this PathComponent