JBoss.org Community Documentation
Pointcuts use class, field, constructor, and method expressions to specify the actual joinpoint that should be intercepted/watched.
execution(method or constructor)
execution(public void Foo->method() execution(public Foo->new())
execution
is used to specify that you want an interception to happen
whenever a method or constructor is called. The the first example of matches anytime a method
is called, the second matches a constructor. System classes cannot be used within
execution
expressions because it is impossible to instrument them.
construction(constructor)
construction(public Foo->new())
construction
is used to specify that you want aspects to run within the constructor.
The execution
pointcut requires that any code that calls new() must be instrumented
by the compiler. With construction
the aspects are weaved right within the constructor
after all the code in the constructor. The aspects are appended to the code of the constructor.
get
(field expression)
get(public int Foo->fieldname)
get
is used to specify that you want an interception to happen
when a specific field is accessed for a read.
set(field expression)
get(public int Foo->fieldname)
set
is used to specify that you want an interception to happen
when a specific field is accessed for a write.
field(field expression)
field(public int Foo->fieldname)
field
is used to specify that you want an interception to happen
when a specific field is accessed for a read or a write.
all(type expression)
all(org.acme.SomeClass) all(@org.jboss.security.Permission)
all
is used to specify any constructor, method or field of a particular class
will be intercepted. If an annotation is used, it matches the member's annotation, not the class's
annotation.
call(method or constructor)
call(public void Foo->method() call(public Foo->new())
call
is used to specify any constructor or method that you want intercepted.
It is different than
execution
in that the interception happens at the caller side
of things and the caller information is available within the Invocation object.
call
can be used to intercept System classes because the bytecode weaving happens within the callers bytecode.
within(type expression)
within(org.acme.SomeClass) within(@org.jboss.security.Permission)
within
matches any joinpoint (method or constructor call) within any code within a
particular type.
withincode(method or constructor)
withincode(public void Foo->method() withincode(public Foo->new())
withincode
matches any joinpoint (method or constructor call) within a particular
method or constructor.
has(method or constructor)
has(void *->@org.jboss.security.Permission(..)) has(*->new(java.lang.String))
has
is an additional requirement for matching. If a joinpoint is matched, its
class must also have a constructor or method that matches the
has
expression.
hasfield(field expression)
hasfield(* *->@org.jboss.security.Permission) hasfield(public java.lang.String *->*)
has
is an additional requirement for matching. If a joinpoint is matched, its
class must also have a field that matches the
hasfield
expression.