(no commit message)
[utils] / system / spring / src / main / java / org / wamblee / system / spring / RequiredServiceBean.java
index eaf55336c185f74afc0d72de41a0da54cc3afdfb..95e2e786628d6b6638ef98524053ca6668501268 100644 (file)
@@ -1,6 +1,24 @@
+/*
+ * Copyright 2007 the original author or authors.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */ 
 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 +28,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