+
+ @Override
+ public ProvidedInterface getProvider() {
+ return _provider;
+ }
+
+ @Override
+ public void setProvider(ProvidedInterface aProvider) {
+ _provider = aProvider;
+ }
+
+ @Override
+ public <T> T getImplementation(Class<T> aClass) {
+ return (T)_provider.getImplementation();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if ( !(obj instanceof DefaultRequiredInterfaceDescriptor)) {
+ return false;
+ }
+ DefaultRequiredInterfaceDescriptor descr = (DefaultRequiredInterfaceDescriptor)obj;
+ if ( _required.length != descr._required.length ) {
+ return false;
+ }
+ String[] interfaces1 = new String[_required.length];
+ String[] interfaces2 = new String[_required.length];
+ for (int i = 0; i < _required.length; i++) {
+ interfaces1[i] = _required[i].getName();
+ interfaces2[i] = descr._required[i].getName();
+ }
+ Arrays.sort(interfaces1);
+ Arrays.sort(interfaces2);
+ return Arrays.equals(interfaces1, interfaces2);
+ }