You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/01/21 00:59:11 UTC

svn commit: r498215 - in /struts/struts2/trunk/core/src: main/java/org/apache/struts2/config/ main/java/org/apache/struts2/dispatcher/ main/java/org/apache/struts2/portlet/dispatcher/ test/java/org/apache/struts2/config/ test/java/org/apache/struts2/po...

Author: mrdon
Date: Sat Jan 20 15:59:10 2007
New Revision: 498215

URL: http://svn.apache.org/viewvc?view=rev&rev=498215
Log:
Split properties loading so that struts.properties can override plugin properties
WW-1666

Added:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultPropertiesProvider.java
Modified:
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/LegacyPropertiesConfigurationProvider.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
    struts/struts2/trunk/core/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/SettingsTest.java
    struts/struts2/trunk/core/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/BeanSelectionProvider.java Sat Jan 20 15:59:10 2007
@@ -162,6 +162,10 @@
         if ("true".equalsIgnoreCase(props.getProperty(StrutsConstants.STRUTS_DEVMODE))) {
             props.setProperty(StrutsConstants.STRUTS_I18N_RELOAD, "true");
             props.setProperty(StrutsConstants.STRUTS_CONFIGURATION_XML_RELOAD, "true");
+            // Convert struts properties into ones that xwork expects
+            props.setProperty("devMode", "true");
+        } else {
+            props.setProperty("devMode", "false");
         }
     }
     

Added: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultPropertiesProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultPropertiesProvider.java?view=auto&rev=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultPropertiesProvider.java (added)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultPropertiesProvider.java Sat Jan 20 15:59:10 2007
@@ -0,0 +1,52 @@
+/*
+ * $Id: DefaultActionMapper.java 498085 2007-01-20 08:13:11Z mrdon $
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2.config;
+
+import com.opensymphony.xwork2.config.Configuration;
+import com.opensymphony.xwork2.config.ConfigurationException;
+import com.opensymphony.xwork2.inject.ContainerBuilder;
+import com.opensymphony.xwork2.util.location.LocatableProperties;
+
+/**
+ * Loads the default properties, separate from the usual struts.properties loading
+ */
+public class DefaultPropertiesProvider extends LegacyPropertiesConfigurationProvider {
+
+    public void destroy() {
+    }
+
+    public void init(Configuration configuration) throws ConfigurationException {
+    }
+
+    public void register(ContainerBuilder builder, LocatableProperties props)
+            throws ConfigurationException {
+        
+        Settings defaultSettings = null;
+        try {
+            defaultSettings = new PropertiesSettings("org/apache/struts2/default");
+        } catch (Exception e) {
+            throw new ConfigurationException("Could not find or error in org/apache/struts2/default.properties", e);
+        }
+        
+        loadSettings(props, defaultSettings);
+    }
+
+}

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/DefaultSettings.java Sat Jan 20 15:59:10 2007
@@ -69,12 +69,6 @@
             log.warn("DefaultSettings: Could not find or error in struts.properties", e);
         }
 
-        try {
-            list.add(new PropertiesSettings("org/apache/struts2/default"));
-        } catch (Exception e) {
-            log.error("DefaultSettings: Could not find or error in org/apache/struts2/default.properties", e);
-        }
-
         Settings[] settings = new Settings[list.size()];
         delegate = new DelegatingSettings(list.toArray(settings));
 

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/LegacyPropertiesConfigurationProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/LegacyPropertiesConfigurationProvider.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/LegacyPropertiesConfigurationProvider.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/LegacyPropertiesConfigurationProvider.java Sat Jan 20 15:59:10 2007
@@ -66,15 +66,7 @@
         
         final Settings settings = Settings.getInstance();
         
-        for (Iterator i = settings.list(); i.hasNext(); ) {
-            String name = (String) i.next();
-            props.setProperty(name, settings.get(name), settings.getLocation(name));
-            
-            // Convert struts properties into ones that xwork expects
-            if (StrutsConstants.STRUTS_DEVMODE.equals(name)) {
-                props.setProperty("devMode", settings.get(name), settings.getLocation(name));
-            }
-        }
+        loadSettings(props, settings);
         
         // Set default locale
         final Locale locale = settings.getLocale();
@@ -83,5 +75,17 @@
                 return locale;
             }
         });
+    }
+
+    /**
+     * @param props
+     * @param settings
+     */
+    protected void loadSettings(LocatableProperties props, final Settings settings) {
+        // We are calling the impl methods to get around the single instance of Settings that is expected
+        for (Iterator i = settings.listImpl(); i.hasNext(); ) {
+            String name = (String) i.next();
+            props.setProperty(name, settings.getImpl(name), settings.getLocationImpl(name));
+        }
     }
 }

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java Sat Jan 20 15:59:10 2007
@@ -284,6 +284,10 @@
     	configurationManager = null;
     }
 
