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);