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

URL: http://svn.apache.org/viewvc?rev=1083940&view=rev
Log:
Bring up the servlet-scoped node start/stop with Spring MVC

Modified:
    
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/WebAppHelper.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.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-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.java
    
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/impl/NodeConfigurationImpl.java
    
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java

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=1083940&r1=1083939&r2=1083940&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:30 2011
@@ -46,7 +46,8 @@ public class TuscanyServlet extends Http
     public void init(ServletConfig config) throws ServletException {
         try {
             super.init(config);
-            WebAppHelper.init(WebAppHelper.getConfigurator(this));
+            configurator = WebAppHelper.getConfigurator(this);
+            WebAppHelper.init(configurator);
         } catch (Throwable e) {
             logger.log(Level.SEVERE, e.getMessage(), e);
             configurator.getServletContext().log(e.getMessage(), e);

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=1083940&r1=1083939&r2=1083940&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:30 2011
@@ -196,7 +196,10 @@ public class WebAppHelper {
     }
 
     public static void stop(WebContextConfigurator configurator) {
-        Node node = (Node)configurator.getAttribute(SCA_NODE_ATTRIBUTE);
+        Node node = null;
+        if (configurator != null) {
+            node = (Node)configurator.getAttribute(SCA_NODE_ATTRIBUTE);
+        }
         if (node != null) {
             node.stop();
             configurator.setAttribute(SCA_NODE_ATTRIBUTE, null);
@@ -234,11 +237,6 @@ 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();
@@ -322,6 +320,10 @@ public class WebAppHelper {
                 }
             }
         }
+        configuration.setAttribute(ServletContext.class.getName(), 
servletContext);
+        if(configurator instanceof ServletConfigurator) {
+            configuration.setAttribute(Servlet.class.getName(), 
((ServletConfigurator) configurator).servlet);
+        }
         return configuration;
     }
 
@@ -428,11 +430,14 @@ public class WebAppHelper {
 
         public String getInitParameter(String name) {
             String value = config.getInitParameter(name);
+            return value;
+            /*
             if (value == null) {
                 return config.getServletContext().getInitParameter(name);
             } else {
                 return value;
             }
+            */
         }
 
         public Enumeration<String> getInitParameterNames() {

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.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/SpringImplementationProvider.java?rev=1083940&r1=1083939&r2=1083940&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationProvider.java
 Mon Mar 21 20:28:30 2011
@@ -20,6 +20,7 @@ package org.apache.tuscany.sca.implement
 
 import org.apache.tuscany.sca.context.PropertyValueFactory;
 import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import 
org.apache.tuscany.sca.implementation.spring.context.SpringApplicationContextAccessor;
 import 
org.apache.tuscany.sca.implementation.spring.context.SpringContextWrapper;
 import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.invocation.Invoker;
@@ -34,6 +35,8 @@ import org.springframework.context.Appli
  */
 public class SpringImplementationProvider implements ImplementationProvider {
     private RuntimeComponent component;
+    private SpringImplementationWrapper implementation;
+    private SpringApplicationContextAccessor contextAccessor;
 
     // A Spring application context object
     private SpringContextWrapper springContext;
@@ -46,13 +49,13 @@ public class SpringImplementationProvide
      */
     public SpringImplementationProvider(RuntimeComponent component,
                                         SpringImplementationWrapper 
implementation,
-                                        ApplicationContext 
parentApplicationContext,
                                         ProxyFactory proxyService,
-                                        PropertyValueFactory 
propertyValueObjectFactory) {
+                                        PropertyValueFactory 
propertyValueObjectFactory,
+                                        SpringApplicationContextAccessor 
contextAccessor) {
         super();
         this.component = component;
-
-        springContext = new SpringContextWrapper(implementation, 
implementation.getResource());
+        this.implementation = implementation;
+        this.contextAccessor = contextAccessor;
 
     } // end constructor
 
@@ -68,6 +71,10 @@ public class SpringImplementationProvide
      * Start this Spring implementation instance
      */
     public void start() {
+        ApplicationContext parentApplicationContext =
+            (contextAccessor == null) ? null : 
contextAccessor.getParentApplicationContext(component);
+        implementation.setParentApplicationContext(parentApplicationContext);
+        springContext = new SpringContextWrapper(implementation, 
implementation.getResource());
         springContext.start();
     }
 

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=1083940&r1=1083939&r2=1083940&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:30 2011
@@ -28,7 +28,6 @@ import org.apache.tuscany.sca.implementa
 import org.apache.tuscany.sca.provider.ImplementationProvider;
 import org.apache.tuscany.sca.provider.ImplementationProviderFactory;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.springframework.context.ApplicationContext;
 
 /**
  * ImplementationProviderFactory for Spring implementation type
@@ -61,11 +60,10 @@ public class SpringImplementationProvide
      */
     public ImplementationProvider 
createImplementationProvider(RuntimeComponent component,
                                                                
SpringImplementation implementation) {
-        ApplicationContext parentApplicationContext =
-            (contextAccessor != null) ? 
contextAccessor.getParentApplicationContext(component) : null;
+
         SpringImplementationWrapper tie =
-            new SpringImplementationWrapper(implementation, 
parentApplicationContext, component, propertyFactory);
-        return new SpringImplementationProvider(component, tie, 
parentApplicationContext, proxyFactory, propertyFactory);
+            new SpringImplementationWrapper(implementation, component, 
propertyFactory);
+        return new SpringImplementationProvider(component, tie, proxyFactory, 
propertyFactory, contextAccessor);
     }
 
     /**

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.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/SpringImplementationWrapper.java?rev=1083940&r1=1083939&r2=1083940&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-runtime/src/main/java/org/apache/tuscany/sca/implementation/spring/provider/SpringImplementationWrapper.java
 Mon Mar 21 20:28:30 2011
@@ -42,13 +42,11 @@ public class SpringImplementationWrapper
     private PropertyValueFactory propertyFactory;
 
     public SpringImplementationWrapper(SpringImplementation implementation,
-                                   ApplicationContext parentApplicationContext,
                                    RuntimeComponent component,
                                    PropertyValueFactory propertyFactory) {
         this.implementation = implementation;
         this.component = component;
         this.propertyFactory = propertyFactory;
-        this.parentApplicationContext = parentApplicationContext;
     }
 
     public String getURI() {
@@ -155,4 +153,8 @@ public class SpringImplementationWrapper
         return parentApplicationContext;
     }
 
+    public void setParentApplicationContext(ApplicationContext 
parentApplicationContext) {
+        this.parentApplicationContext = parentApplicationContext;
+    }
+
 }

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.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?rev=1083940&r1=1083939&r2=1083940&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/spring/TuscanyDispatcherServlet.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:30 2011
@@ -48,7 +48,8 @@ public class TuscanyDispatcherServlet ex
     public void init(ServletConfig config) throws ServletException {
         try {
             super.init(config);
-            WebAppHelper.init(WebAppHelper.getConfigurator(this));
+            configurator = WebAppHelper.getConfigurator(this);
+            WebAppHelper.init(configurator);
         } catch (Throwable e) {
             logger.log(Level.SEVERE, e.getMessage(), e);
             configurator.getServletContext().log(e.getMessage(), e);

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=1083940&r1=1083939&r2=1083940&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:30 2011
@@ -42,8 +42,10 @@ public class SpringWebApplicationContext
         ApplicationContext context = null;
         Servlet servlet = 
component.getComponentContext().getCompositeContext().getAttribute(Servlet.class.getName());
         if (servlet instanceof FrameworkServlet) {
-            context = ((FrameworkServlet)servlet).getWebApplicationContext();
+            FrameworkServlet frameworkServlet = (FrameworkServlet)servlet;
+            context = frameworkServlet.getWebApplicationContext();
             if (context != null) {
+                log.info("Spring application context is found for servlet: " + 
frameworkServlet.getServletName());
                 return context;
             }
         }

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=1083940&r1=1083939&r2=1083940&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:30 2011
@@ -117,11 +117,19 @@ public class NodeConfigurationImpl imple
     }
 
     public NodeConfiguration addContribution(String contributionURI, URL 
location) {
-        return addContribution(contributionURI, location.toString());
+        String url = null;
+        if (location != null) {
+            url = location.toString();
+        }
+        return addContribution(contributionURI, url);
     }
 
     public NodeConfiguration addContribution(URI contributionURI, URL 
location) {
-        return addContribution(contributionURI.toString(), 
location.toString());
+        String url = null;
+        if (location != null) {
+            url = location.toString();
+        }
+        return addContribution(contributionURI.toString(), url);
     }
 
     public NodeConfiguration addContribution(URL... locations) {

Modified: 
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.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/NodeFactoryImpl.java?rev=1083940&r1=1083939&r2=1083940&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
 Mon Mar 21 20:28:30 2011
@@ -336,10 +336,13 @@ public class NodeFactoryImpl extends Nod
             URI contributionURI = createURI(contrib.getURI());
 
             URI uri = createURI(contrib.getLocation());
-            if (uri.getScheme() == null) {
+            if (uri != null && uri.getScheme() == null) {
                 uri = new File(contrib.getLocation()).toURI();
             }
-            URL contributionURL = uri.toURL();
+            URL contributionURL = null;
+            if (uri != null) {
+                contributionURL = uri.toURL();
+            }
 
             // Load the contribution
             logger.log(quietLogging? Level.FINE : Level.INFO, "Loading 
contribution: " + contributionURL);


Reply via email to