org.jboss.byteman.rule.expression
Class Expression
java.lang.Object
org.jboss.byteman.rule.RuleElement
org.jboss.byteman.rule.expression.Expression
- Direct Known Subclasses:
- AssignableExpression, BooleanLiteral, MethodExpression, NewExpression, NullLiteral, NumericLiteral, OperExpression, ReturnExpression, StringLiteral, ThrowExpression
public abstract class Expression
- extends RuleElement
abstract class representing an evaluable expression. this is used in all 3 elements of ECA rules:
as the value part of each of the event bindings in the binding list comprising an ECA rule event;
as the condition expression of an ECA rule condition;and as an element of the actions list in an
ECA rule action.
Method Summary |
abstract void |
bind()
verify that variables mentioned in this expression are actually available in the rule
bindings list |
java.lang.String |
getPos()
|
Type |
getType()
|
abstract java.lang.Object |
interpret(HelperAdapter helper)
evaluate the expression by interpreting the expression tree |
abstract Type |
typeCheck(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. |
abstract void |
writeTo(java.io.StringWriter stringWriter)
|
Methods inherited from class org.jboss.byteman.rule.RuleElement |
compile, compileBooleanConversion, compileBox, compileNumericConversion, compileObjectConversion, compilePrimitiveConversion, compileStringConversion, compileTypeConversion, compileUnbox, getBindings, getTypeGroup, toString |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
rule
protected Rule rule
type
protected Type type
charPos
protected int charPos
line
protected int line
token
protected ParseNode token
Expression
protected Expression(Rule rule,
Type type,
ParseNode token)
- Create a new expression.
- Parameters:
type
- the current type for this expression.
bind
public abstract void bind()
throws TypeException
- verify that variables mentioned in this expression are actually available in the rule
bindings list
- Throws:
TypeException
getPos
public java.lang.String getPos()
getType
public Type getType()
typeCheck
public abstract 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:
typeCheck
in class RuleElement
- Parameters:
expected
- the type expected for the expression in the contxet in which it occurs. this
may be void but should not be undefined at the point where type checking is performed.
- Returns:
-
- Throws:
TypeException
interpret
public abstract java.lang.Object interpret(HelperAdapter helper)
throws ExecuteException
- evaluate the expression by interpreting the expression tree
- Specified by:
interpret
in class RuleElement
- Parameters:
helper
- an execution context associated with the rule which contains a map of
current bindings for rule variables and another map of their declared types both of which
are indexed by variable 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
writeTo
public abstract void writeTo(java.io.StringWriter stringWriter)
- Specified by:
writeTo
in class RuleElement