Package ognl

Class SimpleNode

java.lang.Object
ognl.SimpleNode
All Implemented Interfaces:
Serializable, JavaSource, Node
Direct Known Subclasses:
ASTAssign, ASTChain, ASTConst, ASTCtor, ASTEval, ASTIn, ASTInstanceof, ASTKeyValue, ASTList, ASTMap, ASTMethod, ASTNotIn, ASTProject, ASTProperty, ASTSelect, ASTSelectFirst, ASTSelectLast, ASTSequence, ASTStaticField, ASTStaticMethod, ASTVarRef, ExpressionNode

public abstract class SimpleNode extends Object implements Node, Serializable
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • parent

      protected Node parent
    • children

      protected Node[] children
    • id

      protected int id
    • parser

      protected OgnlParser parser
    • constantValueCalculated

      private boolean constantValueCalculated
    • hasConstantValue

      private volatile boolean hasConstantValue
    • constantValue

      private Object constantValue
    • expressionAccessor

      private ExpressionAccessor expressionAccessor
  • Constructor Details

    • SimpleNode

      public SimpleNode(int i)
    • SimpleNode

      public SimpleNode(OgnlParser p, int i)
  • Method Details

    • jjtOpen

      public void jjtOpen()
      Description copied from interface: Node
      This method is called after the node has been made the current node. It indicates that child nodes can now be added to it.
      Specified by:
      jjtOpen in interface Node
    • jjtClose

      public void jjtClose()
      Description copied from interface: Node
      This method is called after all the child nodes have been added.
      Specified by:
      jjtClose in interface Node
    • jjtSetParent

      public void jjtSetParent(Node n)
      Description copied from interface: Node
      This pair of methods are used to inform the node of its parent.
      Specified by:
      jjtSetParent in interface Node
      Parameters:
      n - the Node to make the parent of this node.
    • jjtGetParent

      public Node jjtGetParent()
      Specified by:
      jjtGetParent in interface Node
    • jjtAddChild

      public void jjtAddChild(Node n, int i)
      Description copied from interface: Node
      This method tells the node to add its argument to the node's list of children.
      Specified by:
      jjtAddChild in interface Node
      Parameters:
      n - the Node to add as a child of this node.
      i - the position at which to add the child node.
    • jjtGetChild

      public Node jjtGetChild(int i)
      Description copied from interface: Node
      This method returns a child node. The children are numbered from zero, left to right.
      Specified by:
      jjtGetChild in interface Node
      Parameters:
      i - the position from which to get the child node.
      Returns:
      the child Node at position i.
    • jjtGetNumChildren

      public int jjtGetNumChildren()
      Description copied from interface: Node
      Return the number of children the node has.
      Specified by:
      jjtGetNumChildren in interface Node
      Returns:
      the number of children for this node.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public String toString(String prefix)
    • toGetSourceString

      public String toGetSourceString(OgnlContext context, Object target)
      Description copied from interface: JavaSource
      Expected to return a java source representation of itself such that it could be turned into a literal java expression to be compiled and executed for ExpressionAccessor.get(OgnlContext, Object) calls.
      Specified by:
      toGetSourceString in interface JavaSource
      Parameters:
      context - the OgnlContext within which to perform the operation.
      target - the Object from which to retrieve the get source string.
      Returns:
      Literal java string representation of an object get.
    • toSetSourceString

      public String toSetSourceString(OgnlContext context, Object target)
      Description copied from interface: JavaSource
      Expected to return a java source representation of itself such that it could be turned into a literal java expression to be compiled and executed for ExpressionAccessor.get(OgnlContext, Object) calls.
      Specified by:
      toSetSourceString in interface JavaSource
      Parameters:
      context - the OgnlContext within which to perform the operation.
      target - the Object from which to retrieve the set source string.
      Returns:
      Literal java string representation of an object set.
    • dump

      public void dump(PrintWriter writer, String prefix)
    • getIndexInParent

      public int getIndexInParent()
    • getNextSibling

      public Node getNextSibling()
    • evaluateGetValueBody

      protected Object evaluateGetValueBody(OgnlContext context, Object source) throws OgnlException
      Throws:
      OgnlException
    • evaluateSetValueBody

      protected void evaluateSetValueBody(OgnlContext context, Object target, Object value) throws OgnlException
      Throws:
      OgnlException
    • getValue

      public final Object getValue(OgnlContext context, Object source) throws OgnlException
      Description copied from interface: Node
      Extracts the value from the given source object that is appropriate for this node within the given context.
      Specified by:
      getValue in interface Node
      Parameters:
      context - the OgnlContext within which to perform the operation.
      source - the Object from which to get the value.
      Returns:
      the value from the source (as appropriate within the provided context).
      Throws:
      OgnlException - if the value get fails.
    • getValueBody

      protected abstract Object getValueBody(OgnlContext context, Object source) throws OgnlException
      Subclasses implement this method to do the actual work of extracting the appropriate value from the source object.
      Parameters:
      context - the OgnlContext within which to perform the operation.
      source - the Object from which to get the value body.
      Returns:
      the value body from the source (as appropriate within the provided context).
      Throws:
      OgnlException - if the value body get fails.
    • setValue

      public final void setValue(OgnlContext context, Object target, Object value) throws OgnlException
      Description copied from interface: Node
      Sets the given value in the given target as appropriate for this node within the given context.
      Specified by:
      setValue in interface Node
      Parameters:
      context - the OgnlContext within which to perform the operation.
      target - the Object upon which to set the value.
      value - the Object representing the value to apply to the target.
      Throws:
      OgnlException - if the value set fails.
    • setValueBody

      protected void setValueBody(OgnlContext context, Object target, Object value) throws OgnlException
      Subclasses implement this method to do the actual work of setting the appropriate value in the target object. The default implementation throws an InappropriateExpressionException, meaning that it cannot be a set expression.
      Parameters:
      context - the OgnlContext within which to perform the operation.
      target - the Object upon which to set the value body.
      value - the Object representing the value body to apply to the target.
      Throws:
      OgnlException - if the value body set fails.
    • isNodeConstant

      public boolean isNodeConstant(OgnlContext context) throws OgnlException
      Returns true iff this node is constant without respect to the children.
      Parameters:
      context - the OgnlContext within which to perform the operation.
      Returns:
      true if this node is a constant, false otherwise.
      Throws:
      OgnlException - if the check fails.
    • isConstant

      public boolean isConstant(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isNodeSimpleProperty

      public boolean isNodeSimpleProperty(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isSimpleProperty

      public boolean isSimpleProperty(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isSimpleNavigationChain

      public boolean isSimpleNavigationChain(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isEvalChain

      public boolean isEvalChain(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isSequence

      public boolean isSequence(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isOperation

      public boolean isOperation(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isChain

      public boolean isChain(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • isSimpleMethod

      public boolean isSimpleMethod(OgnlContext context) throws OgnlException
      Throws:
      OgnlException
    • lastChild

      protected boolean lastChild(OgnlContext context)
    • flattenTree

      protected void flattenTree()
      This method may be called from subclasses' jjtClose methods. It flattens the tree under this node by eliminating any children that are of the same class as this node and copying their children to this node.
    • getAccessor

      public ExpressionAccessor getAccessor()
      Description copied from interface: Node
      Gets the compiled bytecode enhanced expression accessor for getting/setting values.
      Specified by:
      getAccessor in interface Node
      Returns:
      The accessor for this node, or null if none has been compiled for it.
    • setAccessor

      public void setAccessor(ExpressionAccessor accessor)
      Description copied from interface: Node
      Sets a new compiled accessor for this node expression.
      Specified by:
      setAccessor in interface Node
      Parameters:
      accessor - The compiled representation of this node.