Package ognl
Class SimpleNode
- java.lang.Object
-
- ognl.SimpleNode
-
- All Implemented Interfaces:
java.io.Serializable
,JavaSource
,Node
- Direct Known Subclasses:
ASTChain
,ASTConst
,ASTCtor
,ASTInstanceof
,ASTList
,ASTMethod
,ASTProperty
,ASTSequence
,ASTStaticField
,ASTStaticMethod
,ASTVarRef
,ExpressionNode
public abstract class SimpleNode extends java.lang.Object implements Node, java.io.Serializable
- Author:
- Luke Blanshard (blanshlu@netscape.net), Drew Davidson (drew@ognl.org)
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description SimpleNode(int i)
SimpleNode(OgnlParser p, int i)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
dump(java.io.PrintWriter writer, java.lang.String prefix)
protected java.lang.Object
evaluateGetValueBody(OgnlContext context, java.lang.Object source)
protected void
evaluateSetValueBody(OgnlContext context, java.lang.Object target, java.lang.Object value)
protected void
flattenTree()
This method may be called from subclasses' jjtClose methods.ExpressionAccessor
getAccessor()
Gets the compiled bytecode enhanced expression accessor for getting/setting values.int
getIndexInParent()
Node
getNextSibling()
java.lang.Object
getValue(OgnlContext context, java.lang.Object source)
Extracts the value from the given source object that is appropriate for this node within the given context.protected abstract java.lang.Object
getValueBody(OgnlContext context, java.lang.Object source)
Subclasses implement this method to do the actual work of extracting the appropriate value from the source object.boolean
isConstant(OgnlContext context)
boolean
isNodeConstant(OgnlContext context)
Returns true iff this node is constant without respect to the children.boolean
isNodeSimpleProperty(OgnlContext context)
boolean
isSimpleNavigationChain(OgnlContext context)
boolean
isSimpleProperty(OgnlContext context)
void
jjtAddChild(Node n, int i)
This method tells the node to add its argument to the node's list of children.void
jjtClose()
This method is called after all the child nodes have been added.Node
jjtGetChild(int i)
This method returns a child node.int
jjtGetNumChildren()
Return the number of children the node has.Node
jjtGetParent()
void
jjtOpen()
This method is called after the node has been made the current node.void
jjtSetParent(Node n)
This pair of methods are used to inform the node of its parent.protected boolean
lastChild(OgnlContext context)
void
setAccessor(ExpressionAccessor accessor)
Sets a new compiled accessor for this node expression.void
setValue(OgnlContext context, java.lang.Object target, java.lang.Object value)
Sets the given value in the given target as appropriate for this node within the given context.protected void
setValueBody(OgnlContext context, java.lang.Object target, java.lang.Object value)
Subclasses implement this method to do the actual work of setting the appropriate value in the target object.java.lang.String
toGetSourceString(OgnlContext context, java.lang.Object target)
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 forExpressionAccessor.get(OgnlContext, Object)
calls.java.lang.String
toSetSourceString(OgnlContext context, java.lang.Object target)
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 forExpressionAccessor.get(OgnlContext, Object)
calls.java.lang.String
toString()
java.lang.String
toString(java.lang.String prefix)
-
-
-
Field Detail
-
_parent
protected Node _parent
-
_children
protected Node[] _children
-
_id
protected int _id
-
_parser
protected OgnlParser _parser
-
-
Constructor Detail
-
SimpleNode
public SimpleNode(int i)
-
SimpleNode
public SimpleNode(OgnlParser p, int i)
-
-
Method Detail
-
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.
-
jjtClose
public void jjtClose()
Description copied from interface:Node
This method is called after all the child nodes have been added.
-
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 interfaceNode
-
jjtGetParent
public Node jjtGetParent()
- Specified by:
jjtGetParent
in interfaceNode
-
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 interfaceNode
-
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 interfaceNode
-
jjtGetNumChildren
public int jjtGetNumChildren()
Description copied from interface:Node
Return the number of children the node has.- Specified by:
jjtGetNumChildren
in interfaceNode
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
toString
public java.lang.String toString(java.lang.String prefix)
-
toGetSourceString
public java.lang.String toGetSourceString(OgnlContext context, java.lang.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 forExpressionAccessor.get(OgnlContext, Object)
calls.- Specified by:
toGetSourceString
in interfaceJavaSource
- Returns:
- Literal java string representation of an object get.
-
toSetSourceString
public java.lang.String toSetSourceString(OgnlContext context, java.lang.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 forExpressionAccessor.get(OgnlContext, Object)
calls.- Specified by:
toSetSourceString
in interfaceJavaSource
- Returns:
- Literal java string representation of an object get.
-
dump
public void dump(java.io.PrintWriter writer, java.lang.String prefix)
-
getIndexInParent
public int getIndexInParent()
-
getNextSibling
public Node getNextSibling()
-
evaluateGetValueBody
protected java.lang.Object evaluateGetValueBody(OgnlContext context, java.lang.Object source) throws OgnlException
- Throws:
OgnlException
-
evaluateSetValueBody
protected void evaluateSetValueBody(OgnlContext context, java.lang.Object target, java.lang.Object value) throws OgnlException
- Throws:
OgnlException
-
getValue
public final java.lang.Object getValue(OgnlContext context, java.lang.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 interfaceNode
- Throws:
OgnlException
-
getValueBody
protected abstract java.lang.Object getValueBody(OgnlContext context, java.lang.Object source) throws OgnlException
Subclasses implement this method to do the actual work of extracting the appropriate value from the source object.- Throws:
OgnlException
-
setValue
public final void setValue(OgnlContext context, java.lang.Object target, java.lang.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 interfaceNode
- Throws:
OgnlException
-
setValueBody
protected void setValueBody(OgnlContext context, java.lang.Object target, java.lang.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 anInappropriateExpressionException
, meaning that it cannot be a set expression.- Throws:
OgnlException
-
isNodeConstant
public boolean isNodeConstant(OgnlContext context) throws OgnlException
Returns true iff this node is constant without respect to the children.- Throws:
OgnlException
-
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
-
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 interfaceNode
- 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 interfaceNode
- Parameters:
accessor
- The compiled representation of this node.
-
-