From 8eee1434bbc9b66bf5f005cefc88306c9bf999dd Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 20 Aug 2010 23:42:39 +0000 Subject: Allow service target to be a bean in the parent context git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@987674 13f79535-47bb-0310-9956-ffa450edef68 --- .../spring/introspect/SpringXMLComponentTypeLoader.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'sca-java-2.x/trunk/modules/implementation-spring') diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java index 1b0ad108fb..9d360ebc2b 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java +++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java @@ -314,6 +314,7 @@ public class SpringXMLComponentTypeLoader { componentType.getServices().add(theService); // Add this service to the Service / Bean map String beanName = serviceElement.getTarget(); + boolean found = false; for (SpringBeanElement beanElement : beans) { if (beanName.equals(beanElement.getId())) { if (isValidBeanForService(beanElement)) { @@ -321,9 +322,18 @@ public class SpringXMLComponentTypeLoader { theService.getRequiredIntents().addAll(serviceElement.getRequiredIntents()); theService.getPolicySets().addAll(serviceElement.getPolicySets()); implementation.setBeanForService(theService, beanElement); + found = true; + break; } } } // end for + + if (!found) { + // REVIEW: Adding a SpringBeanElement "proxy" so that the bean id can be used at runtime to look + // up the bean instance from the parent context + implementation.setBeanForService(theService, + new SpringBeanElement(serviceElement.getTarget(), null)); + } } // end while // Next handle the references -- cgit v1.2.3