You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/08/21 01:42:10 UTC

svn commit: r987670 [4/4] - in /tuscany/sca-java-2.x/trunk/modules: implementation-spring-runtime/ implementation-spring-runtime/META-INF/ implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/ implementation-...

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/pom.xml?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/pom.xml Fri Aug 20 23:42:07 2010
@@ -28,17 +28,7 @@
     <artifactId>tuscany-implementation-spring</artifactId>
     <name>Apache Tuscany SCA Spring Implementation Model</name>
 
-    <dependencies>
-
-        <!-- **************************************** -->    
-        <!-- *                                      * -->    
-        <!-- * DONT ADD ANY SPRING DEPENDENCIES!!!  * -->    
-        <!-- *                                      * -->    
-        <!-- * See the README for details why not   * -->    
-        <!-- *                                      * -->    
-        <!-- *                                      * -->    
-        <!-- **************************************** -->    
-   
+    <dependencies>   
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-assembly</artifactId>
@@ -61,7 +51,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>tuscany-implementation-java-runtime</artifactId>
+            <artifactId>tuscany-implementation-java</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
                   

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringBeanElement.java Fri Aug 20 23:42:07 2010
@@ -41,6 +41,9 @@ public class SpringBeanElement {
     private List<SpringPropertyElement> properties = new ArrayList<SpringPropertyElement>();
     private List<SpringConstructorArgElement> constructorargs = new ArrayList<SpringConstructorArgElement>();
 
+    public SpringBeanElement() {
+    }
+    
     public SpringBeanElement(String id, String className) {
         this.id = id;
         this.className = className;
@@ -114,4 +117,16 @@ public class SpringBeanElement {
         this.factoryMethodAttribute = factoryMethodAttribute;
     }
 
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringBeanElement [id=").append(id).append(", className=").append(className)
+            .append(", innerBean=").append(innerBean).append(", abstractBean=").append(abstractBean)
+            .append(", parentAttribute=").append(parentAttribute).append(", factoryBeanAttribute=")
+            .append(factoryBeanAttribute).append(", factoryMethodAttribute=").append(factoryMethodAttribute)
+            .append(", properties=").append(properties).append(", constructorargs=").append(constructorargs)
+            .append("]");
+        return builder.toString();
+    }
+
 } // end class SpringBeanElement

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringConstructorArgElement.java Fri Aug 20 23:42:07 2010
@@ -35,6 +35,10 @@ public class SpringConstructorArgElement
     private List<String> refs = new ArrayList<String>();
     private List<String> values = new ArrayList<String>();
 
+    public SpringConstructorArgElement() {
+        
+    }
+    
     public SpringConstructorArgElement(String type) {
         this.type = type;
     }
@@ -74,4 +78,13 @@ public class SpringConstructorArgElement
     public void addValue(String value) {
         this.values.add(value);
     }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringConstructorArgElement [type=").append(type).append(", autoIndex=").append(autoIndex)
+            .append(", index=").append(index).append(", refs=").append(refs).append(", values=").append(values)
+            .append("]");
+        return builder.toString();
+    }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java Fri Aug 20 23:42:07 2010
@@ -19,8 +19,9 @@
 package org.apache.tuscany.sca.implementation.spring;
 
 import java.net.URL;
-import java.util.Hashtable;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.xml.namespace.QName;
 
@@ -33,7 +34,6 @@ import org.apache.tuscany.sca.assembly.R
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.impl.ImplementationImpl;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
 
 /**
  * Represents a Spring implementation.
@@ -48,11 +48,11 @@ public class SpringImplementation extend
     private List<URL> resource;
     private ComponentType componentType;
     // Mapping of Services to Beans
-    private Hashtable<String, SpringBeanElement> serviceMap;
+    private Map<String, SpringBeanElement> serviceMap;
     // Mapping of property names to Java class
-    private Hashtable<String, Class<?>> propertyMap;
+    private Map<String, Class<?>> propertyMap;
     // List of unresolved bean property references
-    private Hashtable<String, Reference> unresolvedBeanRef;
+    private Map<String, Reference> unresolvedBeanRef;
     private ClassLoader classLoader;
 
     public SpringImplementation() {
@@ -60,9 +60,9 @@ public class SpringImplementation extend
         this.location = null;
         this.resource = null;
         setUnresolved(true);
-        serviceMap = new Hashtable<String, SpringBeanElement>();
-        propertyMap = new Hashtable<String, Class<?>>();
-        unresolvedBeanRef = new Hashtable<String, Reference>();
+        serviceMap = new HashMap<String, SpringBeanElement>();
+        propertyMap = new HashMap<String, Class<?>>();
+        unresolvedBeanRef = new HashMap<String, Reference>();
     } // end method SpringImplementation
 
     /* Returns the location attribute for this Spring implementation */
@@ -171,12 +171,8 @@ public class SpringImplementation extend
      * Use preProcess to validate and map the references and properties dynamically
      */
     public void build(Component component) {
-        if (!(component instanceof RuntimeComponent))
-            return;
-
-        RuntimeComponent rtc = (RuntimeComponent)component;
 
-        for (Reference reference : rtc.getReferences()) {
+        for (Reference reference : component.getReferences()) {
             if (unresolvedBeanRef.containsKey(reference.getName())) {
                 Reference ref = unresolvedBeanRef.get(reference.getName());
                 componentType.getReferences().add(createReference(reference, ref.getInterfaceContract()));
@@ -184,7 +180,7 @@ public class SpringImplementation extend
             }
         }
 
-        for (Property property : rtc.getProperties()) {
+        for (Property property : component.getProperties()) {
             if (unresolvedBeanRef.containsKey(property.getName())) {
                 componentType.getProperties().add(createProperty(property));
                 this.setPropertyClass(property.getName(), property.getClass());
@@ -252,4 +248,12 @@ public class SpringImplementation extend
         }
         return true;
     }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringImplementation [location=").append(location).append(", resource=").append(resource)
+            .append("]");
+        return builder.toString();
+    }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringPropertyElement.java Fri Aug 20 23:42:07 2010
@@ -33,6 +33,9 @@ public class SpringPropertyElement {
     private List<String> refs = new ArrayList<String>();
     private List<String> values = new ArrayList<String>();
 
+    public SpringPropertyElement() {
+    }
+
     public SpringPropertyElement(String name) {
         this.name = name;
     }
@@ -57,4 +60,12 @@ public class SpringPropertyElement {
         this.values.add(value);
     }
 
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringPropertyElement [name=").append(name).append(", refs=").append(refs).append(", values=")
+            .append(values).append("]");
+        return builder.toString();
+    }
+
 } // end class SpringPropertyElement

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAPropertyElement.java Fri Aug 20 23:42:07 2010
@@ -28,6 +28,10 @@ public class SpringSCAPropertyElement {
     private String name;
     private String type;
 
+    public SpringSCAPropertyElement() {
+        super();
+    }
+
     public SpringSCAPropertyElement(String name, String type) {
         this.name = name;
         this.type = type;
@@ -49,4 +53,11 @@ public class SpringSCAPropertyElement {
         return type;
     }
 
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringSCAPropertyElement [name=").append(name).append(", type=").append(type).append("]");
+        return builder.toString();
+    }
+
 } // end class SpringPropertyElement

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAReferenceElement.java Fri Aug 20 23:42:07 2010
@@ -39,6 +39,10 @@ public class SpringSCAReferenceElement {
     private List<Intent> intents = new ArrayList<Intent>();
     private List<PolicySet> policySets = new ArrayList<PolicySet>();
 
+    public SpringSCAReferenceElement() {
+
+    }
+
     public SpringSCAReferenceElement(String name, String type) {
         this.name = name;
         this.type = type;
@@ -76,4 +80,13 @@ public class SpringSCAReferenceElement {
         return policySets;
     }
 
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringSCAReferenceElement [name=").append(name).append(", type=").append(type)
+            .append(", defaultBean=").append(defaultBean).append(", intents=").append(intents).append(", policySets=")
+            .append(policySets).append("]");
+        return builder.toString();
+    }
+
 } // end class SpringSCAReferenceElement

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringSCAServiceElement.java Fri Aug 20 23:42:07 2010
@@ -39,6 +39,10 @@ public class SpringSCAServiceElement {
     private List<Intent> intents = new ArrayList<Intent>();
     private List<PolicySet> policySets = new ArrayList<PolicySet>();
 
+    public SpringSCAServiceElement() {
+
+    }
+
     public SpringSCAServiceElement(String name, String target) {
         this.name = name;
         this.target = target;
@@ -76,4 +80,13 @@ public class SpringSCAServiceElement {
         return policySets;
     }
 
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("SpringSCAServiceElement [name=").append(name).append(", type=").append(type)
+            .append(", target=").append(target).append(", intents=").append(intents).append(", policySets=")
+            .append(policySets).append("]");
+        return builder.toString();
+    }
+
 } // end class SpringSCAServiceElement

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringBeanIntrospector.java Fri Aug 20 23:42:07 2010
@@ -88,12 +88,6 @@ public class SpringBeanIntrospector {
             throw new ContributionResolveException(e);
         } // end try
 
-        /* List<Service> services = javaImplementation.getServices();
-        for (Service service : services) {
-            String name = service.getName();
-            System.out.println("Spring Bean: found service with name: " + name);
-        } // end for */
-
         return javaImplementation;
 
     } // end method introspectBean

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java?rev=987670&r1=987669&r2=987670&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java Fri Aug 20 23:42:07 2010
@@ -18,22 +18,6 @@
  */
 package org.apache.tuscany.sca.implementation.spring.introspect;
 
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.BEAN_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.CONSTRUCTORARG_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.ENTRY_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.IMPORT_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.LIST_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.MAP_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.PROPERTY_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.REF_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.SCA_PROPERTY_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.SCA_REFERENCE_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.SCA_SERVICE_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.SET_ELEMENT;
-import static org.apache.tuscany.sca.implementation.spring.SpringImplementationConstants.VALUE_ELEMENT;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -57,18 +41,12 @@ import java.util.jar.Manifest;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.ComponentType;
 import org.apache.tuscany.sca.assembly.Multiplicity;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Service;
-import org.apache.tuscany.sca.assembly.xml.PolicySubjectProcessor;
 import org.apache.tuscany.sca.contribution.Artifact;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
@@ -77,6 +55,7 @@ import org.apache.tuscany.sca.contributi
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.apache.tuscany.sca.implementation.java.JavaConstructorImpl;
 import org.apache.tuscany.sca.implementation.java.JavaElementImpl;
 import org.apache.tuscany.sca.implementation.java.JavaImplementation;
@@ -88,6 +67,7 @@ import org.apache.tuscany.sca.implementa
 import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement;
 import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement;
 import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement;
+import org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader;
 import org.apache.tuscany.sca.interfacedef.InvalidInterfaceException;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterface;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceContract;
@@ -96,7 +76,6 @@ import org.apache.tuscany.sca.interfaced
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.monitor.Problem;
 import org.apache.tuscany.sca.monitor.Problem.Severity;
-import org.apache.tuscany.sca.policy.PolicyFactory;
 
 /**
  * Introspects a Spring XML application-context configuration file to create <implementation-spring../>
@@ -108,24 +87,22 @@ public class SpringXMLComponentTypeLoade
     private final static Logger log = Logger.getLogger(SpringXMLComponentTypeLoader.class.getName());
 
     private ExtensionPointRegistry registry;
-    private XMLInputFactory xmlInputFactory;
     private ContributionFactory contributionFactory;
     private AssemblyFactory assemblyFactory;
     private JavaInterfaceFactory javaFactory;
-    private PolicyFactory policyFactory;
-    private PolicySubjectProcessor policyProcessor;
     private SpringBeanIntrospector beanIntrospector;
 
+    private SpringXMLBeanDefinitionLoader xmlBeanDefinitionLoader;
+
     public SpringXMLComponentTypeLoader(ExtensionPointRegistry registry) {
         super();
         this.registry = registry;
         FactoryExtensionPoint factories = registry.getExtensionPoint(FactoryExtensionPoint.class);
         this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
         this.javaFactory = factories.getFactory(JavaInterfaceFactory.class);
-        this.policyFactory = factories.getFactory(PolicyFactory.class);
-        this.policyProcessor = new PolicySubjectProcessor(policyFactory);
         this.contributionFactory = factories.getFactory(ContributionFactory.class);
-        this.xmlInputFactory = factories.getFactory(XMLInputFactory.class);
+        this.xmlBeanDefinitionLoader =
+            registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(SpringXMLBeanDefinitionLoader.class);
     }
 
     /**
@@ -194,7 +171,6 @@ public class SpringXMLComponentTypeLoade
      */
     private void loadFromXML(SpringImplementation implementation, ModelResolver resolver, ProcessorContext context)
         throws ContributionReadException {
-        XMLStreamReader reader;
         List<SpringBeanElement> beans = new ArrayList<SpringBeanElement>();
         List<SpringSCAServiceElement> services = new ArrayList<SpringSCAServiceElement>();
         List<SpringSCAReferenceElement> references = new ArrayList<SpringSCAReferenceElement>();
@@ -213,35 +189,27 @@ public class SpringXMLComponentTypeLoade
             // The URI is used to uniquely identify the Implementation
             implementation.setURI(resource.toString());
 
-            for (URL contextResource : contextResources) {
-                List<SpringBeanElement> appCxtBeans = new ArrayList<SpringBeanElement>();
-                List<SpringSCAServiceElement> appCxtServices = new ArrayList<SpringSCAServiceElement>();
-                List<SpringSCAReferenceElement> appCxtReferences = new ArrayList<SpringSCAReferenceElement>();
-                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,
-                                      appCxtProperties,
-                                      context);
-                // Validate the beans from individual application context for uniqueness
-                validateBeans(appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties, context.getMonitor());
-                // Add all the validated beans to the generic list
-                beans.addAll(appCxtBeans);
-                services.addAll(appCxtServices);
-                references.addAll(appCxtReferences);
-                scaproperties.addAll(appCxtProperties);
-                reader.close();
-            }
-        } catch (IOException e) {
-            throw new ContributionReadException(e);
-        } catch (XMLStreamException e) {
+            List<SpringBeanElement> appCxtBeans = new ArrayList<SpringBeanElement>();
+            List<SpringSCAServiceElement> appCxtServices = new ArrayList<SpringSCAServiceElement>();
+            List<SpringSCAReferenceElement> appCxtReferences = new ArrayList<SpringSCAReferenceElement>();
+            List<SpringSCAPropertyElement> appCxtProperties = new ArrayList<SpringSCAPropertyElement>();
+
+            if (xmlBeanDefinitionLoader != null) {
+                xmlBeanDefinitionLoader.load(contextResources,
+                                                   appCxtServices,
+                                                   appCxtReferences,
+                                                   appCxtProperties,
+                                                   appCxtBeans,
+                                                   context);
+            }
+            // Validate the beans from individual application context for uniqueness
+            validateBeans(appCxtBeans, appCxtServices, appCxtReferences, appCxtProperties, context.getMonitor());
+            // Add all the validated beans to the generic list
+            beans.addAll(appCxtBeans);
+            services.addAll(appCxtServices);
+            references.addAll(appCxtReferences);
+            scaproperties.addAll(appCxtProperties);
+        } catch (Throwable e) {
             throw new ContributionReadException(e);
         }
 
@@ -283,319 +251,6 @@ public class SpringXMLComponentTypeLoade
     }
 
     /**
-     * Method which returns the XMLStreamReader for the Spring application-context.xml file
-     * specified in the location attribute
-     */
-    private XMLStreamReader getApplicationContextReader(ModelResolver resolver,
-                                                        String location,
-                                                        ProcessorContext context) throws ContributionReadException {
-
-        try {
-            URL resource = getApplicationContextResource(resolveLocation(resolver, location, context)).get(0);
-            XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(resource.openStream());
-            return reader;
-        } catch (IOException e) {
-            throw new ContributionReadException(e);
-        } catch (XMLStreamException e) {
-            throw new ContributionReadException(e);
-        }
-    }
-    
-    /**
-     * Spring 2.0 bean xml definitions use DTD and there is no namespace for the elements 
-     * @param expected
-     * @param actual
-     * @return
-     */
-    private static boolean matches(QName expected, QName actual) {
-        return expected.equals(actual) || ("".equals(actual.getNamespaceURI()) && expected.getLocalPart().equals(actual.getLocalPart()));
-    }
-
-    /**
-     * Method which reads the spring context definitions from Spring application-context.xml
-     * file and identifies the defined beans, properties, services and references
-     * @param context 
-     */
-    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 {
-            int level = 0;
-            while (level >= 0) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        level++;
-                        QName qname = reader.getName();
-                        //System.out.println("Spring TypeLoader - found element with name: " + qname.toString());
-                        if (matches(IMPORT_ELEMENT, qname)) {
-                            //FIXME - put the sequence of code below which gets the ireader into a subsidiary method
-                            String location = reader.getAttributeValue(null, "resource");
-                            if (location != null) {
-                                // FIXME - need to find a right way of generating this path
-                                String resourcePath =
-                                    contextPath.substring(0, contextPath.lastIndexOf("/") + 1) + location;
-                                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,
-                                                      scaproperties,
-                                                      context);
-                            }
-                        } else if (SCA_SERVICE_ELEMENT.equals(qname)) {
-                            // The value of the @name attribute of an <sca:service/> subelement of a <beans/> 
-                            // element MUST be unique amongst the <sca:service/> subelements of the <beans/> element.
-                            if (!services.isEmpty() && (services.contains(reader.getAttributeValue(null, "name"))))
-                                error(context.getMonitor(), "ScaServiceNameNotUnique", resolver);
-
-                            SpringSCAServiceElement service =
-                                new SpringSCAServiceElement(reader.getAttributeValue(null, "name"),
-                                                            reader.getAttributeValue(null, "target"));
-                            if (reader.getAttributeValue(null, "type") != null)
-                                service.setType(reader.getAttributeValue(null, "type"));
-                            policyProcessor.readPolicies(service, reader);
-                            services.add(service);
-                        } else if (SCA_REFERENCE_ELEMENT.equals(qname)) {
-                            // The value of the @name attribute of an <sca:reference/> subelement of a <beans/> 
-                            // element MUST be unique amongst the @name attributes of the <sca:reference/> subelements, 
-                            // of the <beans/> element.
-                            if (!references.isEmpty() && (references.contains(reader.getAttributeValue(null, "name"))))
-                                error(context.getMonitor(), "ScaReferenceNameNotUnique", resolver);
-
-                            SpringSCAReferenceElement reference =
-                                new SpringSCAReferenceElement(reader.getAttributeValue(null, "name"),
-                                                              reader.getAttributeValue(null, "type"));
-                            if (reader.getAttributeValue(null, "default") != null)
-                                reference.setDefaultBean(reader.getAttributeValue(null, "default"));
-                            policyProcessor.readPolicies(reference, reader);
-                            references.add(reference);
-                        } else if (SCA_PROPERTY_ELEMENT.equals(qname)) {
-                            // The value of the @name attribute of an <sca:property/> subelement of a <beans/> 
-                            // element MUST be unique amongst the @name attributes of the <sca:property/> subelements, 
-                            // of the <beans/> element.
-                            if (!scaproperties.isEmpty() && (scaproperties.contains(reader.getAttributeValue(null,
-                                                                                                             "name"))))
-                                error(context.getMonitor(), "ScaPropertyNameNotUnique", resolver);
-
-                            SpringSCAPropertyElement scaproperty =
-                                new SpringSCAPropertyElement(reader.getAttributeValue(null, "name"),
-                                                             reader.getAttributeValue(null, "type"));
-                            scaproperties.add(scaproperty);
-                        } else if (matches(BEAN_ELEMENT, qname)) {
-                            bean =
-                                new SpringBeanElement(reader.getAttributeValue(null, "id"),
-                                                      reader.getAttributeValue(null, "class"));
-                            if (reader.getAttributeValue(null, "abstract") != null)
-                                if (reader.getAttributeValue(null, "abstract").equals("true"))
-                                    bean.setAbstractBean(true);
-                            if (reader.getAttributeValue(null, "parent") != null)
-                                if (!reader.getAttributeValue(null, "parent").equals(""))
-                                    bean.setParentAttribute(true);
-                            if (reader.getAttributeValue(null, "factory-bean") != null)
-                                if (!reader.getAttributeValue(null, "factory-bean").equals(""))
-                                    bean.setFactoryBeanAttribute(true);
-                            if (reader.getAttributeValue(null, "factory-method") != null)
-                                if (!reader.getAttributeValue(null, "factory-method").equals(""))
-                                    bean.setFactoryMethodAttribute(true);
-                            // Set the first name as bean name, when the @id attribute is absent.
-                            if (reader.getAttributeValue(null, "id") == null) {
-                                if (reader.getAttributeValue(null, "name") != null) {
-                                    String[] names = (reader.getAttributeValue(null, "name")).split(",");
-                                    bean.setId(names[0]);
-                                }
-                            }
-                            beans.add(bean);
-                            if (log.isLoggable(Level.FINE)) {
-                                log.log(Level.FINE, "Adding Spring bean ..." + bean.getId() + " from " + contextPath);
-                            }
-                            // Read the <bean> element and its child elements
-                            readBeanDefinition(reader, bean, beans);
-                        } // end if
-                        
-                        // [rfeng] If it reaches end-element, proceed to the case END_ELEMENT test
-                        if (reader.getEventType() != END_ELEMENT) {
-                            break;
-                        }
-                    case END_ELEMENT:
-                        level--;
-                        if (level == 0) {
-                            // Now we are back the root element
-                            return;
-                        }
-                        break;
-                } // end switch
-            } // end while
-        } catch (XMLStreamException e) {
-            throw new ContributionReadException(e);
-        }
-    }
-
-    /**
-     * Method which reads the bean definitions from Spring application-context.xml file and identifies
-     * the defined beans, properties, services and references
-     */
-    private void readBeanDefinition(XMLStreamReader reader, SpringBeanElement bean, List<SpringBeanElement> beans)
-        throws ContributionReadException {
-
-        SpringBeanElement innerbean = null;
-        SpringPropertyElement property = null;
-        SpringConstructorArgElement constructorArg = null;
-
-        try {
-            int level = 0;
-            while (level >= 0) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        level++;
-                        QName qname = reader.getName();
-                        if (matches(BEAN_ELEMENT, qname)) {
-                            innerbean =
-                                new SpringBeanElement(reader.getAttributeValue(null, "id"),
-                                                      reader.getAttributeValue(null, "class"));
-                            // Set the first name as bean name, when the @id attribute is absent.
-                            if (reader.getAttributeValue(null, "id") == null) {
-                                if (reader.getAttributeValue(null, "name") != null) {
-                                    String[] names = (reader.getAttributeValue(null, "name")).split(",");
-                                    innerbean.setId(names[0]);
-                                }
-                            }
-                            innerbean.setInnerBean(true);
-                            beans.add(innerbean);
-                            readBeanDefinition(reader, innerbean, beans);
-                        } else if (matches(PROPERTY_ELEMENT, qname)) {
-                            property = new SpringPropertyElement(reader.getAttributeValue(null, "name"));
-                            if (reader.getAttributeValue(null, "ref") != null)
-                                property.addRef(reader.getAttributeValue(null, "ref"));
-                            bean.addProperty(property);
-                        } else if (matches(CONSTRUCTORARG_ELEMENT, qname)) {
-                            constructorArg = new SpringConstructorArgElement(reader.getAttributeValue(null, "type"));
-                            if (reader.getAttributeValue(null, "ref") != null)
-                                constructorArg.addRef(reader.getAttributeValue(null, "ref"));
-                            if (reader.getAttributeValue(null, "index") != null)
-                                constructorArg.setIndex((new Integer(reader.getAttributeValue(null, "index")))
-                                    .intValue());
-                            if (reader.getAttributeValue(null, "value") != null)
-                                constructorArg.addValue(reader.getAttributeValue(null, "value"));
-                            bean.addCustructorArgs(constructorArg);
-                        } else if (matches(REF_ELEMENT, qname)) {
-                            String ref = reader.getAttributeValue(null, "bean");
-                            // Check if the parent element is a property
-                            if (property != null)
-                                property.addRef(ref);
-                            // Check if the parent element is a constructor-arg
-                            if (constructorArg != null)
-                                constructorArg.addRef(ref);
-                        } else if (matches(VALUE_ELEMENT, qname)) {
-                            String value = reader.getElementText();
-                            // Check if the parent element is a constructor-arg
-                            if (constructorArg != null)
-                                constructorArg.addValue(value);
-                        } else if (matches(LIST_ELEMENT, qname) || matches(SET_ELEMENT, qname) || matches(MAP_ELEMENT, qname)) {
-                            if (property != null)
-                                readCollections(reader, bean, beans, property, null);
-                            if (constructorArg != null)
-                                readCollections(reader, bean, beans, null, constructorArg);
-                        } // end if
-                        // [rfeng] If it reaches end-element, proceed to the case END_ELEMENT test
-                        if (reader.getEventType() != END_ELEMENT) {
-                            break;
-                        }
-                    case END_ELEMENT:
-                        level--;
-                        break;
-                } // end switch
-            } // end while
-        } catch (XMLStreamException e) {
-            throw new ContributionReadException(e);
-        }
-    }
-
-    /**
-     * Method which reads the collection elements from Spring application-context.xml file and identifies
-     * the defined beans, list, maps and sets
-     */
-    private void readCollections(XMLStreamReader reader,
-                                 SpringBeanElement bean,
-                                 List<SpringBeanElement> beans,
-                                 SpringPropertyElement property,
-                                 SpringConstructorArgElement constructorArg) throws ContributionReadException {
-
-        SpringBeanElement innerbean = null;
-
-        try {
-            int level = 0;
-            while (level >= 0) {
-                switch (reader.next()) {
-                    case START_ELEMENT:
-                        level++;
-                        QName qname = reader.getName();
-                        if (matches(BEAN_ELEMENT, qname)) {
-                            innerbean =
-                                new SpringBeanElement(reader.getAttributeValue(null, "id"),
-                                                      reader.getAttributeValue(null, "class"));
-                            // Set the first name as bean name, when the @id attribute is absent.
-                            if (reader.getAttributeValue(null, "id") == null)
-                                if (reader.getAttributeValue(null, "name") != null) {
-                                    String[] names = (reader.getAttributeValue(null, "name")).split(",");
-                                    innerbean.setId(names[0]);
-                                }
-                            innerbean.setInnerBean(true);
-                            beans.add(innerbean);
-                            readBeanDefinition(reader, innerbean, beans);
-                        } else if (matches(REF_ELEMENT, qname)) {
-                            String ref = reader.getAttributeValue(null, "bean");
-                            if (property != null)
-                                property.addRef(ref);
-                            if (constructorArg != null)
-                                constructorArg.addRef(ref);
-                        } else if (matches(LIST_ELEMENT, qname) || matches(SET_ELEMENT, qname) || matches(MAP_ELEMENT, qname)) {
-                            if (property != null)
-                                readCollections(reader, innerbean, beans, property, null);
-                            if (constructorArg != null)
-                                readCollections(reader, innerbean, beans, null, constructorArg);
-                        } else if (matches(ENTRY_ELEMENT, qname)) {
-                            String keyRef = reader.getAttributeValue(null, "key-ref");
-                            String valueRef = reader.getAttributeValue(null, "value-ref");
-                            if (property != null) {
-                                property.addRef(keyRef);
-                                property.addRef(valueRef);
-                            }
-                            if (constructorArg != null) {
-                                constructorArg.addRef(keyRef);
-                                constructorArg.addRef(valueRef);
-                            }
-                        } // end if
-                        // [rfeng] If it reaches end-element, proceed to the case END_ELEMENT test
-                        if (reader.getEventType() != END_ELEMENT) {
-                            break;
-                        }
-                    case END_ELEMENT:
-                        level--;
-                        break;
-                } // end switch
-            } // end while
-        } catch (XMLStreamException e) {
-            throw new ContributionReadException(e);
-        }
-    }
-
-    /**
      * Generates the Spring implementation component type from the configuration contained in the
      * lists of beans, services, references and scaproperties derived from the application context
      */
