You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/07/29 18:54:19 UTC

svn commit: r980505 - in /tuscany/sca-java-2.x/trunk/modules: implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ implementation-spring-webapp/src/main/resources/META-INF/services/ implementation-spring-webap...

Author: rfeng
Date: Thu Jul 29 16:54:18 2010
New Revision: 980505

URL: http://svn.apache.org/viewvc?rev=980505&view=rev
Log:
Use a utility instead of ModuleActivator for Spring application context access

Added:
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java   (contents, props changed)
      - copied, changed from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessor.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java   (contents, props changed)
      - copied, changed from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebModuleActivator.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor
      - copied, changed from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
    tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextAccessor.java   (contents, props changed)
      - copied, changed from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextHelper.java
Removed:
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessor.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebModuleActivator.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
    tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextHelper.java
Modified:
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml
    tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java
    tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java

Copied: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java (from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessor.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/ApplicationContextAccessorBean.java?p2=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java&p1=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessor.java&r1=980273&r2=980505&rev=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorBean.java Thu Jul 29 16:54:18 2010
@@ -28,15 +28,15 @@ import org.springframework.context.suppo
  * 
  * The Spring bean definition file is: org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml
  */
-public class ApplicationContextAccessor extends ApplicationObjectSupport implements ApplicationContextAware {
+public class ApplicationContextAccessorBean extends ApplicationObjectSupport implements ApplicationContextAware {
     public final static String BEAN_ID = "tuscanySpringApplicationContextAccessor";
-    private final static ApplicationContextAccessor INSTANCE = new ApplicationContextAccessor();
+    private final static ApplicationContextAccessorBean INSTANCE = new ApplicationContextAccessorBean();
 
-    private ApplicationContextAccessor() {
+    private ApplicationContextAccessorBean() {
     }
 
     // Spring static factory method to create the singleton instance
-    public static ApplicationContextAccessor getInstance() {
+    public static ApplicationContextAccessorBean getInstance() {
         return INSTANCE;
     }
 

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

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

Copied: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java (from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebModuleActivator.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?p2=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java&p1=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebModuleActivator.java&r1=980273&r2=980505&rev=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebModuleActivator.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/java/org/apache/tuscany/sca/implementation/spring/webapp/SpringWebApplicationContextAccessor.java Thu Jul 29 16:54:18 2010
@@ -24,17 +24,18 @@ import java.util.logging.Logger;
 import javax.servlet.ServletContext;
 
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.ModuleActivator;
+import org.apache.tuscany.sca.core.LifeCycleListener;
 import org.apache.tuscany.sca.host.http.ExtensibleServletHost;
-import org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextHelper;
+import org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor;
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
-public class SpringWebModuleActivator implements ModuleActivator {
-    private static Logger log = Logger.getLogger(SpringWebModuleActivator.class.getName());
+public class SpringWebApplicationContextAccessor implements SpringApplicationContextAccessor, LifeCycleListener {
+    private static Logger log = Logger.getLogger(SpringWebApplicationContextAccessor.class.getName());
     private ExtensionPointRegistry registry;
+    private ApplicationContext parentApplicationContext;
 
-    public SpringWebModuleActivator(ExtensionPointRegistry registry) {
+    public SpringWebApplicationContextAccessor(ExtensionPointRegistry registry) {
         super();
         this.registry = registry;
     }
@@ -42,21 +43,31 @@ public class SpringWebModuleActivator im
     @Override
     public void start() {
         ExtensibleServletHost servletHost = ExtensibleServletHost.getInstance(registry);
-        SpringApplicationContextHelper contextHelper = SpringApplicationContextHelper.getInstance(registry);
 
         ServletContext servletContext = servletHost.getServletContext();
         if (servletContext != null) {
-            ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
-            if (context != null) {
+            parentApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
+            if (parentApplicationContext != null) {
                 log.info("Spring WebApplicationContext is now injected on Tuscany");
-                contextHelper.setParentApplicationContext(context);
             }
         }
+
+        if (parentApplicationContext == null) {
+            parentApplicationContext = ApplicationContextAccessorBean.getInstance().getApplicationContext();
+        }
     }
 
     @Override
     public void stop() {
-        // NO-OP
+        parentApplicationContext = null;
+    }
+
+    public Object getParentApplicationContext() {
+        return parentApplicationContext;
+    }
+
+    public void setParentApplicationContext(Object parentApplicationContext) {
+        this.parentApplicationContext = (ApplicationContext) parentApplicationContext;
     }
 
 }

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

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

Copied: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor (from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor?p2=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor&p1=tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator&r1=980273&r2=980505&rev=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/META-INF/services/org.apache.tuscany.sca.implementation.spring.invocation.SpringApplicationContextAccessor Thu Jul 29 16:54:18 2010
@@ -14,4 +14,4 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License. 
-org.apache.tuscany.sca.implementation.spring.webapp.SpringWebModuleActivator
\ No newline at end of file
+org.apache.tuscany.sca.implementation.spring.webapp.SpringWebApplicationContextAccessor
\ No newline at end of file

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml?rev=980505&r1=980504&r2=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/main/resources/org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml Thu Jul 29 16:54:18 2010
@@ -22,7 +22,7 @@
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
     <bean id="tuscanySpringApplicationContextAccessor"
-        class="org.apache.tuscany.sca.implementation.spring.webapp.ApplicationContextAccessor"
+        class="org.apache.tuscany.sca.implementation.spring.webapp.ApplicationContextAccessorBean"
         scope="singleton" factory-method="getInstance">
     </bean>
     

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java?rev=980505&r1=980504&r2=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring-webapp/src/test/java/org/apache/tuscany/sca/implementation/spring/webapp/ApplicationContextAccessorTestCase.java Thu Jul 29 16:54:18 2010
@@ -31,9 +31,9 @@ public class ApplicationContextAccessorT
         ApplicationContext context =
             new ClassPathXmlApplicationContext(
                                                new String[] {"org/apache/tuscany/sca/implementation/spring/webapp/spring-webapp-context.xml"});
-        Object accessor = context.getBean(ApplicationContextAccessor.BEAN_ID);
-        Assert.assertSame(ApplicationContextAccessor.getInstance(), accessor);
-        ApplicationContextAccessor contextAccessor = (ApplicationContextAccessor)accessor;
+        Object accessor = context.getBean(ApplicationContextAccessorBean.BEAN_ID);
+        Assert.assertSame(ApplicationContextAccessorBean.getInstance(), accessor);
+        ApplicationContextAccessorBean contextAccessor = (ApplicationContextAccessorBean)accessor;
         Assert.assertSame(context, contextAccessor.getApplicationContext());
 
     }

Copied: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextAccessor.java (from r980273, tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextHelper.java)
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextAccessor.java?p2=tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextAccessor.java&p1=tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextHelper.java&r1=980273&r2=980505&rev=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextHelper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringApplicationContextAccessor.java Thu Jul 29 16:54:18 2010
@@ -19,38 +19,21 @@
 
 package org.apache.tuscany.sca.implementation.spring.invocation;
 
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.UtilityExtensionPoint;
-
 /**
  * A utility to receive the parent Spring application context 
  */
-public class SpringApplicationContextHelper {
-    private Object parentApplicationContext;
-
-    public SpringApplicationContextHelper(ExtensionPointRegistry registry) {
-    }
-
-    public static SpringApplicationContextHelper getInstance(ExtensionPointRegistry registry) {
-        UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
-        return utilities.getUtility(SpringApplicationContextHelper.class);
-    }
-
+public interface SpringApplicationContextAccessor {
     /**
      * Get the parent Spring application context for the hosting environment. This will be used as the parent 
      * application context for implementation.spring components
-     * @return
+     * @return The parent application context
      */
-    public Object getParentApplicationContext() {
-        return parentApplicationContext;
-    }
+    Object getParentApplicationContext();
 
     /**
      * 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
+     * @param parentApplicationContext The parent application context
      */
-    public void setParentApplicationContext(Object parentApplicationContext) {
-        this.parentApplicationContext = parentApplicationContext;
-    }
+    void setParentApplicationContext(Object parentApplicationContext);
 }

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

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

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java?rev=980505&r1=980504&r2=980505&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java Thu Jul 29 16:54:18 2010
@@ -36,7 +36,7 @@ import org.apache.tuscany.sca.runtime.Ru
 public class SpringImplementationProviderFactory implements ImplementationProviderFactory<SpringImplementation> {
     private ProxyFactory proxyFactory;
     private PropertyValueFactory propertyFactory;
-    private SpringApplicationContextHelper contextHelper;
+    private SpringApplicationContextAccessor contextAccessor;
 
     /**
      * Simple constructor
@@ -44,9 +44,10 @@ public class SpringImplementationProvide
      */
     public SpringImplementationProviderFactory(ExtensionPointRegistry registry) {
         super();
-        contextHelper = SpringApplicationContextHelper.getInstance(registry);
+        UtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
+        contextAccessor = utilities.getUtility(SpringApplicationContextAccessor.class);
         proxyFactory = ExtensibleProxyFactory.getInstance(registry);
-        propertyFactory = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(PropertyValueFactory.class);
+        propertyFactory = utilities.getUtility(PropertyValueFactory.class);
     }
 
     /**
@@ -58,8 +59,10 @@ public class SpringImplementationProvide
      */
     public ImplementationProvider createImplementationProvider(RuntimeComponent component,
                                                                SpringImplementation implementation) {
-        Object parentApplicationContext = contextHelper.getParentApplicationContext();
-        return new SpringImplementationProvider(component, implementation, parentApplicationContext, proxyFactory, propertyFactory);
+        Object parentApplicationContext =
+            (contextAccessor != null) ? contextAccessor.getParentApplicationContext() : null;
+        return new SpringImplementationProvider(component, implementation, parentApplicationContext, proxyFactory,
+                                                propertyFactory);
     }
 
     /**