|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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();
- }
-
-
- }
|