Class SimpleNode

java.lang.Object
org.apache.commons.jexl3.parser.SimpleNode
All Implemented Interfaces:
Node
Direct Known Subclasses:
JexlNode

public class SimpleNode extends Object implements Node
A class originally generated by JJTree with the following JavaCCOptions: MULTI=true,NODE_USES_PARSER=true,VISITOR=true,TRACK_TOKENS=false,NODE_PREFIX=AST,NODE_EXTENDS=,NODE_FACTORY= Works around issue https://javacc.dev.java.net/issues/show_bug.cgi?id=227 As soon as this issue if fixed and the maven plugin uses the correct version of Javacc, this class can go away. The technical goal is to ensure every reference made in the parser was to a JexlNode; unfortunately, as in javacc 4.1, it still uses a SimpleNode reference in the generated ParserVisitor. Besides, there is no need to keep the parser around in the node. The functional goal is to a allow a volatile value in the node so it can serve as a last evaluation cache even in multi-threaded executions.
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • parent

      private JexlNode parent
      The parent node.
    • children

      private JexlNode[] children
      The array of children nodes.
    • id

      protected final int id
      The node type id.
    • value

      private transient volatile Object value
      Volatile value so it can be used as a last evaluation cache.
  • Constructor Details

    • SimpleNode

      public SimpleNode(int i)
      Creates a SimpleNode instance.
      Parameters:
      i - the node type identifier
    • SimpleNode

      @Deprecated public SimpleNode(Parser p, int i)
      Deprecated.
      Constructs a SimpleNode instance.
      Parameters:
      p - not used.
      i - the node type identifier
  • Method Details

    • childrenAccept

      public Object childrenAccept(ParserVisitor visitor, Object data)
      Accepts the visitor on all this node's children.
      Parameters:
      visitor - the visitor
      data - contextual data
      Returns:
      result of visit
    • dump

      public void dump(String prefix)
    • dumpOut

      protected void dumpOut(String str)
      Override to dump output somewhere.
      Parameters:
      str - the string to output
    • getId

      public int getId()
      Specified by:
      getId in interface Node
    • jjtAccept

      public Object jjtAccept(ParserVisitor visitor, Object data)
      Accepts the visitor.
      Specified by:
      jjtAccept in interface Node
      Parameters:
      visitor - the visitor
      data - contextual data
      Returns:
      result of visit
    • jjtAddChild

      public void jjtAddChild(Node n, int i)
      Adds a child node.
      Specified by:
      jjtAddChild in interface Node
      Parameters:
      n - the child node
      i - the child offset
    • 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
    • jjtGetChild

      public JexlNode jjtGetChild(int i)
      Gets a child of this node.
      Specified by:
      jjtGetChild in interface Node
      Parameters:
      i - the child offset
      Returns:
      the child node
    • jjtGetNumChildren

      public int jjtGetNumChildren()
      Gets this node number of children.
      Specified by:
      jjtGetNumChildren in interface Node
      Returns:
      the number of children
    • jjtGetParent

      public JexlNode jjtGetParent()
      Gets this node's parent.
      Specified by:
      jjtGetParent in interface Node
      Returns:
      the parent node
    • jjtGetValue

      public Object jjtGetValue()
      Gets this node value.
      Returns:
      value
    • 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
    • jjtSetChildren

      void jjtSetChildren(JexlNode[] jexlNodes)
    • jjtSetParent

      public void jjtSetParent(Node n)
      Sets this node's parent.
      Specified by:
      jjtSetParent in interface Node
      Parameters:
      n - the parent
    • jjtSetValue

      public void jjtSetValue(Object value)
      Sets this node value.
      Parameters:
      value - this node value.
    • toString

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

      public String toString(String prefix)