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  }