mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-15 02:13:50 +02:00
51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
abstract aspect WorkerExample {
|
|
|
|
after() returning (RequestContext newContext) : call(RequestContext+.new(..)) {
|
|
System.out.println("constructing "+newContext+" at "+thisJoinPoint.toLongString()+" from "+thisEnclosingJoinPointStaticPart+":");
|
|
}
|
|
|
|
abstract class RequestContext {
|
|
public final Object execute() {
|
|
return doExecute();
|
|
}
|
|
|
|
/** template method */
|
|
public abstract Object doExecute();
|
|
}
|
|
|
|
public static void main(String args[]) {
|
|
new Runnable() {
|
|
public void run() {}
|
|
}.run();
|
|
};
|
|
}
|
|
|
|
aspect ConcreteAlpha extends WorkerExample {
|
|
|
|
Object around(final Object runnable) : execution(void Runnable.run()) && this(runnable) {
|
|
System.out.println("monitoring operation: "+runnable+" at "+thisJoinPoint+", for "+thisJoinPoint.getThis());
|
|
RequestContext requestContext = new RequestContext() {
|
|
public Object doExecute() {
|
|
return proceed(runnable);
|
|
}
|
|
|
|
};
|
|
return requestContext.execute();
|
|
}
|
|
|
|
}
|
|
|
|
aspect ConcreteBeta extends WorkerExample {
|
|
|
|
Object around() : call(void awqeyuwqer()) {
|
|
RequestContext requestContext = new ConnectionRequestContext() {
|
|
public Object doExecute() {
|
|
return proceed();
|
|
}
|
|
|
|
};
|
|
return requestContext.execute();
|
|
}
|
|
|
|
|
|
} |