removed the unique id from the provided interface. Now using object
[utils] / system / general / src / main / java / org / wamblee / system / core / DefaultRequiredInterface.java
index 32276a25cc26d7237e479f379b5b94309773e3ae..01575db2c0dbc4e78b9bc53ac989b9cd22f0e2a6 100644 (file)
@@ -20,6 +20,7 @@ import java.util.Arrays;
 public class DefaultRequiredInterface implements RequiredInterface {
 
        private String _name;
+       private boolean _optional; 
        private Class[] _required;
        private ProvidedInterface _provider; 
        
@@ -28,7 +29,17 @@ public class DefaultRequiredInterface implements RequiredInterface {
        }
 
        public DefaultRequiredInterface(String aName, Class[] aInterfaces) {
+               this(aName, aInterfaces, false); 
+       }
+       
+       public DefaultRequiredInterface(String aName, Class aInterface, boolean aIsOptional) {
+           this(aName, new Class[] { aInterface }, aIsOptional );
+       }
+
+       
+       public DefaultRequiredInterface(String aName, Class[] aInterfaces, boolean aIsOptional) {
                _name = aName; 
+               _optional = aIsOptional; 
                _required = aInterfaces; 
        }
 
@@ -37,6 +48,11 @@ public class DefaultRequiredInterface implements RequiredInterface {
                return _name;
        }
        
+       @Override
+       public boolean isOptional() {
+               return _optional; 
+       }
+       
        @Override
        public boolean implementedBy(ProvidedInterface aDescriptor) {
                Class[] provided = aDescriptor.getInterfaceTypes();
@@ -74,19 +90,19 @@ public class DefaultRequiredInterface implements RequiredInterface {
        
        @Override
        public void setProvider(ProvidedInterface aProvider) {
+           assert aProvider != null; 
+           assert implementedBy(aProvider);
                _provider = aProvider;  
        }
-
+       
        @Override
-       public <T> T getImplementation(Class<T> aClass) {
-               if ( _provider == null ) { 
-                       return null; 
-               }
-               return (T)_provider.getImplementation();
+       public boolean equals(Object obj) { 
+           return this == obj; 
        }
        
        @Override
-       public boolean equals(Object obj) {
+       public boolean covers(RequiredInterface obj) {
+           // TODO do more than equals. 
                if ( !(obj instanceof DefaultRequiredInterface)) { 
                        return false; 
                }
@@ -113,6 +129,7 @@ public class DefaultRequiredInterface implements RequiredInterface {
        @Override
        public String toString() {
                StringBuffer buf = new StringBuffer();
+               buf.append("." + getName() + ":");
                for (Class intf: _required) { 
                        buf.append("." + intf.getName());
                }