X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=trunk%2Fsystem%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FDefaultProvidedInterface.java;h=d3a40bfe227f4aec5d449f2e262b1e76670a093c;hb=6222acf41ea4bd49fe8c9e76e1709e472171d7f3;hp=3eb33ddc90c8a18bc2e9f5190c245c32fe8fe28a;hpb=69577f2ed27beedb916e997ebe6627416ccd2a02;p=utils diff --git a/trunk/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java b/trunk/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java index 3eb33ddc..d3a40bfe 100644 --- a/trunk/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java +++ b/trunk/system/general/src/main/java/org/wamblee/system/core/DefaultProvidedInterface.java @@ -15,7 +15,12 @@ */ package org.wamblee.system.core; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.UUID; + /** * Default implementation of a service descriptor. @@ -39,7 +44,7 @@ public class DefaultProvidedInterface implements ProvidedInterface { public DefaultProvidedInterface(String aName, Class[] aInterfaces) { _name = aName; _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length); - _uniqueId = null; + _uniqueId = UUID.randomUUID().toString(); } @Override @@ -51,11 +56,6 @@ public class DefaultProvidedInterface implements ProvidedInterface { public Class[] getInterfaceTypes() { return _interfaces; } - - @Override - public void setUniqueId(String aId) { - _uniqueId = aId; - } @Override public String getUniqueId() { @@ -77,4 +77,32 @@ public class DefaultProvidedInterface implements ProvidedInterface { } return buf.toString(); } + + @Override + public boolean equals(Object aObj) { + if ( !(aObj instanceof DefaultProvidedInterface)) { + return false; + } + DefaultProvidedInterface provided = (DefaultProvidedInterface)aObj; + return getEqualsRepresentation().equals(provided.getEqualsRepresentation()); + } + + @Override + public int hashCode() { + return getEqualsRepresentation().hashCode(); + } + + + 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; + } }