summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/implementation-spring/src/main/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-08-06 17:01:52 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2010-08-06 17:01:52 +0000
commitb4444cd5c30014125df44e54a317e38474446cbd (patch)
tree10abc167eb58c25e53cac3e8fd1dde7da514d736 /sca-java-2.x/trunk/modules/implementation-spring/src/main/java
parent34d2607ebd63b775f4a2aba06b66bec2f94babb7 (diff)
Allow HeuristicPojoProcessor to differentiate implementation.java against other java based implementation types such as implementation.spring
Check for duplicate import in spring xml definitions git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@983054 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/implementation-spring/src/main/java')
-rw-r--r--sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java3
-rw-r--r--sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java12
2 files changed, 15 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java
index 0d446a9fa7..f163a75581 100644
--- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java
+++ b/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java
@@ -28,6 +28,7 @@ import org.apache.tuscany.sca.implementation.java.IntrospectionException;
import org.apache.tuscany.sca.implementation.java.JavaImplementation;
import org.apache.tuscany.sca.implementation.java.JavaImplementationFactory;
import org.apache.tuscany.sca.implementation.spring.SpringConstructorArgElement;
+import org.apache.tuscany.sca.implementation.spring.SpringImplementation;
/**
* Provides introspection functions for Spring beans
@@ -70,6 +71,8 @@ public class SpringBeanIntrospector {
// Create a Java implementation ready for the introspection
JavaImplementation javaImplementation = javaImplementationFactory.createJavaImplementation();
+ // Set the type to be implementation.spring to avoid heuristic introspection
+ javaImplementation.setType(SpringImplementation.TYPE);
try {
// Introspect the bean...the results of the introspection are placed into the Java implementation
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 c8cc4360e3..51b5852407 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
@@ -208,9 +208,11 @@ public class SpringXMLComponentTypeLoader {
List<SpringSCAPropertyElement> appCxtProperties = new ArrayList<SpringSCAPropertyElement>();
reader = xmlInputFactory.createXMLStreamReader(contextResource.openStream());
// Read the beans, services, references and properties for individual application context
+ Set<String> visited = new HashSet<String>();
readContextDefinition(resolver,
reader,
contextPath,
+ visited,
appCxtBeans,
appCxtServices,
appCxtReferences,
@@ -295,12 +297,18 @@ public class SpringXMLComponentTypeLoader {
private void readContextDefinition(ModelResolver resolver,
XMLStreamReader reader,
String contextPath,
+ Set<String> visited,
List<SpringBeanElement> beans,
List<SpringSCAServiceElement> services,
List<SpringSCAReferenceElement> references,
List<SpringSCAPropertyElement> scaproperties,
ProcessorContext context) throws ContributionReadException {
+ if (visited.contains(contextPath)) {
+ log.warning("Duplicate Spring bean definition file is skipped: " + contextPath);
+ return;
+ }
+ visited.add(contextPath);
SpringBeanElement bean = null;
try {
@@ -320,6 +328,7 @@ public class SpringXMLComponentTypeLoader {
XMLStreamReader ireader = getApplicationContextReader(resolver, resourcePath, context);
// Read the context definition for the identified imported resource
readContextDefinition(resolver, ireader, resourcePath, // The new context path
+ visited,
beans,
services,
references,
@@ -757,8 +766,10 @@ public class SpringXMLComponentTypeLoader {
// name of the field in the Spring bean....
reference.setName(propertyRef);
componentType.getReferences().add(reference);
+ break;
} // end if
} // end for
+
// Store the unresolved references as unresolvedBeanRef in the Spring Implementation type
for (Property scaproperty : beanProperties) {
@@ -772,6 +783,7 @@ public class SpringXMLComponentTypeLoader {
context);
Reference theReference = createReference(interfaze, propertyRef);
implementation.setUnresolvedBeanRef(propertyRef, theReference);
+ break;
} // end if
} // end for
} // end if