X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultProvidedInterface.java;h=c790567300206015123a27ee8bcf721b34c693a2;hb=e1975449f1bf16ccb441632d68e440f3e3704a79;hp=90c230dcc9bf23493fcba2dd629f14c7c880e665;hpb=dea786c9d49228a37cb5fd5b4113b86d9f6cddbf;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java b/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java index 90c230dc..c7905673 100644 --- a/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java +++ b/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java @@ -15,7 +15,11 @@ */ package org.wamblee.system.core; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.List; + /** * Default implementation of a service descriptor. @@ -26,7 +30,6 @@ public class DefaultProvidedInterface implements ProvidedInterface { private String _name; private Class[] _interfaces; - private String _uniqueId; /** * Constructs the descriptor. @@ -36,10 +39,9 @@ public class DefaultProvidedInterface implements ProvidedInterface { this(aName, new Class[] { aInterface }); } - public DefaultProvidedInterface(String aName, Class[] aInterfaces) { + public DefaultProvidedInterface(String aName, Class[] aInterfaces) { _name = aName; - _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length); - _uniqueId = null; + _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length); } @Override @@ -51,21 +53,6 @@ public class DefaultProvidedInterface implements ProvidedInterface { public Class[] getInterfaceTypes() { return _interfaces; } - - @Override - public void setUniqueId(String aId) { - _uniqueId = aId; - } - - @Override - public String getUniqueId() { - return _uniqueId; - } - - @Override - public void publish(Object aImplementation, Scope aScope) { - aScope.publishInterface(this, aImplementation); - } @Override public String toString() { @@ -77,4 +64,44 @@ public class DefaultProvidedInterface implements ProvidedInterface { } return buf.toString(); } + + @Override + public boolean equals(Object aObj) { + return this == aObj; + /* + if ( !(aObj instanceof DefaultProvidedInterface)) { + return false; + } + DefaultProvidedInterface provided = (DefaultProvidedInterface)aObj; + return getEqualsRepresentation().equals(provided.getEqualsRepresentation()); + */ + } + + @Override + public int hashCode() { + return getEqualsRepresentation().hashCode(); + } + + @Override + public boolean covers(ProvidedInterface aInterface) { + // TODO do more than just equals. + if ( !(aInterface instanceof DefaultProvidedInterface)) { + return false; + } + return getEqualsRepresentation().equals(((DefaultProvidedInterface)aInterface).getEqualsRepresentation()); + } + + + private String getEqualsRepresentation() { + List result = new ArrayList(); + for (Class cls: _interfaces) { + result.add(cls.getName()); + } + Collections.sort(result); + String value = ""; + for (String str: result) { + value += ":" + str; + } + return value; + } }