some major refactoring.
[utils] / system / general / src / main / java / org / wamblee / system / ProvidedInterface.java
1 package org.wamblee.system;
2
3 import java.util.Collection;
4
5 /**
6  * Represents an interface provided by a component.
7  *  
8  * @author Erik Brakkee
9  */
10 public interface ProvidedInterface {
11     
12         /**
13          * Symbolic name for the service as used by the subsystem.  
14          * @return Service name. 
15          */
16         String getName();
17         
18         /**
19          * Returns the service type. 
20          * @return Service type. 
21          */
22         Class[] getInterfaceTypes();
23         
24         /**
25          * Publish an implementation of the interface. 
26          * @param aImplementation
27          */
28         void publish(Object aImplementation); 
29         
30         /**
31          * Gets the implementation. 
32          * @return Implementation or null if not started. 
33          */
34         Object getImplementation(); 
35 }