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 2011/03/21 21:28:21 UTC

svn commit: r1083938 - in /tuscany/sca-java-2.x/trunk: distribution/all/src/main/release/bin/ modules/core-spi/ modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/ modules/implementation-spring-runtime/ modules/implementation-spring-r...

Author: rfeng
Date: Mon Mar 21 20:28:20 2011
New Revision: 1083938

URL: http://svn.apache.org/viewvc?rev=1083938&view=rev
Log:
Allow the spring component to receive parent application context from the composite context

Added:
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java   (with props)
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java
      - copied, changed from r1083823, tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java
Modified:
    tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE
    tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyContextListener.java
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/pom.xml
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/pom.xml
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/pom.xml
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java
    tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java
    tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java
    tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java

Modified: tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE (original)
+++ tuscany/sca-java-2.x/trunk/distribution/all/src/main/release/bin/LICENSE Mon Mar 21 20:28:20 2011
@@ -297,12 +297,14 @@ The following components come under Apac
  openjpa-1.2.1.jar
  org.apache.axis2.osgi-1.5.3.jar
  regexp-1.3.jar
- spring-aop-3.0.2.RELEASE.jar
- spring-asm-3.0.2.RELEASE.jar
- spring-beans-3.0.2.RELEASE.jar
- spring-context-3.0.2.RELEASE.jar
- spring-core-3.0.2.RELEASE.jar
- spring-expression-3.0.2.RELEASE.jar
+ spring-aop-3.0.5.RELEASE.jar
+ spring-asm-3.0.5.RELEASE.jar
+ spring-beans-3.0.5.RELEASE.jar
+ spring-context-3.0.5.RELEASE.jar
+ spring-core-3.0.5.RELEASE.jar
+ spring-expression-3.0.5.RELEASE.jar
+ spring-web-3.0.5.RELEASE.jar
+ spring-webmvc-3.0.5.RELEASE.jar
  stripes-1.5.2.jar
  tranql-connector-1.1.jar
  tribes-6.0.26.jar

Modified: tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/core-spi/pom.xml Mon Mar 21 20:28:20 2011
@@ -86,13 +86,13 @@
                 <id>process-resources</id>
                 <phase>process-resources</phase>
                 <configuration>
-                    <tasks>
+                    <target>
                         <filter token="version" value="${project.version}"/>
                         <filter token="svnRevision" value="${sources.version}"/>
                         <filter token="buildtime" value="${build.timestamp}"/>
                         <copy toDir="${basedir}/target/classes/org/apache/tuscany/sca/runtime" overwrite="true"
                               filtering="on" file="${basedir}/src/main/resources/org/apache/tuscany/sca/runtime/revision.properties"/>
