1 package org.wamblee.system;
3 import java.util.Arrays;
6 * Default implementation of a service descriptor.
8 public abstract class AbstractServiceDescriptor implements ServiceDescriptor {
11 private Class[] _interfaces;
14 * Constructs the descriptor.
15 * @param aInterface Type of service.
17 public AbstractServiceDescriptor(String aName, Class aInterface) {
19 _interfaces = new Class[] { aInterface };
22 public AbstractServiceDescriptor(String aName, Class[] aInterfaces) {
24 _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length);
28 public String getName() {
33 public Class[] getInterfaceTypes() {
38 public boolean equals(Object obj) {
39 if ( !(obj instanceof AbstractServiceDescriptor)) {
42 AbstractServiceDescriptor descr = (AbstractServiceDescriptor)obj;
43 if ( _interfaces.length != descr._interfaces.length ) {
46 String[] interfaces1 = new String[_interfaces.length];
47 String[] interfaces2 = new String[_interfaces.length];
48 for (int i = 0; i < _interfaces.length; i++) {
49 interfaces1[i] = _interfaces[i].getName();
50 interfaces2[i] = descr._interfaces[i].getName();
52 Arrays.sort(interfaces1);
53 Arrays.sort(interfaces2);
54 return Arrays.equals(interfaces1, interfaces2);
58 public int hashCode() {
59 return _interfaces.hashCode();
63 public String toString() {
64 StringBuffer buf = new StringBuffer();
65 for (Class intf: _interfaces) {
66 buf.append("." + intf.getName());
68 return buf.toString();