some major refactoring.
[utils] / system / spring / src / main / java / org / wamblee / system / spring / RequiredServiceBean.java
index eaf55336c185f74afc0d72de41a0da54cc3afdfb..50e7e967998ef4e3b098b9516cad92b3980ab593 100644 (file)
@@ -1,6 +1,9 @@
 package org.wamblee.system.spring;
 
 import org.springframework.beans.factory.FactoryBean;
+import org.wamblee.system.ProvidedInterface;
+import org.wamblee.system.RequiredInterface;
+import org.wamblee.system.SystemAssemblyException;
 
 /**
  * Bean which adds a service required by the spring component to 
@@ -10,19 +13,26 @@ import org.springframework.beans.factory.FactoryBean;
  */
 class RequiredServiceBean implements FactoryBean {
        
-       private String _id;
+       private RequiredInterface _required; 
        
        /**
         * Constructs the bean. 
         * @param aId Id of the bean in the service registry.  
         */
        public RequiredServiceBean(String aId) { 
-               _id = aId; 
+               RequiredInterface[] required = SpringComponent.THIS.get().getRequiredServices();
+               for ( RequiredInterface intf: required) { 
+                       if ( intf.getName().equals(aId)) { 
+                               _required = intf; 
+                               return;
+                       }
+               }
+               throw new SystemAssemblyException("Cannot resolve provided component '" + aId + "'");
        }
 
        @Override
        public Object getObject() throws Exception {
-               return SpringComponent.REGISTRY.get().find(_id).reference(Object.class);
+               return _required.getImplementation(Object.class);
        }
 
        @Override