+ @Override
+ public Object getImplementation() {
+ return _implementation;
+ }
+
+ @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();
+ }