Removed DOCUMENT ME comments that were generated and applied source code
[utils] / system / spring / src / main / java / org / wamblee / system / spring / RequiredServiceBean.java
index eaf55336c185f74afc0d72de41a0da54cc3afdfb..23ae1684a8e74ae407b83acd9c03eb4f8f9adcdd 100644 (file)
@@ -1,38 +1,71 @@
+/*
+ * 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.core.RequiredInterface;
+import org.wamblee.system.core.SystemAssemblyException;
+
+import java.util.List;
+
 /**
- * Bean which adds a service required by the spring component to 
- * the application context so that other spring beans can use it.  
- *  
+ * Bean which adds a service required by the spring component to the application
+ * context so that other spring beans can use it.
+ * 
  * @author Erik Brakkee
  */
 class RequiredServiceBean implements FactoryBean {
-       
-       private String _id;
-       
-       /**
-        * Constructs the bean. 
-        * @param aId Id of the bean in the service registry.  
-        */
-       public RequiredServiceBean(String aId) { 
-               _id = aId; 
-       }
-
-       @Override
-       public Object getObject() throws Exception {
-               return SpringComponent.REGISTRY.get().find(_id).reference(Object.class);
-       }
-
-       @Override
-       public Class getObjectType() {
-               return null;
-       }
-
-       @Override
-       public boolean isSingleton() {
-               return true; 
-       }
+    private RequiredInterface _required;
+
+    /**
+     * Constructs the bean.
+     * 
+     * @param aId
+     *            Id of the bean in the service registry.
+     */
+    public RequiredServiceBean(String aId) {
+        List<RequiredInterface> required = SpringComponent.THIS.get()
+            .getRequiredInterfaces();
+
+        for (RequiredInterface intf : required) {
+            if (intf.getName().equals(aId)) {
+                _required = intf;
+
+                return;
+            }
+        }
+
+        throw new SystemAssemblyException(
+            "Cannot resolve required component '" + aId + "'");
+    }
+
+    @Override
+    public Object getObject() throws Exception {
+        return SpringComponent.SCOPE.get().getInterfaceImplementation(
+            _required.getProvider(), Object.class);
+    }
+
+    @Override
+    public Class getObjectType() {
+        return null;
+    }
 
+    @Override
+    public boolean isSingleton() {
+        return true;
+    }
 }