removed the unique id from the provided interface. Now using object
[utils] / system / general / src / main / java / org / wamblee / system / core / ProvidedInterface.java
index 349197d0f2b8a450ee39ea5e21a6c4dfc10f2ffa..f717535cf71f0369f9a3595ffa1c3d962422d998 100644 (file)
@@ -19,6 +19,7 @@ import java.util.Collection;
 
 /**
  * Represents an interface provided by a component.
+ * Different component objects should never share ProvidedInterface instances!
  *  
  * @author Erik Brakkee
  */
@@ -35,16 +36,22 @@ public interface ProvidedInterface {
         * @return Service type. 
         */
        Class[] getInterfaceTypes();
-       
+
        /**
-        * Publish an implementation of the interface. 
-        * @param aImplementation
+        * Publishes an implementation of the interface. The implementation must 
+        * call {@link Scope#publishInterface(ProvidedInterface, Object)} to publish the
+        * interface implementation in a given scope.  
+        * @param aImplementation Implementation to publish. 
+        * @param aScope Scope in which to publish the implementation. 
         */
-       void publish(Object aImplementation); 
+       void publish(Object aImplementation, Scope aScope);
+       
        
        /**
-        * Gets the implementation. 
-        * @return Implementation or null if not started. 
+        * Determines whether the current provided interface exceeds the given provided interface. 
+        * In other words if it can provide at least what the given provided interface can provide. 
+        * @param aInterface Interface to compare to. 
+        * @return True if the current interface exceeds the given provided interface. 
         */
-       Object getImplementation(); 
+       boolean covers(ProvidedInterface aInterface); 
 }