+    private void init_DefaultProperties() {
+        configurationManager.addConfigurationProvider(new DefaultPropertiesProvider());
+    }
+    
     private void init_LegacyStrutsProperties() {
         configurationManager.addConfigurationProvider(new LegacyPropertiesConfigurationProvider());
     }
@@ -439,13 +443,14 @@
     		configurationManager = new ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
     	}
 
-    	init_LegacyStrutsProperties(); // [1]
+    	init_DefaultProperties(); // [1]
         init_TraditionalXmlConfigurations(); // [2]
-        init_ZeroConfiguration(); // [3]
-        init_CustomConfigurationProviders(); // [4]
+        init_LegacyStrutsProperties(); // [3]
+        init_ZeroConfiguration(); // [4]
+        init_CustomConfigurationProviders(); // [5]
         init_MethodConfigurationProvider();
-        init_FilterInitParameters() ; // [5]
-        init_AliasStandardObjects() ; // [6]
+        init_FilterInitParameters() ; // [6]
+        init_AliasStandardObjects() ; // [7]
 
         Container container = init_PreloadConfiguration();
         init_CheckConfigurationReloading(container);

Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java Sat Jan 20 15:59:10 2007
@@ -36,7 +36,6 @@
 import javax.portlet.PortletResponse;
 import javax.portlet.RenderRequest;
 import javax.portlet.RenderResponse;
-import javax.servlet.http.HttpServletRequestWrapper;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -595,4 +594,12 @@
             dispatcherUtils.cleanup();
         }
     }
+
+    /**
+     * @param actionMapper the actionMapper to set
+     */
+    public void setActionMapper(ActionMapper actionMapper) {
+        this.actionMapper = actionMapper;
+    }
+    
 }

Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/SettingsTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/SettingsTest.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/SettingsTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/SettingsTest.java Sat Jan 20 15:59:10 2007
@@ -36,7 +36,6 @@
 public class SettingsTest extends StrutsTestCase {
 
     public void testSettings() {
-        assertEquals("get", Settings.get(StrutsConstants.STRUTS_URL_INCLUDEPARAMS));
         assertEquals("12345", Settings.get(StrutsConstants.STRUTS_MULTIPART_MAXSIZE));
         assertEquals("\temp", Settings.get(StrutsConstants.STRUTS_MULTIPART_SAVEDIR));
 
@@ -48,7 +47,7 @@
         assertEquals("de", locale.getLanguage());
 
         int count = getKeyCount();
-        assertEquals(35, count);
+        assertEquals(11, count);
     }
 
     public void testDefaultResourceBundlesLoaded() {

Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java?view=diff&rev=498215&r1=498214&r2=498215
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java Sat Jan 20 15:59:10 2007
@@ -41,6 +41,8 @@
 
 import junit.textui.TestRunner;
 
+import org.apache.struts2.StrutsConstants;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
 import org.apache.struts2.portlet.PortletActionConstants;
 import org.apache.struts2.portlet.context.ServletContextHolderListener;
 import org.jmock.Mock;
@@ -106,6 +108,7 @@
         mockActionProxy.stubs().method("getAction").will(returnValue(mockAction.proxy()));
         mockActionProxy.expects(once()).method("execute").will(returnValue(result));
         mockActionProxy.expects(once()).method("getInvocation").will(returnValue(mockInvocation.proxy()));
+        mockActionProxy.expects(once()).method("setMethod");
         mockInvocation.stubs().method("getStack").will(returnValue(stack));
 
     }
@@ -130,6 +133,7 @@
 
         Map initParams = new HashMap();
         initParams.put("viewNamespace", "/view");
+        initParams.put(StrutsConstants.STRUTS_ALWAYS_SELECT_FULL_NAMESPACE, "true");
 
         initPortletConfig(initParams, new HashMap());
         initRequest(requestParams, new HashMap(), sessionMap, new HashMap(), PortletMode.VIEW, WindowState.NORMAL, false, null);
@@ -162,6 +166,7 @@
         requestParams.put(PortletActionConstants.ACTION_PARAM, new String[]{"/view/testAction"});
         requestParams.put(PortletActionConstants.MODE_PARAM, new String[]{mode.toString()});
 
+        initParams.put(StrutsConstants.STRUTS_ALWAYS_SELECT_FULL_NAMESPACE, "true");
         initPortletConfig(initParams, new HashMap());
         initRequest(requestParams, new HashMap(), new HashMap(), new HashMap(), PortletMode.VIEW, WindowState.NORMAL, true, null);
         setupActionFactory("/view", "testAction", "success", ValueStackFactory.getFactory().createValueStack());