(no commit message)
[utils] / system / general / src / main / java / org / wamblee / system / core / ProvidedInterface.java
index aa2621f7f017e70bbb8e8a4eb19f7f9e71fbabfd..be6aa6f0d96e90ececfe7cd81f6060928c4f3151 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.system.core;
 
-import java.util.Collection;
-
 /**
- * Represents an interface provided by a component.
- * Different component objects should never share ProvidedInterface instances!
- *  
+ * Represents an interface provided by a component. Different component objects
+ * should never share ProvidedInterface instances!
+ * 
  * @author Erik Brakkee
  */
-public interface ProvidedInterface {
-    
-       /**
-        * Symbolic name for the service as used by the subsystem.  
-        * @return Service name. 
-        */
-       String getName();
-       
-       /**
-        * Returns the service type. 
-        * @return Service type. 
-        */
-       Class[] getInterfaceTypes();
-
-       /**
-        * Gets the unique if of the provided interface.   
-        */
-       String getUniqueId();
+public interface ProvidedInterface extends NamedInterface {
+    /**
+     * Returns the service type.
+     * 
+     * @return Service type.
+     */
+    Class[] getInterfaceTypes();
 
-       /**
-        * 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, Scope aScope);
+    /**
+     * 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.
+     */
+    boolean covers(ProvidedInterface aInterface);
 }