1 package net.sf.crispy;
2
3 import java.util.Iterator;
4
5 import net.sf.crispy.concurrent.AsynchronousCallback;
6
7 /**
8 * Minimun on method for ServiceManager. You can implement your own ServiceManager and delegate all
9 * calls to the implementation from the ServiceManager. In your own implementation you can (for example) set
10 * default properties or you can hide implementations details (capsule).
11 *
12 * @author Linke
13 *
14 */
15 public interface IServiceManager {
16
17 public Interceptor getInterceptorByPos (int pvPos);
18 public int getInterceptorSize ();
19 public Interceptor removeInterceptorByPos (int pvPos);
20 public void addInterceptor (Interceptor pvInterceptor);
21
22 public Modifier getModifier();
23 public void setModifier(Modifier pvModifier);
24
25 public String getProperty(String pvKey);
26 public Iterator getPropertyKeys ();
27
28 /**
29 * Create a Proxy-Instance to the Service-Interface for <b>synchronous</b> invocation.
30 *
31 * @param pvServiceInterface Service-Interface
32 *
33 * @return Proxy-Object.
34 */
35 public abstract Object createService(Class pvServiceInterface);
36
37 /**
38 * Create a Proxy-Object for <b>asynchronous</b> invocation.
39 *
40 * @param pvServiceInterface For this Interface is created a Proxy-Object.
41 * @param pvAsynchronousCallback Hanlder for asynchronous execution.
42 * @param pvMethodFilter Only for method-names in this array are asynchronous execution
43 * @param pvMaxSizeOfThreads Max size of keeping Threads.
44 *
45 * @return Proxy-Object.
46 */
47 public abstract Object createService(Class pvServiceInterface,
48 AsynchronousCallback pvAsynchronousCallback,
49 String[] pvMethodFilter,
50 int pvMaxSizeOfThreads);
51
52
53 /**
54 * Are calls asynchronous.
55 * @param pvServiceInterface Test to asynchronous for this service interface.
56 * @return If asynchronous, than <code>true</code>, else <code>false</code>.
57 */
58 public boolean isInvocationAsynchronous(Class pvServiceInterface);
59
60 /**
61 * Remove asynchronous callback interface. All execution are synchronous.
62 * @param pvServiceInterface This is apply to this service interface.
63 */
64 public void removeAsynchronousCallback(Class pvServiceInterface);
65 }