View Javadoc

1   package org.neo.swarm.core.aop.silc.comp;
2   
3   import java.lang.reflect.Method;
4   
5   import org.neo.swarm.core.aop.AspectComponent;
6   
7   
8   /***
9    * @author damiang
10   */
11  public class CompositePointCut implements Pointcut {
12  	private Pointcut p1;
13  	private Pointcut p2;
14  
15  
16  	public CompositePointCut(Pointcut p1, Pointcut p2) {
17  		this.p1 = p1;
18  		this.p2 = p2;
19  	}
20  	
21  	public void advise(AspectComponent component, MethodInterceptor interceptor) {
22  		Method[] methods = component.getInterfaceMethods();
23  		for (int i = 0; i < methods.length; i++) {
24  			if (shouldAdvise(component, methods[i])) {
25  				component.addInterceptor(Perspective.DEFAULT, interceptor);
26  			}
27  		}
28  	}
29  	
30  	public void advise(Perspective perspective, AspectComponent component, MethodInterceptor interceptor) {
31  		Method[] methods = component.getInterfaceMethods();
32  		for (int i = 0; i < methods.length; i++) {
33  			if (shouldAdvise(component, methods[i])) {
34  				component.addInterceptor(perspective, interceptor);
35  			}
36  		}
37  	}
38  
39  	public boolean shouldAdvise(AspectComponent component, Method method) {
40  		return p1.shouldAdvise(component, method) && p2.shouldAdvise(component, method);
41  	}
42  }