Package jadex.javaparser.javaccimpl
Class ReflectNode
- java.lang.Object
-
- jadex.javaparser.javaccimpl.SimpleNode
-
- jadex.javaparser.javaccimpl.ExpressionNode
-
- jadex.javaparser.javaccimpl.ReflectNode
-
- All Implemented Interfaces:
IParsedExpression
,Node
,java.io.Serializable
public class ReflectNode extends ExpressionNode
A node for a constructor or method invocation or field access.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.reflect.Method
accessor
The field accessor method (for static and nonstatic fields).protected java.lang.Object[]
args
The argument values (for constructors and methods).protected java.lang.Class[]
argtypes
The argument types (for constructors and methods).protected java.lang.Class
clazz
The clazz.static int
CONSTRUCTOR
The constructor type.protected java.lang.reflect.Constructor[]
constructors
The possible constructors (for constructor nodes).protected java.lang.reflect.Field
field
The field (for static and nonstatic fields).static int
FIELD
The field type.static int
METHOD
The method type.protected java.lang.reflect.Method[]
methods
The possible methods (for static and nonstatic methods).protected boolean
reloadable
Flag indicating that this node is a candidate dynamic class reloading (currently only supported for plan constructors).protected java.lang.Class
reloadedclass
The dynamically reloaded class (currently only for constructor nodes).static int
STATIC_FIELD
The static field type.static int
STATIC_METHOD
The static method type.protected int
type
The reflect node type.-
Fields inherited from class jadex.javaparser.javaccimpl.ExpressionNode
constant, constant_value, expressiontext, imports, static_type, text
-
Fields inherited from class jadex.javaparser.javaccimpl.SimpleNode
children, id, parent
-
-
Constructor Summary
Constructors Constructor Description ReflectNode(jadex.javaparser.javaccimpl.ParserImpl p, int id)
Create an expression node.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Object
accessField(java.lang.Object ref, java.lang.Class clazz, IValueFetcher fetcher)
Access a field.boolean
equals(java.lang.Object o)
Test if two nodes are equal.protected java.lang.reflect.Constructor[]
findConstructors(java.lang.Class clazz, java.lang.Class[] argtypes)
Find all matching constructors of a given class.protected java.lang.reflect.Method[]
findMethods(java.lang.Class clazz, java.lang.Class[] argtypes)
Find all matching methods of a given class.protected java.lang.reflect.Method
getMethodForMethod(java.lang.reflect.Method method)
Find method declared in public class for a given method.int
getType()
Get the constructor type.java.lang.Object
getValue(IValueFetcher fetcher)
Evaluate the expression in the given state with respect to given parameters.int
hashCode()
Get the hash code for the node.protected java.lang.Object
invokeConstructor(java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args)
Find and invoke a constructor.protected java.lang.Object
invokeMethod(java.lang.Object ref, java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args)
Find and invoke a method.void
precompile()
Precompute the set of matching constructors if possible.void
setType(int type)
Set the constructor type.java.lang.String
toPlainString()
Create a string representation of this node and its subnodes.-
Methods inherited from class jadex.javaparser.javaccimpl.ExpressionNode
appendText, getConstantValue, getExpressionText, getParameters, getStaticType, getText, getUnboundParameterNodes, isConstant, precompileTree, setConstant, setConstantValue, setExpressionText, setStaticType, setText, subnodeToString, throwEvaluationException, throwParseException, toString, toString
-
Methods inherited from class jadex.javaparser.javaccimpl.SimpleNode
dump, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent
-
-
-
-
Field Detail
-
CONSTRUCTOR
public static final int CONSTRUCTOR
The constructor type.- See Also:
- Constant Field Values
-
STATIC_METHOD
public static final int STATIC_METHOD
The static method type.- See Also:
- Constant Field Values
-
STATIC_FIELD
public static final int STATIC_FIELD
The static field type.- See Also:
- Constant Field Values
-
METHOD
public static final int METHOD
The method type.- See Also:
- Constant Field Values
-
FIELD
public static final int FIELD
The field type.- See Also:
- Constant Field Values
-
type
protected int type
The reflect node type.
-
clazz
protected java.lang.Class clazz
The clazz.
-
argtypes
protected transient java.lang.Class[] argtypes
The argument types (for constructors and methods).
-
args
protected transient java.lang.Object[] args
The argument values (for constructors and methods).
-
constructors
protected transient java.lang.reflect.Constructor[] constructors
The possible constructors (for constructor nodes).
-
reloadedclass
protected transient java.lang.Class reloadedclass
The dynamically reloaded class (currently only for constructor nodes).
-
methods
protected transient java.lang.reflect.Method[] methods
The possible methods (for static and nonstatic methods).
-
accessor
protected transient java.lang.reflect.Method accessor
The field accessor method (for static and nonstatic fields).
-
field
protected transient java.lang.reflect.Field field
The field (for static and nonstatic fields).
-
reloadable
protected boolean reloadable
Flag indicating that this node is a candidate dynamic class reloading (currently only supported for plan constructors).
-
-
Method Detail
-
setType
public void setType(int type)
Set the constructor type.- Parameters:
type
- The constrcutor type.
-
getType
public int getType()
Get the constructor type.- Returns:
- The constructor type.
-
precompile
public void precompile()
Precompute the set of matching constructors if possible.- Overrides:
precompile
in classExpressionNode
-
getValue
public java.lang.Object getValue(IValueFetcher fetcher)
Evaluate the expression in the given state with respect to given parameters.- Specified by:
getValue
in interfaceIParsedExpression
- Specified by:
getValue
in classExpressionNode
- Parameters:
params
- The parameters (string, value pairs), if any.- Returns:
- The value of the term.
-
toPlainString
public java.lang.String toPlainString()
Create a string representation of this node and its subnodes.- Specified by:
toPlainString
in interfaceNode
- Overrides:
toPlainString
in classExpressionNode
- Returns:
- A string representation of this node.
-
findConstructors
protected java.lang.reflect.Constructor[] findConstructors(java.lang.Class clazz, java.lang.Class[] argtypes)
Find all matching constructors of a given class.- Parameters:
clazz
- The class.argtypes
- The argument types.- Returns:
- The matched constructors.
-
findMethods
protected java.lang.reflect.Method[] findMethods(java.lang.Class clazz, java.lang.Class[] argtypes)
Find all matching methods of a given class.- Parameters:
clazz
- The class.argtypes
- The argument types.- Returns:
- The matched methods.
-
invokeConstructor
protected java.lang.Object invokeConstructor(java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args) throws java.lang.Exception
Find and invoke a constructor.- Parameters:
clazz
- The class to instantiate.argtypes
- The actual argument types.args
- The actual argument values.- Returns:
- The instantiated object.
- Throws:
java.lang.Exception
-
invokeMethod
protected java.lang.Object invokeMethod(java.lang.Object ref, java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args) throws java.lang.Exception
Find and invoke a method.- Parameters:
ref
- The object on which to invoke (may be null for static methods).clazz
- The class to instantiate.argtypes
- The actual argument types.args
- The actual argument values.- Returns:
- The return value.
- Throws:
java.lang.Exception
-
accessField
protected java.lang.Object accessField(java.lang.Object ref, java.lang.Class clazz, IValueFetcher fetcher) throws java.lang.IllegalArgumentException, java.lang.IllegalAccessException, java.lang.NoSuchFieldException
Access a field.- Throws:
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.NoSuchFieldException
-
getMethodForMethod
protected java.lang.reflect.Method getMethodForMethod(java.lang.reflect.Method method)
Find method declared in public class for a given method.
-
equals
public boolean equals(java.lang.Object o)
Test if two nodes are equal.- Overrides:
equals
in classExpressionNode
-
hashCode
public int hashCode()
Get the hash code for the node.- Overrides:
hashCode
in classExpressionNode
-
-