Now the component provides read-only access to the interfaces.
[utils] / system / general / src / main / java / org / wamblee / system / core / RequiredInterface.java
index ce8d084cdbaa2b11fcd25c65c7c194a871f64b1a..4dd77fc7dad510dcbc062eaab20a402008de627f 100644 (file)
  */ 
 package org.wamblee.system.core;
 
-public interface RequiredInterface {
-
+public interface RequiredInterface extends NamedInterface {
+       
        /**
-        * Name for the interface
+        * @return True iff the required interface is optional
         */
-       public String getName(); 
+       boolean isOptional(); 
+       
        
        /**
         * Checks if the service is provided by a given provided interface. 
@@ -39,13 +40,11 @@ public interface RequiredInterface {
         * Gets the provider interface. 
         * @return Provider or null if not set. 
         */
-       ProvidedInterface getProvider(); 
+       ProvidedInterface getProvider();
        
        /**
-        * Gets the implementation of the required interface. 
-        * @param <T>
-        * @param aClass Interface type. 
-        * @return Interface implementation or null if not known yet. 
+        * Determines if the requirements of the current interface are at least those
+        * of the given required interface. 
         */
-       <T> T getImplementation(Class<T> aClass); 
+       boolean covers(RequiredInterface aInterface); 
 }