-                    </tasks>
+                    </target>
                 </configuration>
                 <goals>
                     <goal>run</goal>

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyContextListener.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyContextListener.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyContextListener.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyContextListener.java Mon Mar 21 20:28:20 2011
@@ -25,7 +25,6 @@ import java.util.logging.Logger;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
-import org.apache.tuscany.sca.host.webapp.WebAppHelper.Configurator;
 
 /**
  * A ServletContextListener to create and close the SCADomain
@@ -38,7 +37,7 @@ public class TuscanyContextListener impl
     public void contextInitialized(ServletContextEvent event) {
         logger.info(event.getServletContext().getServletContextName() + " is starting.");
         try {
-            Configurator configurator = WebAppHelper.getConfigurator(event.getServletContext());
+            WebContextConfigurator configurator = WebAppHelper.getConfigurator(event.getServletContext());
             WebAppHelper.init(configurator);
         } catch (Throwable e) {
             logger.log(Level.SEVERE, e.getMessage(), e);
@@ -52,7 +51,7 @@ public class TuscanyContextListener impl
             return;
         }
         try {
-            Configurator configurator = WebAppHelper.getConfigurator(event.getServletContext());
+            WebContextConfigurator configurator = WebAppHelper.getConfigurator(event.getServletContext());
             WebAppHelper.stop(configurator);
         } catch (Throwable e) {
             logger.log(Level.SEVERE, e.getMessage(), e);

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java Mon Mar 21 20:28:20 2011
@@ -26,7 +26,6 @@ import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 
-import org.apache.tuscany.sca.host.webapp.WebAppHelper.Configurator;
 
 /**
  * A Servlet that provides a hook to control the lifecycle of Tuscany node
@@ -37,7 +36,7 @@ public class TuscanyServlet extends Http
     private static final long serialVersionUID = 1L;
     private Logger logger = Logger.getLogger(TuscanyServlet.class.getName());
 
-    private transient Configurator configurator;
+    private transient WebContextConfigurator configurator;
 
     public TuscanyServlet() {
         super();

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServletFilter.java Mon Mar 21 20:28:20 2011
@@ -32,7 +32,6 @@ import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.tuscany.sca.host.http.ServletHost;
-import org.apache.tuscany.sca.host.webapp.WebAppHelper.Configurator;
 
 /**
  * A Servlet filter that forwards service requests to the Servlets registered with
@@ -44,7 +43,7 @@ public class TuscanyServletFilter implem
     private static final long serialVersionUID = 1L;
     private Logger logger = Logger.getLogger(TuscanyServletFilter.class.getName());
 
-    private transient Configurator configurator;
+    private transient WebContextConfigurator configurator;
     private transient ServletHost servletHost;
 
     public TuscanyServletFilter() {

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java Mon Mar 21 20:28:20 2011
@@ -106,7 +106,7 @@ public class WebAppHelper {
         return host;
     }
 
-    public static Node init(final Configurator configurator) {
+    public static Node init(final WebContextConfigurator configurator) {
         synchronized (configurator) {
 
             bootstrapRuntime(configurator);
@@ -127,7 +127,7 @@ public class WebAppHelper {
      * Bootstrap the Tuscany runtime for the given scope
      * @param configurator
      */
