some major refactoring.
[utils] / system / general / src / main / java / org / wamblee / system / RequiredInterface.java
1 package org.wamblee.system;
2
3 public interface RequiredInterface {
4
5         /**
6          * Name for the interface. 
7          */
8         public String getName(); 
9         
10         /**
11          * Checks if the service is provided by a given provided interface. 
12          * @param aInterface Provided interface. 
13          * @return
14          */
15         boolean implementedBy(ProvidedInterface aInterface);
16         
17         /**
18          * Sets the provider of this interface. 
19          * @param aProvider Provider. 
20          */
21         void setProvider(ProvidedInterface aProvider);
22         
23         /**
24          * Getst the provider interface. 
25          * @return Provider or null if not set. 
26          */
27         ProvidedInterface getProvider(); 
28         
29         /**
30          * Gets the implementation of the required interface. 
31          * @param <T>
32          * @param aClass Interface type. 
33          * @return Interface implementation or null if not known yet. 
34          */
35         <T> T getImplementation(Class<T> aClass); 
36 }