JBoss.org Community Documentation
public void org.acme.SomeClass->methodName(java.lang.String)
The attributes(
public, static, private
) of the method are optional. If the attribute
is left out then any attribute is assumed. Attributes accept the
!
modifier for negation.
public !static void org.acme.SomeClass->*(..)
$instanceof{}
can be used in place of the class name.
void $instanceof{org.acme.SomeInterface}->methodName(java.lang.String)
To pick out all toString()
methods of all classes within the org.acme
package, we can use org.acme..
in place of the class name.
java.lang.String org.acme..->toString()
To only match methods from a given interface you can use the $implements{}
or
$implementing{}
keywords in place of the method name. $implements{}
only matches methods from the exact interface(s) given, while $implementing{}
matches methods from the interface(s) given AND their super interfaces.
void $instanceof{org.acme.IfA}->$implements(org.acme.IfA)(..)
void $instanceof{org.acme.IfB}->$implementing(org.acme.IfA, org.acme.IfB)(..)
Annotations can be used in place of the class name. The below example matches any methodName() of a tagged @javax.ejb.Entity class.
void @javax.ejb.Entity->methodName(java.lang.String)
Annotations can be also be used in place of the method name. The below examples matches any method tagged as @javax.ejb.Tx.
* *->@javax.ejb.Tx(..)
In addition you can use typedefs, $instanceof{}
, annotations and wildcards
for method parameters and return types. The following matches all methods called loadEntity
that return a class annotated with @javax.ejb.Entity, that takes a class (or a class whose superclass/interface is)
annotated as @org.acme.Ann and any class that matches java.*.String
(such as java.lang.String).
@javax.ejb.Entity *->loadEntity($instanceof{@org.acme.Ann}, java.*.String)You can also include an optional throws clause in the pointcut expression:
public void org.acme.SomeClass->methodName(java.lang.String) \ throws org.acme.SomeException, java.lang.ExceptionIf any exceptions are present in the pointcut expression they must be present in the throws clause of the methods to be matched.