1 package org.neo.swarm;
2
3 import org.aopalliance.intercept.MethodInvocation;
4 import org.neo.swarm.core.aop.Aspect;
5 import org.neo.swarm.core.aop.AspectComponent;
6 import org.neo.swarm.core.aop.silc.comp.MethodInterceptor;
7 import org.neo.swarm.core.aop.silc.comp.Perspective;
8 import org.neo.swarm.core.aop.silc.comp.Pointcut;
9 import org.neo.swarm.core.aop.silc.comp.RegexPointCut;
10
11 /***
12 * @author damiang
13 */
14 public class ExampleAspect implements Aspect {
15 Pointcut advisor = new RegexPointCut("(.*)");
16 private MethodInterceptor methodInterceptor;
17
18 public ExampleAspect() {
19 methodInterceptor = new MethodInterceptor() {
20 public Object invoke(MethodInvocation invocation) throws Throwable {
21 System.out.println("pre:" + invocation.getMethod());
22 try {
23 return invocation.proceed();
24 }finally {
25 System.out.println("post:" + invocation.getMethod());
26 }
27 }
28 };
29 }
30
31 public void advise(AspectComponent componentInstance) {
32 advisor.advise(Perspective.DEFAULT, componentInstance, methodInterceptor);
33 }
34
35 public MethodInterceptor getInterceptor() {
36 return methodInterceptor;
37 }
38
39 public void replaceInterceptor(MethodInterceptor interceptor) {
40 methodInterceptor = interceptor;
41 }
42 }