Class ThrowExpression
- java.lang.Object
-
- org.jboss.byteman.rule.RuleElement
-
- org.jboss.byteman.rule.expression.Expression
-
- org.jboss.byteman.rule.expression.ThrowExpression
-
public class ThrowExpression extends Expression
Expression which implements a throw from a rule action but only where the thrown exception is declared by the trigger method or is a runtime exception which does nto need ot be declared
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classThrowExpression.ClassIteratorclassThrowExpression.InterfaceIteratorclassThrowExpression.SuperIterator
-
Constructor Summary
Constructors Constructor Description ThrowExpression(Rule rule, ParseNode token, List<Expression> arguments)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbind()verify that variables mentioned in this expression are actually available in the supplied bindings list and infer/validate the type of this expression or its subexpressions where possiblevoidcompile(org.objectweb.asm.MethodVisitor mv, CompileContext compileContext)Class<?>[]createParamTypes(String descriptor, ClassLoader loader)ClassgetCandidateArgClass(List<Constructor> candidates, int argIdx)Objectinterpret(HelperAdapter helper)evaluate the expression by interpreting the expression treeList<Constructor>pruneCandidates(List<Constructor> candidates, int argIdx, Class argClazz)TypetypeCheck(Type expected)ensure that all type references in the expression and its component expressions can be resolved, that the type of the expression is well-defined and that it is compatible with the type expected in the context in which it occurs.voidwriteTo(StringWriter stringWriter)-
Methods inherited from class org.jboss.byteman.rule.expression.Expression
getPos, getType
-
Methods inherited from class org.jboss.byteman.rule.RuleElement
getBindings, getTypeGroup, rebox, toString
-
-
-
-
Constructor Detail
-
ThrowExpression
public ThrowExpression(Rule rule, ParseNode token, List<Expression> arguments)
-
-
Method Detail
-
bind
public void bind() throws TypeExceptionverify that variables mentioned in this expression are actually available in the supplied bindings list and infer/validate the type of this expression or its subexpressions where possible- Specified by:
bindin classExpression- Throws:
TypeException- if any variable is missing or has the wrong type
-
typeCheck
public Type typeCheck(Type expected) throws TypeException
ensure that all type references in the expression and its component expressions can be resolved, that the type of the expression is well-defined and that it is compatible with the type expected in the context in which it occurs.- Specified by:
typeCheckin classExpression- Parameters:
expected- the type expected for the expression in the contxt in which it occurs. this may be void but shoudl not be undefined at the point where type checking is performed.- Returns:
- the expression type
- Throws:
TypeException- if type checking fails
-
getCandidateArgClass
public Class getCandidateArgClass(List<Constructor> candidates, int argIdx)
-
pruneCandidates
public List<Constructor> pruneCandidates(List<Constructor> candidates, int argIdx, Class argClazz)
-
interpret
public Object interpret(HelperAdapter helper) throws ExecuteException
evaluate the expression by interpreting the expression tree- Specified by:
interpretin classExpression- Parameters:
helper- an execution context associated with the rule whcih contains a map of current bindings for rule variables and another map of their declared types both of which are indexed by varoable name. This includes entries for the helper (name "-1"), the recipient if the trigger method is not static (name "0") and the trigger method arguments (names "1", ...)- Returns:
- the result of evaluation as an Object
- Throws:
ExecuteException- if an error occurs during execution
-
compile
public void compile(org.objectweb.asm.MethodVisitor mv, CompileContext compileContext) throws CompileException- Specified by:
compilein classRuleElement- Throws:
CompileException
-
writeTo
public void writeTo(StringWriter stringWriter)
- Specified by:
writeToin classExpression
-
createParamTypes
public Class<?>[] createParamTypes(String descriptor, ClassLoader loader) throws TypeException
- Throws:
TypeException
-
-