@Documented
@Target(value=METHOD)
public @interface After
Note: This is a general contract. The actual implementation depends on the particular marker used with the snippet.
The annotation has the following parameters which control the inlining of a snippet into target code:
This annotation can be only used with methods. In particular, a method
representing a snippet must be static
, must not return any value, and
must not throw any exceptions.
The method can declare parameters the following types:
StaticContext
(or another type implementing it),
DynamicContext
,
ClassContext
, and
ArgumentProcessorContext
.
The ordering and the number of the parameters is arbitrary.
Modifier and Type | Required Element and Description |
---|---|
java.lang.Class<? extends Marker> |
marker
Selects the marker class.
|
Modifier and Type | Optional Element and Description |
---|---|
java.lang.String |
args
Optional argument for the marker class, passed as a
String . |
boolean |
dynamicBypass
Controls automatic bypass activation.
|
java.lang.Class<? extends java.lang.Object> |
guard
Selects the guard class.
|
int |
order
Determines snippet order when multiple snippets are to be inlined
at the same location.
|
java.lang.String |
scope
Selects methods in which to apply the snippet.
|
public abstract java.lang.Class<? extends Marker> marker
Implementation details
public abstract java.lang.String args
String
.
Default value: ""
, means "no arguments".
public abstract java.lang.String scope
See the ch.usi.dag.disl.scope
package for more information about
the scoping language.
Default value: "*"
, means "everywhere".
public abstract java.lang.Class<? extends java.lang.Object> guard
Default value: void.class
, means "no guard used".
public abstract int order
Default value: 100
public abstract boolean dynamicBypass
NOTE: Usage of dynamic bypass is determined by the underlying instrumentation framework.
Default value: true
, means "automatic bypass activation".