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;
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 }