You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2008/03/31 22:42:06 UTC

svn commit: r643141 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/ components/jetspeed-portal/src/main/java/org/apache/jet...

Author: ate
Date: Mon Mar 31 13:42:02 2008
New Revision: 643141

URL: http://svn.apache.org/viewvc?rev=643141&view=rev
Log:
Many changes how to instatiate a Jetspeed Spring container: everything is now handled by the SpringComponentManager.
This new SpringComponentManager replaces all standalone Spring application context instantiations (like for test cases and utilities/tools).
Among things, it now ensures:
- the new Spring assembly filtering is enabled (if provided with a filter that is)
- proper (re)starting and stopping of the container
- providing the context with boot level properties (like ${applicationRoot}) without needing to (mis)use global scoped System.setProperty(<property>) calls
  (well, that's now delegated to the extended and filtering Spring ApplicationContext implementations)

Note: this commit will break many testcases, all of which I already have fixed/updated locally and will commit (together with several other improvements) shortly.

Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/SpringComponentManager.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/JetspeedServlet.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/registration/RegistrationTool.java
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-spring.xml

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/SpringComponentManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/SpringComponentManager.java?rev=643141&r1=643140&r2=643141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/SpringComponentManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/SpringComponentManager.java Mon Mar 31 13:42:02 2008
@@ -16,7 +16,6 @@
  */
 package org.apache.jetspeed.components;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -27,23 +26,18 @@
 import javax.servlet.ServletContext;
 
 import org.apache.jetspeed.engine.JetspeedEngineConstants;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.support.FileSystemXmlApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.XmlWebApplicationContext;
 
 /**
  * <p>
  * SpringComponentManager
  * </p>
- * <p>
- * 
- * </p>
  * 
  * @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
+ * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
  * @version $Id$
  * 
  */
@@ -59,27 +53,30 @@
 
     private boolean started = false;
 
-    public SpringComponentManager(String[] bootConfigs, String[] appConfigs, ServletContext servletContext,
+    public SpringComponentManager(JetspeedBeanDefinitionFilter filter, String[] bootConfigs, String[] appConfigs, ServletContext servletContext,
             String appRoot)
     {
-        File appRootDir = new File(appRoot);
-        System.setProperty(JetspeedEngineConstants.APPLICATION_ROOT_KEY, appRootDir.getAbsolutePath());
+        this(filter, bootConfigs, appConfigs, servletContext, appRoot, null);
+    }
 
+    public SpringComponentManager(JetspeedBeanDefinitionFilter filter, String[] bootConfigs, String[] appConfigs, ServletContext servletContext,
+            String appRoot, Properties bootProperties)
+    {
+        if (bootProperties == null)
+        {
+            bootProperties = new Properties();
+        }
+        bootProperties.setProperty(JetspeedEngineConstants.APPLICATION_ROOT_KEY, appRoot);
+        
         if (bootConfigs != null && bootConfigs.length > 0)
         {
-            bootCtx = new XmlWebApplicationContext();
-            ((XmlWebApplicationContext) bootCtx).setServletContext(servletContext);
-            ((XmlWebApplicationContext) bootCtx).setConfigLocations(bootConfigs);
+            bootCtx = new FilteringXmlWebApplicationContext(filter, bootConfigs, bootProperties, servletContext);
         }
         else
         {
-            bootCtx = new GenericApplicationContext();
+            bootCtx = new FileSystemXmlApplicationContext();
         }
-
-        appContext = new XmlWebApplicationContext();
-        ((XmlWebApplicationContext) appContext).setParent(bootCtx);
-        ((XmlWebApplicationContext) appContext).setServletContext(servletContext);
-        ((XmlWebApplicationContext) appContext).setConfigLocations(appConfigs);
+        appContext = new FilteringXmlWebApplicationContext(filter, appConfigs, bootProperties, servletContext, bootCtx);
 
         factories = new ArrayList();
         factories.add(appContext);
@@ -87,38 +84,45 @@
         servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, appContext);
     }
 
-    public SpringComponentManager(String[] bootConfigs, String[] appConfigs, ServletContext servletContext,
-            String appRoot, Map preconfiguredBeans)
-    {
-        this(bootConfigs, appConfigs, servletContext, appRoot);
-        this.preconfiguredBeans = preconfiguredBeans;
+    public SpringComponentManager(JetspeedBeanDefinitionFilter filter, String[] bootConfigs, String[] appConfigs, String appRoot, boolean fileSystem)
+    {        
+        this(filter, bootConfigs, appConfigs, appRoot, null, fileSystem);
     }
-
     
-    public SpringComponentManager(String[] bootConfigs, String[] appConfigs, String appRoot)
+    public SpringComponentManager(JetspeedBeanDefinitionFilter filter, String[] bootConfigs, String[] appConfigs, String appRoot, Properties bootProperties, boolean fileSystem)
     {        
-        PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
-        Properties p = new Properties();
-        //p.setProperty(APPLICATION_ROOT_KEY,appRootDir.getAbsolutePath());
-        ppc.setProperties(p);
+        if (bootProperties == null)
+        {
+            bootProperties = new Properties();
+        }
+        bootProperties.setProperty(JetspeedEngineConstants.APPLICATION_ROOT_KEY, appRoot);
         
         if (bootConfigs != null && bootConfigs.length > 0)
         {
-            bootCtx = new FileSystemXmlApplicationContext(bootConfigs, false);
-            bootCtx.addBeanFactoryPostProcessor(ppc);
-            bootCtx.refresh();
+            if (fileSystem)
+            {
+                bootCtx = new FilteringFileSystemXmlApplicationContext(filter, bootConfigs, bootProperties);
+            }
+            else
+            {
+                bootCtx = new FilteringClassPathXmlApplicationContext(filter, bootConfigs, bootProperties);
+            }
         }
         else
         {
-            bootCtx = new GenericApplicationContext();
+            bootCtx = new FileSystemXmlApplicationContext();
         }
-
-        appContext = new FileSystemXmlApplicationContext(appConfigs, false, bootCtx);
-        appContext.addBeanFactoryPostProcessor(ppc);
-        appContext.refresh();
-        factories = new ArrayList();
-        factories.add(appContext);
         
+        if (fileSystem)
+        {
+            appContext = new FilteringFileSystemXmlApplicationContext(filter, appConfigs, bootProperties, bootCtx);
+        }
+        else
+        {
+            appContext = new FilteringClassPathXmlApplicationContext(filter, appConfigs, bootProperties, bootCtx);
+        }
+        factories = new ArrayList();
+        factories.add(appContext);        
     }
     
     /**
@@ -248,5 +252,4 @@
         appContext.refresh();
         started = true;
     }
-
 }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/JetspeedServlet.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/JetspeedServlet.java?rev=643141&r1=643140&r2=643141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/JetspeedServlet.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/engine/JetspeedServlet.java Mon Mar 31 13:42:02 2008
@@ -316,7 +316,7 @@
         String[] bootConfigs = new String[] {"/WEB-INF/assembly/boot/*.xml"};
         String[] appConfigs =  new String[] {assemblyDir+"/*"+assemblyFileExtension, assemblyDir+"/override/*"+assemblyFileExtension};
         ServletContext servletContext = servletConfig.getServletContext();
-        SpringComponentManager cm = new SpringComponentManager(bootConfigs, appConfigs, servletContext, appRoot);      
+        SpringComponentManager cm = new SpringComponentManager(null, bootConfigs, appConfigs, servletContext, appRoot);      
         
         return cm;        
     }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/registration/RegistrationTool.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/registration/RegistrationTool.java?rev=643141&r1=643140&r2=643141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/registration/RegistrationTool.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/registration/RegistrationTool.java Mon Mar 31 13:42:02 2008
@@ -20,16 +20,14 @@
 import java.io.FileReader;
 
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.jetspeed.components.SpringComponentManager;
 import org.apache.jetspeed.components.portletregistry.PortletRegistry;
-import org.apache.jetspeed.engine.JetspeedEngineConstants;
 import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
 import org.apache.jetspeed.om.common.portlet.PortletApplication;
 import org.apache.jetspeed.om.common.servlet.MutableWebApplication;
 import org.apache.jetspeed.util.descriptor.ExtendedPortletMetadata;
 import org.apache.jetspeed.util.descriptor.PortletApplicationDescriptor;
 import org.apache.jetspeed.util.descriptor.WebApplicationDescriptor;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
  * <p>
@@ -54,21 +52,12 @@
         try
         {
             File appRootDir = new File("./src/webapp");            
-            System.setProperty(JetspeedEngineConstants.APPLICATION_ROOT_KEY, appRootDir.getAbsolutePath());            
             configuration.load(fileName);        
             String [] bootAssemblies = configuration.getStringArray("boot.assemblies");
-            String [] assemblies = configuration.getStringArray("assemblies");            
-            ClassPathXmlApplicationContext ctx;            
-            
-            if (bootAssemblies != null)
-            {
-                ApplicationContext bootContext = new ClassPathXmlApplicationContext(bootAssemblies, true);
-                ctx = new ClassPathXmlApplicationContext(assemblies, true, bootContext);
-            }
-            else
-            {
-                ctx = new ClassPathXmlApplicationContext(assemblies, true);
-            }
+            String [] assemblies = configuration.getStringArray("assemblies");      
+            SpringComponentManager scm = new SpringComponentManager(null, bootAssemblies, assemblies, appRootDir.getAbsolutePath(), false);
+
+            scm.start();
             
             boolean overwriteApps = configuration.getBoolean("overwrite.apps", true);
             String registryBean = configuration.getString("registry.component", "");
@@ -76,7 +65,7 @@
             String[] appDescriptors = configuration.getStringArray("descriptors");
             String[] webappDescriptors = configuration.getStringArray("webapp.descriptors");
             String[] extendedDescriptors = configuration.getStringArray("extended.descriptors");
-            PortletRegistry registry = (PortletRegistry)ctx.getBean(registryBean);
+            PortletRegistry registry = (PortletRegistry)scm.getComponent(registryBean);
             RegistrationTool tool = new RegistrationTool(registry, overwriteApps);
             
             for (int ix=0; ix < appNames.length; ix++)

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-spring.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-spring.xml?rev=643141&r1=643140&r2=643141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-spring.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-spring.xml Mon Mar 31 13:42:02 2008
@@ -181,6 +181,9 @@
                 <value>file:///${applicationRoot}/WEB-INF/conf/override.properties</value>
             </list>
         </property>
+        <property name="properties">
+          <value>applicationRoot=${applicationRoot}</value>
+        </property>
     </bean>
 
     <!-- HeaderResource Factory -->



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org