# Class ASTPath

java.lang.Object
org.apache.cayenne.exp.Expression
org.apache.cayenne.exp.parser.SimpleNode
org.apache.cayenne.exp.parser.ASTPath

All Implemented Interfaces:
  `Serializable, Node, XMLSerializable`

Direct Known Subclasses:
  `ASTDbPath, ASTObjPath`

public abstract class ASTPath extends SimpleNode
Generic path expression.

Since:
  1.1
See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected CayennePath`
  `path`
  `protected Map<String,String>`
  `pathAliases`

  ### Fields inherited from class SimpleNode

  `children, id, parent`

  ### Fields inherited from class Expression

  `ADD, ALL, AND, ANY, ASTERISK, BETWEEN, BITWISE_AND, BITWISE_LEFT_SHIFT, BITWISE_NOT, BITWISE_OR, BITWISE_RIGHT_SHIFT, BITWISE_XOR, CASE_WHEN, CUSTOM_OP, DB_PATH, DBID_PATH, DIVIDE, ELSE, ENCLOSING_OBJECT, EQUAL_TO, EXISTS, FALSE, FULL_OBJECT, FUNCTION_CALL, GREATER_THAN, GREATER_THAN_EQUAL_TO, IN, LESS_THAN, LESS_THAN_EQUAL_TO, LIKE, LIKE_IGNORE_CASE, LIST, MULTIPLY, NEGATIVE, NOT, NOT_BETWEEN, NOT_EQUAL_TO, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_LIKE_IGNORE_CASE, OBJ_PATH, OR, PRUNED_NODE, SCALAR, SUBQUERY, SUBTRACT, THEN, TRUE, type, WHEN`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected CayenneMapEntry`
  `evaluateEntityNode(Entity<?,?,?> entity)`
  Helper method to evaluate path expression with Cayenne Entity.
  `Expression`
  `exists()`
  Returns expression that will be dynamically resolved to proper subqueries based on a relationships used (if no relationships are present in the original expression no subqueries will be used).
  `protected String`
  `getExpressionOperator(int index)`
  `Object`
  `getOperand(int index)`
  Returns a value of operand at `index`.
  `int`
  `getOperandCount()`
  Returns a count of operands of this expression.
  `CayennePath`
  `getPath()`
  `Map<String,String>`
  `getPathAliases()`
  Always returns empty map.
  `int`
  `hashCode()`
  `Expression`
  `notExists()`
  Returns expression that will be dynamically resolved to proper subqueries based on a relationships used (if no relationships are present in the original expression no subqueries will be used).
  `void`
  `setOperand(int index, Object value)`
  Sets a value of operand at `index`.
  `protected void`
  `setPath(Object path)`
  `protected void`
  `setPath(CayennePath path)`
  `void`
  `setPathAliases(Map<String,String> pathAliases)`

  ### Methods inherited from class SimpleNode

  `appendAsEJBQL, appendAsEJBQL, appendAsEscapedString, appendAsString, appendChildrenAsEJBQL, appendScalarAsString, connectChildren, encodeScalarAsEJBQL, evaluate, evaluateChild, evaluateNode, expName, flattenTree, getEJBQLExpressionOperator, isValidParent, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, notExp, numericToString, pruneNodeForPrunedChild, unwrapChild, wrapChild`

  ### Methods inherited from class Expression

  `andExp, andExp, deepCopy, encodeAsXML, equals, filter, filterObjects, first, getType, joinExp, joinExp, match, orExp, orExp, params, params, paramsArray, setType, shallowCopy, toEJBQL, toEJBQL, toString, transform, transformExpression, traverse, traverse`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### path

    protected CayennePath path

  - ### pathAliases

    protected Map<String,String> pathAliases

- ## Method Details

  - ### getOperandCount

    public int getOperandCount()
    Description copied from class: `Expression`
    Returns a count of operands of this expression. In real life there are unary (count == 1), binary (count == 2) and ternary (count == 3) expressions.
    Overrides:
      `getOperandCount` in class `SimpleNode`

  - ### getOperand

    public Object getOperand(int index)
    Description copied from class: `Expression`
    Returns a value of operand at `index`. Operand indexing starts at 0.
    Overrides:
      `getOperand` in class `SimpleNode`

  - ### setOperand

    public void setOperand(int index, Object value)
    Description copied from class: `Expression`
    Sets a value of operand at `index`. Operand indexing starts at 0.
    Overrides:
      `setOperand` in class `SimpleNode`

  - ### setPath

    protected void setPath(CayennePath path)

  - ### setPath

    protected void setPath(Object path)

  - ### getPath

    public CayennePath getPath()

  - ### getPathAliases

    public Map<String,String> getPathAliases()
    Description copied from class: `SimpleNode`
    Always returns empty map.
    Overrides:
      `getPathAliases` in class `SimpleNode`
    Since:
      3.0

  - ### setPathAliases

    public void setPathAliases(Map<String,String> pathAliases)
    Since:
      3.0

  - ### evaluateEntityNode

    protected CayenneMapEntry evaluateEntityNode(Entity<?,?,?> entity)
    Helper method to evaluate path expression with Cayenne Entity.

  - ### getExpressionOperator

    protected String getExpressionOperator(int index)
    Specified by:
      `getExpressionOperator` in class `SimpleNode`

  - ### exists

    public Expression exists()
    Description copied from class: `Expression`
    Returns expression that will be dynamically resolved to proper subqueries based on a relationships used (if no relationships are present in the original expression no subqueries will be used).
    Overrides:
      `exists` in class `SimpleNode`
    Returns:
      exists expression
    See Also:
      - `ExpressionFactory.exists(Expression)`

  - ### notExists

    public Expression notExists()
    Description copied from class: `Expression`
    Returns expression that will be dynamically resolved to proper subqueries based on a relationships used (if no relationships are present in the original expression no subqueries will be used).
    Overrides:
      `notExists` in class `SimpleNode`
    Returns:
      not exists expression
    See Also:
      - `ExpressionFactory.notExists(Expression)`

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Expression`