(no commit message)
[utils] / system / general / src / main / java / org / wamblee / system / core / DefaultRequiredInterface.java
index 9927b517f9c9accf0618fcfba2e4f065c09889ea..2983ca6f4796007a95241e4b6a807c0dc94eb8c5 100644 (file)
@@ -17,6 +17,9 @@ package org.wamblee.system.core;
 
 import java.util.Arrays;
 
+import org.hibernate.annotations.common.reflection.ReflectionUtil;
+import org.wamblee.reflection.ReflectionUtils;
+
 public class DefaultRequiredInterface implements RequiredInterface {
 
        private String _name;
@@ -74,6 +77,8 @@ public class DefaultRequiredInterface implements RequiredInterface {
        private boolean serviceProvided(Class aRequired, Class[] aProvided) { 
                for (Class provided: aProvided) {
                        try {
+                               provided = ReflectionUtils.wrapIfNeeded(provided);
+                               aRequired = ReflectionUtils.wrapIfNeeded(aRequired);
                                provided.asSubclass(aRequired);
                                return true; 
                        } catch (ClassCastException e) {
@@ -90,11 +95,19 @@ public class DefaultRequiredInterface implements RequiredInterface {
        
        @Override
        public void setProvider(ProvidedInterface aProvider) {
+           assert aProvider != null; 
+           assert implementedBy(aProvider);
                _provider = aProvider;  
        }
        
        @Override
-       public boolean equals(Object obj) {
+       public boolean equals(Object obj) { 
+           return this == obj; 
+       }
+       
+       @Override
+       public boolean covers(RequiredInterface obj) {
+           // TODO do more than equals. 
                if ( !(obj instanceof DefaultRequiredInterface)) { 
                        return false; 
                }
@@ -121,6 +134,7 @@ public class DefaultRequiredInterface implements RequiredInterface {
        @Override
        public String toString() {
                StringBuffer buf = new StringBuffer();
+               buf.append("." + getName() + ":");
                for (Class intf: _required) { 
                        buf.append("." + intf.getName());
                }