-    private synchronized static void bootstrapRuntime(final Configurator configurator) {
+    private synchronized static void bootstrapRuntime(final WebContextConfigurator configurator) {
         if (host == null) {
             try {
 
@@ -154,7 +154,7 @@ public class WebAppHelper {
         }
     }
 
-    private static WebAppServletHost getServletHost(final Configurator configurator) throws ServletException {
+    private static WebAppServletHost getServletHost(final WebContextConfigurator configurator) throws ServletException {
         ExtensionPointRegistry registry = factory.getExtensionPointRegistry();
         WebAppServletHost host =
             (WebAppServletHost)org.apache.tuscany.sca.host.http.ServletHostHelper.getServletHost(registry);
@@ -179,7 +179,7 @@ public class WebAppHelper {
         return host;
     }
 
-    private static Node createAndStartNode(final Configurator configurator) throws ServletException {
+    private static Node createAndStartNode(final WebContextConfigurator configurator) throws ServletException {
         NodeConfiguration configuration = null;
         try {
             configuration = getNodeConfiguration(configurator);
@@ -195,7 +195,7 @@ public class WebAppHelper {
         return node;
     }
 
-    public static void stop(Configurator configurator) {
+    public static void stop(WebContextConfigurator configurator) {
         Node node = (Node)configurator.getAttribute(SCA_NODE_ATTRIBUTE);
         if (node != null) {
             node.stop();
@@ -215,7 +215,7 @@ public class WebAppHelper {
         return factory;
     }
 
-    private static String getDefaultComposite(Configurator configurator) {
+    private static String getDefaultComposite(WebContextConfigurator configurator) {
         String name = configurator.getName();
         if ("".equals(name)) {
             return "/WEB-INF/web.composite";
@@ -224,7 +224,7 @@ public class WebAppHelper {
         }
     }
 
-    private static NodeConfiguration getNodeConfiguration(Configurator configurator) throws IOException,
+    private static NodeConfiguration getNodeConfiguration(WebContextConfigurator configurator) throws IOException,
         URISyntaxException {
         NodeConfiguration configuration = null;
         String nodeConfigURI = configurator.getInitParameter(NODE_CONFIGURATION);
@@ -234,6 +234,11 @@ public class WebAppHelper {
             configuration = factory.loadConfiguration(url.openStream(), url);
         } else {
             configuration = factory.createNodeConfiguration();
+            
+            configuration.setAttribute(ServletContext.class.getName(), servletContext);
+            if(configurator instanceof ServletConfigurator) {
+                configuration.setAttribute(Servlet.class.getName(), ((ServletConfigurator) configurator).servlet);
+            }
 
             boolean explicitContributions = false;
             Enumeration<String> names = configurator.getInitParameterNames();
@@ -320,36 +325,19 @@ public class WebAppHelper {
         return configuration;
     }
 
-    static Configurator getConfigurator(FilterConfig config) {
+    public static WebContextConfigurator getConfigurator(FilterConfig config) {
         return new FilterConfigurator(config);
     }
 
-    static Configurator getConfigurator(ServletContext context) {
+    public static WebContextConfigurator getConfigurator(ServletContext context) {
         return new ServletContextConfigurator(context);
     }
 
-    static Configurator getConfigurator(Servlet context) {
+    public static WebContextConfigurator getConfigurator(Servlet context) {
         return new ServletConfigurator(context);
     }
 
-    /**
-     * The interface that represents a given scope (Webapp vs Servlet) that provides the configuration of the Tuscany node
-     */
-    public static interface Configurator {
-        String getInitParameter(String name);
-
-        Enumeration<String> getInitParameterNames();
-
-        ServletContext getServletContext();
-
-        void setAttribute(String name, Object value);
-
-        <T> T getAttribute(String name);
-
-        String getName();
-    }
-
-    public static class FilterConfigurator implements Configurator {
+    public static class FilterConfigurator implements WebContextConfigurator {
         private FilterConfig config;
 
         public FilterConfigurator(FilterConfig config) {
@@ -395,7 +383,7 @@ public class WebAppHelper {
 
     }
 
-    public static class ServletContextConfigurator implements Configurator {
+    public static class ServletContextConfigurator implements WebContextConfigurator {
         private ServletContext context;
 
         public ServletContextConfigurator(ServletContext context) {
@@ -428,11 +416,13 @@ public class WebAppHelper {
         }
     }
 
-    public static class ServletConfigurator implements Configurator {
+    public static class ServletConfigurator implements WebContextConfigurator {
         private ServletConfig config;
+        private Servlet servlet;
 
         public ServletConfigurator(Servlet servlet) {
             super();
+            this.servlet = servlet;
             this.config = servlet.getServletConfig();
         }
 

Added: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java?rev=1083938&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java Mon Mar 21 20:28:20 2011
@@ -0,0 +1,22 @@
+package org.apache.tuscany.sca.host.webapp;
+
+import java.util.Enumeration;
+
+import javax.servlet.ServletContext;
+
+/**
+ * The interface that represents a given scope (Webapp vs Servlet) that provides the configuration of the Tuscany node
+ */
+public interface WebContextConfigurator {
+    String getInitParameter(String name);
+
+    Enumeration<String> getInitParameterNames();
+
+    ServletContext getServletContext();
+
+    void setAttribute(String name, Object value);
+
+    <T> T getAttribute(String name);
+
+    String getName();
+}
\ No newline at end of file

Propchange: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebContextConfigurator.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/META-INF/MANIFEST.MF?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/META-INF/MANIFEST.MF Mon Mar 21 20:28:20 2011
@@ -40,17 +40,17 @@ Import-Package: org.oasisopen.sca;versio
  org.apache.tuscany.sca.policy;version="2.0.0",
  org.apache.tuscany.sca.provider;version="2.0.0",
  org.apache.tuscany.sca.runtime;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
+ org.springframework.beans,
+ org.springframework.beans.factory,
+ org.springframework.beans.factory.annotation,
+ org.springframework.beans.factory.config,
+ org.springframework.beans.factory.support,
+ org.springframework.beans.factory.xml,
+ org.springframework.context,
+ org.springframework.context.support,
+ org.springframework.core,
+ org.springframework.core.io,
+ org.springframework.util
 Export-Package: org.apache.tuscany.sca.implementation.spring.context;version="2.0.0";
   uses:="org.springframework.beans.factory.support,
    org.springframework.context.support,

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/pom.xml?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/pom.xml Mon Mar 21 20:28:20 2011
@@ -42,19 +42,19 @@
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-core</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
     </dependencies>

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/context/SpringApplicationContextAccessor.java Mon Mar 21 20:28:20 2011
@@ -19,6 +19,7 @@
 
 package org.apache.tuscany.sca.implementation.spring.context;
 
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.springframework.context.ApplicationContext;
 
 /**
@@ -28,14 +29,9 @@ public interface SpringApplicationContex
     /**
      * Get the parent Spring application context for the hosting environment. This will be used as the parent 
      * application context for implementation.spring components
+     * @param component The Spring component instance
      * @return The parent application context
      */
-    ApplicationContext getParentApplicationContext();
+    ApplicationContext getParentApplicationContext(RuntimeComponent component);
 
-    /**
-     * Set the root Spring application context. This is particually useful for Spring web integration where Spring
-     * creates WebApplicationContext and keeps it in the ServletContext
-     * @param parentApplicationContext The parent application context
-     */
-    void setParentApplicationContext(ApplicationContext parentApplicationContext);
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProviderFactory.java Mon Mar 21 20:28:20 2011
@@ -62,7 +62,7 @@ public class SpringImplementationProvide
     public ImplementationProvider createImplementationProvider(RuntimeComponent component,
                                                                SpringImplementation implementation) {
         ApplicationContext parentApplicationContext =
-            (contextAccessor != null) ? contextAccessor.getParentApplicationContext() : null;
+            (contextAccessor != null) ? contextAccessor.getParentApplicationContext(component) : null;
         SpringImplementationWrapper tie =
             new SpringImplementationWrapper(implementation, parentApplicationContext, component, propertyFactory);
         return new SpringImplementationProvider(component, tie, parentApplicationContext, proxyFactory, propertyFactory);

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/META-INF/MANIFEST.MF?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/META-INF/MANIFEST.MF Mon Mar 21 20:28:20 2011
@@ -11,15 +11,15 @@ Bundle-DocURL: http://www.apache.org/
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
 Import-Package: org.oasisopen.sca;version="2.0.0",
  org.oasisopen.sca.annotation;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
+ org.springframework.beans,
+ org.springframework.beans.factory,
+ org.springframework.beans.factory.annotation,
+ org.springframework.beans.factory.config,
+ org.springframework.beans.factory.support,
+ org.springframework.beans.factory.xml,
+ org.springframework.context,
+ org.springframework.context.support,
+ org.springframework.core,
+ org.springframework.core.io,
+ org.springframework.util
 

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/pom.xml?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/pom.xml Mon Mar 21 20:28:20 2011
@@ -51,19 +51,19 @@
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-core</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-beans</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
     </dependencies>

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/META-INF/MANIFEST.MF?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/META-INF/MANIFEST.MF Mon Mar 21 20:28:20 2011
@@ -10,20 +10,25 @@ Bundle-SymbolicName: org.apache.tuscany.
 Bundle-DocURL: http://www.apache.org/
 Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6
 Import-Package: javax.servlet,
+ org.apache.tuscany.sca.context;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",
  org.apache.tuscany.sca.extensibility;version="2.0.0",
+ org.apache.tuscany.sca.host.webapp;version="2.0.0",
  org.apache.tuscany.sca.implementation.spring;version="2.0.0",
  org.apache.tuscany.sca.implementation.spring.context;version="2.0.0",
+ org.apache.tuscany.sca.node;version="2.0.0",
  org.apache.tuscany.sca.provider;version="2.0.0",
  org.apache.tuscany.sca.runtime;version="2.0.0",
- org.springframework.beans;version="3.0.2.RELEASE",
- org.springframework.beans.factory;version="3.0.2.RELEASE",
- org.springframework.beans.factory.annotation;version="3.0.2.RELEASE",
- org.springframework.beans.factory.config;version="3.0.2.RELEASE",
- org.springframework.beans.factory.support;version="3.0.2.RELEASE",
- org.springframework.beans.factory.xml;version="3.0.2.RELEASE",
- org.springframework.context;version="3.0.2.RELEASE",
- org.springframework.context.support;version="3.0.2.RELEASE",
- org.springframework.core.io;version="3.0.2.RELEASE",
- org.springframework.util;version="3.0.2.RELEASE"
+ org.springframework.beans,
+ org.springframework.beans.factory,
+ org.springframework.beans.factory.annotation,
+ org.springframework.beans.factory.config,
+ org.springframework.beans.factory.support,
+ org.springframework.beans.factory.xml,
+ org.springframework.context,
+ org.springframework.context.support,
+ org.springframework.core.io,
+ org.springframework.util,
+ org.springframework.web.servlet;resolution:=optional
+
 

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/pom.xml?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/pom.xml Mon Mar 21 20:28:20 2011
@@ -35,6 +35,18 @@
             <artifactId>tuscany-implementation-spring-runtime</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-host-webapp</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-core-spi</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
@@ -46,15 +58,21 @@
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
-            <version>3.0.2.RELEASE</version>
+            <version>3.0.5.RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-webmvc</artifactId>
+            <version>3.0.5.RELEASE</version>
         </dependency>
 
         <dependency>
-        	<groupId>javax.servlet</groupId>
-        	<artifactId>servlet-api</artifactId>
-        	<version>2.5</version>
-        	<type>jar</type>
-        	<scope>provided</scope>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <type>jar</type>
+            <scope>provided</scope>
         </dependency>
     </dependencies>
 </project>

Copied: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java (from r1083823, tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java?p2=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java&p1=tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java&r1=1083823&r2=1083938&rev=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/TuscanyServlet.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java Mon Mar 21 20:28:20 2011
@@ -17,29 +17,30 @@
  * under the License.    
  */
 
-package org.apache.tuscany.sca.host.webapp;
+package org.apache.tuscany.sca.host.webapp.spring;
 
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
 
-import org.apache.tuscany.sca.host.webapp.WebAppHelper.Configurator;
+import org.apache.tuscany.sca.host.webapp.WebAppHelper;
+import org.apache.tuscany.sca.host.webapp.WebContextConfigurator;
+import org.springframework.web.servlet.DispatcherServlet;
 
 /**
- * A Servlet that provides a hook to control the lifecycle of Tuscany node
+ * A Servlet that provides a hook to control the lifecycle of Tuscany node and extend Spring Web MVC's DispatcherServlet
  *
  * @version $Rev$ $Date$
  */
-public class TuscanyServlet extends HttpServlet {
+public class TuscanyDispatcherServlet extends DispatcherServlet {
     private static final long serialVersionUID = 1L;
-    private Logger logger = Logger.getLogger(TuscanyServlet.class.getName());
+    private Logger logger = Logger.getLogger(TuscanyDispatcherServlet.class.getName());
 
-    private transient Configurator configurator;
+    private transient WebContextConfigurator configurator;
 
-    public TuscanyServlet() {
+    public TuscanyDispatcherServlet() {
         super();
     }
 
@@ -57,6 +58,7 @@ public class TuscanyServlet extends Http
 
     public void destroy() {
         WebAppHelper.stop(configurator);
+        super.destroy();
     }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java Mon Mar 21 20:28:20 2011
@@ -21,53 +21,42 @@ package org.apache.tuscany.sca.implement
 
 import java.util.logging.Logger;
 
+import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.LifeCycleListener;
-import org.apache.tuscany.sca.host.http.ExtensibleServletHost;
 import org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
+import org.springframework.web.servlet.FrameworkServlet;
 
-public class SpringWebApplicationContextAccessor implements SpringApplicationContextAccessor, LifeCycleListener {
+public class SpringWebApplicationContextAccessor implements SpringApplicationContextAccessor {
     private static Logger log = Logger.getLogger(SpringWebApplicationContextAccessor.class.getName());
-    private ExtensionPointRegistry registry;
-    private ApplicationContext parentApplicationContext;
 
     public SpringWebApplicationContextAccessor(ExtensionPointRegistry registry) {
         super();
-        this.registry = registry;
     }
 
-    @Override
-    public void start() {
-        ExtensibleServletHost servletHost = ExtensibleServletHost.getInstance(registry);
-
-        ServletContext servletContext = servletHost.getServletContext();
-        if (servletContext != null) {
-            parentApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
-            if (parentApplicationContext != null) {
-                log.info("Spring WebApplicationContext is now injected on Tuscany");
+    public ApplicationContext getParentApplicationContext(RuntimeComponent component) {
+        ApplicationContext context = null;
+        Servlet servlet = component.getComponentContext().getCompositeContext().getAttribute(Servlet.class.getName());
+        if (servlet instanceof FrameworkServlet) {
+            context = ((FrameworkServlet)servlet).getWebApplicationContext();
+            if (context != null) {
+                return context;
             }
         }
-
-        if (parentApplicationContext == null) {
-            parentApplicationContext = ApplicationContextAccessorBean.getInstance().getApplicationContext();
+        ServletContext servletContext =
+            component.getComponentContext().getCompositeContext().getAttribute(ServletContext.class.getName());
+        if (servletContext != null) {
+            context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
+            if (context == null) {
+                context = ApplicationContextAccessorBean.getInstance().getApplicationContext();
+            }
         }
-    }
-
-    @Override
-    public void stop() {
-        parentApplicationContext = null;
-    }
-
-    public ApplicationContext getParentApplicationContext() {
-        return parentApplicationContext;
-    }
 
-    public void setParentApplicationContext(ApplicationContext parentApplicationContext) {
-        this.parentApplicationContext = parentApplicationContext;
+        return context;
     }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/NodeConfiguration.java Mon Mar 21 20:28:20 2011
@@ -24,6 +24,7 @@ import java.io.Reader;
 import java.net.URI;
 import java.net.URL;
 import java.util.List;
+import java.util.Map;
 
 import javax.xml.namespace.QName;
 
@@ -103,6 +104,24 @@ public interface NodeConfiguration {
     NodeConfiguration addBinding(BindingConfiguration binding);
     NodeConfiguration addBinding(QName bindingType, String...baseURIs);
     NodeConfiguration addBinding(QName bindingType, URI...baseURIs);
-
+    
     List<Object> getExtensions();
+
+
+    /**
+     * Allow the hosting environment to pass in a map of attributes as context 
+     * @param name The name of the attribute
+     * @param value The value of the attribute
+     * @return
+     */
+    Map<String, Object> getAttributes();
+    
+    /**
+     * Configure an attribute
+     * @param name
+     * @param value
+     * @return
+     */
+    NodeConfiguration setAttribute(String name, Object value);
+
 }

Modified: tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-api/src/main/java/org/apache/tuscany/sca/node/configuration/impl/NodeConfigurationImpl.java Mon Mar 21 20:28:20 2011
@@ -24,7 +24,9 @@ import java.io.Reader;
 import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.xml.namespace.QName;
 
@@ -42,6 +44,8 @@ public class NodeConfigurationImpl imple
     private List<ContributionConfiguration> contributions = new ArrayList<ContributionConfiguration>();
     private List<BindingConfiguration> bindings = new ArrayList<BindingConfiguration>();
     private List<Object> extensions = new ArrayList<Object>();
+    
+    private transient Map<String, Object> attributes = new HashMap<String, Object>();
 
     public String getURI() {
         return uri;
@@ -173,4 +177,13 @@ public class NodeConfigurationImpl imple
         return this;
     }
 
+    public Map<String, Object> getAttributes() {
+        return attributes;
+    }
+    
+    public NodeConfiguration setAttribute(String name, Object value) {
+        attributes.put(name, value);
+        return this;
+    }
+
 }

Modified: tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=1083938&r1=1083937&r2=1083938&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java Mon Mar 21 20:28:20 2011
@@ -136,6 +136,8 @@ public class NodeImpl implements Node {
                                              configuration.getDomainURI(), 
                                              configuration.getURI(),
                                              nodeFactory.getDeployer().getSystemDefinitions());
+                    // Pass down the context attributes
+                    compositeContext.getAttributes().putAll(configuration.getAttributes());
                 }
                 
             } finally {