-
- 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> requiredInterfaces = SpringComponent.THIS.get()
+ .getRequiredInterfaces();
+
+ for (RequiredInterface intf : requiredInterfaces) {
+ 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;
+ }