You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/05/26 09:22:50 UTC

svn commit: r409577 - /incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/

Author: jmarino
Date: Fri May 26 00:22:49 2006
New Revision: 409577

URL: http://svn.apache.org/viewvc?rev=409577&view=rev
Log:
start of Spring namespace handling

Added:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCABeanDefinitionReader.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandlerResolver.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCAXMLBeanDefinitionParser.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java
      - copied, changed from r409555, incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeImplementation.java
Removed:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeImplementation.java
Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandler.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCABeanDefinitionReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCABeanDefinitionReader.java?rev=409577&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCABeanDefinitionReader.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCABeanDefinitionReader.java Fri May 26 00:22:49 2006
@@ -0,0 +1,24 @@
+package org.apache.tuscany.container.spring;
+
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionParser;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SCABeanDefinitionReader extends XmlBeanDefinitionReader {
+
+    private CompositeComponentType componentType;
+
+    public SCABeanDefinitionReader(BeanDefinitionRegistry beanFactory, CompositeComponentType componentType) {
+        super(beanFactory);
+        this.componentType = componentType;
+    }
+
+
+    protected XmlBeanDefinitionParser createXmlBeanDefinitionParser() {
+        return new SCAXmlBeanDefinitionParser(componentType);
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandler.java?rev=409577&r1=409576&r2=409577&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandler.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandler.java Fri May 26 00:22:49 2006
@@ -4,11 +4,19 @@
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.BeanDefinitionDecorator;
 import org.w3c.dom.Element;
+import org.apache.tuscany.spi.model.CompositeComponentType;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class SCANamespaceHandler implements NamespaceHandler {
+
+    private CompositeComponentType componentType;
+
+    public SCANamespaceHandler(CompositeComponentType componentType) {
+        this.componentType = componentType;
+    }
+
     public void init() {
 
     }

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandlerResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandlerResolver.java?rev=409577&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandlerResolver.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCANamespaceHandlerResolver.java Fri May 26 00:22:49 2006
@@ -0,0 +1,39 @@
+package org.apache.tuscany.container.spring;
+
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver;
+import org.springframework.beans.factory.xml.NamespaceHandler;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver {
+
+    private static final String SCA_NAMESPACE = ""; //FIXME
+
+    private SCANamespaceHandler handler;
+
+    public SCANamespaceHandlerResolver(ClassLoader classLoader, CompositeComponentType componentType) {
+        super(classLoader);
+        handler = new SCANamespaceHandler(componentType);
+    }
+
+    public SCANamespaceHandlerResolver(String handlerMappingsLocation,
+                                       ClassLoader classLoader,
+                                       CompositeComponentType componentType) {
+        super(handlerMappingsLocation, classLoader);
+        handler = new SCANamespaceHandler(componentType);
+    }
+
+    /**
+     * Locate the {@link org.springframework.beans.factory.xml.NamespaceHandler} for the supplied namespace
+     * URI from the configured mappings.
+     */
+    public NamespaceHandler resolve(String namespaceUri) {
+        if (SCA_NAMESPACE.equals(namespaceUri)) {
+            return handler;
+        }
+        return super.resolve(namespaceUri);
+    }
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCAXMLBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCAXMLBeanDefinitionParser.java?rev=409577&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCAXMLBeanDefinitionParser.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SCAXMLBeanDefinitionParser.java Fri May 26 00:22:49 2006
@@ -0,0 +1,27 @@
+package org.apache.tuscany.container.spring;
+
+import org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser;
+import org.springframework.beans.factory.xml.NamespaceHandlerResolver;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SCAXmlBeanDefinitionParser extends DefaultXmlBeanDefinitionParser {
+
+    private CompositeComponentType componentType;
+
+    public SCAXmlBeanDefinitionParser(CompositeComponentType componentType) {
+        this.componentType = componentType;
+    }
+
+    protected NamespaceHandlerResolver createNamespaceHandlerResolver() {
+        ClassLoader classLoader = getReaderContext().getReader().getBeanClassLoader();
+        if (classLoader == null) {
+            classLoader = Thread.currentThread().getContextClassLoader();
+        }
+        return new SCANamespaceHandlerResolver(classLoader,componentType);
+    }
+
+
+}

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java?rev=409577&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java Fri May 26 00:22:49 2006
@@ -0,0 +1,27 @@
+package org.apache.tuscany.container.spring;
+
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.loader.ComponentTypeLoader;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.core.io.Resource;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+public class SpringComponentTypeLoader implements ComponentTypeLoader<SpringImplementation> {
+
+    public void load(SpringImplementation implementation, DeploymentContext deploymentContext) {
+        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
+        CompositeComponentType componentType = new CompositeComponentType();
+        XmlBeanDefinitionReader reader = new SCABeanDefinitionReader(beanFactory, componentType);
+        Resource resource = null; //FIXME
+        reader.loadBeanDefinitions(resource);
+        GenericApplicationContext ctx = new GenericApplicationContext(beanFactory);
+        ctx.refresh();
+        implementation.setComponentType(componentType);
+        implementation.setApplicationContext(ctx);
+    }
+}

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java?rev=409577&r1=409576&r2=409577&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java Fri May 26 00:22:49 2006
@@ -16,24 +16,20 @@
 import org.apache.tuscany.spi.model.Reference;
 import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.model.Service;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * Creates a {@link SpringCompositeContext} from an assembly model
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SpringCompositeBuilder extends ComponentBuilderExtension<SpringCompositeImplementation> {
+public class SpringCompositeBuilder extends ComponentBuilderExtension<SpringImplementation> {
 
-    public ComponentContext build(CompositeContext parent, Component<SpringCompositeImplementation> component,
+    public ComponentContext build(CompositeContext parent, Component<SpringImplementation> component,
                                   DeploymentContext deploymentContext) throws BuilderConfigException {
         String name = component.getName();
-        URL url;
-        try {
-            url = new URL(component.getImplementation().getContextPath());
-        } catch (MalformedURLException e) {
-            throw new BuilderConfigException(e);
-        }
-        SpringCompositeContext context = new SpringCompositeContext(name, url, parent);
+        ConfigurableApplicationContext applicationContext = component.getImplementation().getApplicationContext();
+        SpringCompositeContext context = new SpringCompositeContext(name,applicationContext, parent);
         CompositeComponentType componentType = component.getImplementation().getComponentType();
         for (Service service : componentType.getServices().values()) {
             if (service instanceof BoundService) {
@@ -54,7 +50,7 @@
         return context;
     }
 
-    protected Class<SpringCompositeImplementation> getImplementationType() {
-        return SpringCompositeImplementation.class;
+    protected Class<SpringImplementation> getImplementationType() {
+        return SpringImplementation.class;
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java?rev=409577&r1=409576&r2=409577&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeContext.java Fri May 26 00:22:49 2006
@@ -33,25 +33,13 @@
     private static final String[] EMPTY_ARRAY = new String[0];
     private ConfigurableApplicationContext springContext;
     private SCAApplicationContext scaApplicationContext;
-    private URL springContextUrl;
 
     /**
      * Creates a new composite
-     * @param name the name of the SCA composite
-     * @param springContextUrl a URL to the Spring application context configuration file
-     * @param parent the SCA composite parent
-     */
-    public SpringCompositeContext(String name, URL springContextUrl, CompositeContext parent) {
-        super(name, parent);
-        this.springContextUrl = springContextUrl;
-        throw new UnsupportedOperationException("Not yet implemented");
-    }
-
-    /**
-     * Creates a new composite
-     * @param name the name of the SCA composite
+     *
+     * @param name          the name of the SCA composite
      * @param springContext the pre-instantiated Spring applicaiton context
-     * @param parent the SCA composite parent
+     * @param parent        the SCA composite parent
      */
     public SpringCompositeContext(String name, ConfigurableApplicationContext springContext, CompositeContext parent) {
         super(name, parent);

Copied: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java (from r409555, incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeImplementation.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java?p2=incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java&p1=incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeImplementation.java&r1=409555&r2=409577&rev=409577&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeImplementation.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java Fri May 26 00:22:49 2006
@@ -2,31 +2,42 @@
 
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
-public class SpringCompositeImplementation extends Implementation<CompositeComponentType> {
-    private String contextPath;
+public class SpringImplementation extends Implementation<CompositeComponentType> {
 
-    public SpringCompositeImplementation() {
+    private String location;
+    private ConfigurableApplicationContext applicationContext;
+
+    public SpringImplementation() {
     }
 
-    public SpringCompositeImplementation(CompositeComponentType componentType) {
+    public SpringImplementation(CompositeComponentType componentType) {
         super(componentType);
     }
 
     /**
      * Returns the path of the Spring application context configuration
      */
-    public String getContextPath() {
-        return contextPath;
+    public String getContextLocation() {
+        return location;
     }
 
     /**
      * Sets the path of the Spring application context configuration
      */
-    public void setContextPath(String contextPath) {
-        this.contextPath = contextPath;
+    public void setContextLocation(String location) {
+        this.location = location;
+    }
+
+    public ConfigurableApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    public void setApplicationContext(ConfigurableApplicationContext applicationContext) {
+        this.applicationContext = applicationContext;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org