View Javadoc

1   package org.neo.swarm.core.aop;
2   
3   import java.lang.reflect.Method;
4   
5   import org.neo.swarm.core.aop.silc.comp.AspectComponentImpl;
6   import org.neo.swarm.core.aop.silc.comp.MethodInterceptor;
7   import org.neo.swarm.core.aop.silc.comp.Perspective;
8   
9   
10  
11  /***
12   * Yep this is badly named!
13   * @author damiang
14   */
15  public interface AspectComponent {
16  	public  static final Class DEFAULT_PERSPECTIVE = AspectComponentImpl.class; // gotta get rid of this
17  	void addInterceptor(Perspective perspective, MethodInterceptor methodInterceptor);
18  
19  	void addInterceptor(Perspective perspective, Method method, MethodInterceptor interceptor);
20  
21  	Object getTarget();
22  
23      Object getProxy();
24  	Object getProxy(Perspective perspective);
25  
26      /***
27  	 * callback for perspective version of a component.
28  	 */
29  	Object invokeMethod(Object key, Perspective perspective, Object proxy, Method method, Object[] args) throws Throwable;
30  	
31  	Method[] getInterfaceMethods();
32  
33  	Class [] getInterfaces();
34  }