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.MethodaccessorThe field accessor method (for static and nonstatic fields).protected java.lang.Object[]argsThe argument values (for constructors and methods).protected java.lang.Class[]argtypesThe argument types (for constructors and methods).protected java.lang.ClassclazzThe clazz.static intCONSTRUCTORThe constructor type.protected java.lang.reflect.Constructor[]constructorsThe possible constructors (for constructor nodes).protected java.lang.reflect.FieldfieldThe field (for static and nonstatic fields).static intFIELDThe field type.static intMETHODThe method type.protected java.lang.reflect.Method[]methodsThe possible methods (for static and nonstatic methods).protected booleanreloadableFlag indicating that this node is a candidate dynamic class reloading (currently only supported for plan constructors).protected java.lang.ClassreloadedclassThe dynamically reloaded class (currently only for constructor nodes).static intSTATIC_FIELDThe static field type.static intSTATIC_METHODThe static method type.protected inttypeThe 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.ObjectaccessField(java.lang.Object ref, java.lang.Class clazz, IValueFetcher fetcher)Access a field.booleanequals(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.MethodgetMethodForMethod(java.lang.reflect.Method method)Find method declared in public class for a given method.intgetType()Get the constructor type.java.lang.ObjectgetValue(IValueFetcher fetcher)Evaluate the expression in the given state with respect to given parameters.inthashCode()Get the hash code for the node.protected java.lang.ObjectinvokeConstructor(java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args)Find and invoke a constructor.protected java.lang.ObjectinvokeMethod(java.lang.Object ref, java.lang.Class clazz, java.lang.Class[] argtypes, java.lang.Object[] args)Find and invoke a method.voidprecompile()Precompute the set of matching constructors if possible.voidsetType(int type)Set the constructor type.java.lang.StringtoPlainString()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:
precompilein classExpressionNode
-
getValue
public java.lang.Object getValue(IValueFetcher fetcher)
Evaluate the expression in the given state with respect to given parameters.- Specified by:
getValuein interfaceIParsedExpression- Specified by:
getValuein 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:
toPlainStringin interfaceNode- Overrides:
toPlainStringin 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.ExceptionFind 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.ExceptionFind 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.NoSuchFieldExceptionAccess a field.- Throws:
java.lang.IllegalAccessExceptionjava.lang.IllegalArgumentExceptionjava.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:
equalsin classExpressionNode
-
hashCode
public int hashCode()
Get the hash code for the node.- Overrides:
hashCodein classExpressionNode
-
-