@@ -643,7 +298,7 @@ public class SpringXMLComponentTypeLoade
                 String beanName = serviceElement.getTarget();
                 for (SpringBeanElement beanElement : beans) {
                     if (beanName.equals(beanElement.getId())) {
-                        if (isvalidBeanForService(beanElement)) {
+                        if (isValidBeanForService(beanElement)) {
                             // add the required intents and policySets for the service
                             theService.getRequiredIntents().addAll(serviceElement.getRequiredIntents());
                             theService.getPolicySets().addAll(serviceElement.getPolicySets());
@@ -713,7 +368,7 @@ public class SpringXMLComponentTypeLoade
                     SpringBeanElement beanElement = itb.next();
 
                     // If its not a valid bean for service, ignore it
-                    if (!isvalidBeanForService(beanElement)) {
+                    if (!isValidBeanForService(beanElement)) {
                         continue;
                     }
                     try {
@@ -746,9 +401,9 @@ public class SpringXMLComponentTypeLoade
             itb = beans.iterator();
             while (itb.hasNext()) {
                 SpringBeanElement beanElement = itb.next();
-                
+
                 // If its not a valid bean for service, ignore it
-                if (!isvalidBeanForService(beanElement)) {
+                if (!isValidBeanForService(beanElement)) {
                     continue;
                 }
                 // Ignore if the bean has no properties and constructor arguments
@@ -794,7 +449,6 @@ public class SpringXMLComponentTypeLoade
                                     break;
                                 } // end if
                             } // end for
-                            
 
                             // Store the unresolved references as unresolvedBeanRef in the Spring Implementation type
                             for (Property scaproperty : beanProperties) {
@@ -1015,7 +669,7 @@ public class SpringXMLComponentTypeLoade
     /**
      * Validates whether a bean definition is valid for exposing as service.
      */
-    private boolean isvalidBeanForService(SpringBeanElement beanElement) {
+    private boolean isValidBeanForService(SpringBeanElement beanElement) {
 
         if (beanElement.isInnerBean())
             return false;

Added: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java?rev=987670&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java Fri Aug 20 23:42:07 2010
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.apache.tuscany.sca.implementation.spring.xml;
+
+import java.net.URL;
+import java.util.List;
+
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.implementation.spring.SpringBeanElement;
+import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement;
+import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement;
+import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement;
+
+/**
+ * The utility interface to load Spring XML bean definitions into an application context 
+ */
+public interface SpringXMLBeanDefinitionLoader {
+    /**
+     * @param resources
+     * @param serviceElements
+     * @param referenceElements
+     * @param propertyElements
+     * @param beanElements
+     * @param context
+     * @return
+     */
+    Object load(List<URL> resources,
+                List<SpringSCAServiceElement> serviceElements,
+                List<SpringSCAReferenceElement> referenceElements,
+                List<SpringSCAPropertyElement> propertyElements,
+                List<SpringBeanElement> beanElements,
+                ProcessorContext context);
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLBeanDefinitionLoader.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date