X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2FDefaultProvidedInterfaceDescriptor.java;h=2b51c60afc39cbfce5cb43d504714f1d4f2f82a3;hb=0af4854898104bd6322c0f22feb6dc285859f420;hp=97e62da666e940dea82f5ff5d6d7e1510de79ae6;hpb=6f277575685808a5c5a76555dd3e839dc5255031;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/DefaultProvidedInterfaceDescriptor.java b/system/general/src/main/java/org/wamblee/system/DefaultProvidedInterfaceDescriptor.java index 97e62da6..2b51c60a 100644 --- a/system/general/src/main/java/org/wamblee/system/DefaultProvidedInterfaceDescriptor.java +++ b/system/general/src/main/java/org/wamblee/system/DefaultProvidedInterfaceDescriptor.java @@ -1,19 +1,72 @@ package org.wamblee.system; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.Arrays; +/** + * Default implementation of a service descriptor. + * + * @author Erik Brakkee + */ +public class DefaultProvidedInterfaceDescriptor implements ProvidedInterface { + + private String _name; + private Class[] _interfaces; + + /** + * Constructs the descriptor. + * @param aInterface Type of service. + */ + public DefaultProvidedInterfaceDescriptor(String aName, Class aInterface) { + _name = aName; + _interfaces = new Class[] { aInterface }; + } + + public DefaultProvidedInterfaceDescriptor(String aName, Class[] aInterfaces) { + _name = aName; + _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length); + } -public class DefaultProvidedInterfaceDescriptor extends AbstractInterfaceDescriptor implements - ProvidedInterfaceDescriptor { - - public DefaultProvidedInterfaceDescriptor(String aName, Class aInterface) { - super(aName, aInterface); + @Override + public String getName() { + return _name; } - public DefaultProvidedInterfaceDescriptor(String aName, Class[] aInterface) { - super(aName, aInterface); + @Override + public Class[] getInterfaceTypes() { + return _interfaces; } + @Override + public boolean equals(Object obj) { + if ( !(obj instanceof DefaultProvidedInterfaceDescriptor)) { + return false; + } + DefaultProvidedInterfaceDescriptor descr = (DefaultProvidedInterfaceDescriptor)obj; + if ( _interfaces.length != descr._interfaces.length ) { + return false; + } + String[] interfaces1 = new String[_interfaces.length]; + String[] interfaces2 = new String[_interfaces.length]; + for (int i = 0; i < _interfaces.length; i++) { + interfaces1[i] = _interfaces[i].getName(); + interfaces2[i] = descr._interfaces[i].getName(); + } + Arrays.sort(interfaces1); + Arrays.sort(interfaces2); + return Arrays.equals(interfaces1, interfaces2); + } + + @Override + public int hashCode() { + return _interfaces.hashCode(); + } + + @Override + public String toString() { + StringBuffer buf = new StringBuffer(); + for (Class intf: _interfaces) { + buf.append("." + intf.getName()); + } + return buf.toString(); + } }