1 package org.wamblee.system;
3 import java.util.Arrays;
6 * Default implementation of a service descriptor.
10 public abstract class AbstractServiceDescriptor implements ServiceDescriptor {
13 private Class[] _interfaces;
16 * Constructs the descriptor.
17 * @param aInterface Type of service.
19 public AbstractServiceDescriptor(String aName, Class aInterface) {
21 _interfaces = new Class[] { aInterface };
24 public AbstractServiceDescriptor(String aName, Class[] aInterfaces) {
26 _interfaces = Arrays.copyOf(aInterfaces, aInterfaces.length);
30 public String getName() {
35 public Class[] getInterfaceTypes() {
40 public boolean equals(Object obj) {
41 if ( !(obj instanceof AbstractServiceDescriptor)) {
44 AbstractServiceDescriptor descr = (AbstractServiceDescriptor)obj;
45 if ( _interfaces.length != descr._interfaces.length ) {
48 String[] interfaces1 = new String[_interfaces.length];
49 String[] interfaces2 = new String[_interfaces.length];
50 for (int i = 0; i < _interfaces.length; i++) {
51 interfaces1[i] = _interfaces[i].getName();
52 interfaces2[i] = descr._interfaces[i].getName();
54 Arrays.sort(interfaces1);
55 Arrays.sort(interfaces2);
56 return Arrays.equals(interfaces1, interfaces2);
60 public int hashCode() {
61 return _interfaces.hashCode();
65 public String toString() {
66 StringBuffer buf = new StringBuffer();
67 for (Class intf: _interfaces) {
68 buf.append("." + intf.getName());
70 return buf.toString();