Author: tmjee
Date: Sat Nov 18 19:56:18 2006
New Revision: 476696
URL: http://svn.apache.org/viewvc?view=rev&rev=476696
Log:
WW-1513
- Dispatcher's setConfigurationManager() method has no effect
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.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/dispatcher/DispatcherTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/StrutsTestCase.java
Sat Nov 18 19:56:18 2006
@@ -53,6 +53,7 @@
params = new HashMap<String,String>();
}
Dispatcher du = new Dispatcher(new MockServletContext(), params);
+ du.init();
Dispatcher.setInstance(du);
configurationManager = du.getConfigurationManager();
configuration = configurationManager.getConfiguration();
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=476696&r1=476695&r2=476696
==============================================================================
---
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 Nov 18 19:56:18 2006
@@ -189,14 +189,19 @@
dispatcherListeners.remove(listener);
}
+ private ServletContext servletContext;
+ private Map<String, String> initParams;
+
+
/**
* Create the Dispatcher instance for a given ServletContext and set of
initialization parameters.
*
* @param servletContext Our servlet context
* @param initParams The set of initialization parameters
*/
- public Dispatcher(ServletContext servletContext, Map initParams) {
- init(servletContext, initParams);
+ public Dispatcher(ServletContext servletContext, Map<String, String>
initParams) {
+ this.servletContext = servletContext;
+ this.initParams = initParams;
}
/**
@@ -275,15 +280,18 @@
/**
* Load configurations, including both XML and zero-configuration
strategies,
* and update optional settings, including whether to reload
configurations and resource files.
- *
- * @param servletContext Our servlet context
- * @param initParams The set of initialization parameters
*/
- private void init(final ServletContext servletContext, final
Map<String,String> initParams) {
+ public void init() {
- configurationManager = new
ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
+ if (configurationManager == null) {
+ configurationManager = new
ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
+ }
+ // 1] Configuration: legacy properties file (struts.properties)
configurationManager.addConfigurationProvider(new
LegacyPropertiesConfigurationProvider());
+
+
+ // 2] Configuration: traditional xml configuration (eg.
struts-default.xml, struts-plugin.xml, struts.xml)
// Load traditional xml configuration
String configPaths = initParams.get("config");
if (configPaths == null) {
@@ -302,6 +310,7 @@
}
}
+ // 3] Configuration: zero-configuration stuff
// Load configuration from a scan of the classloader
String packages = initParams.get("actionPackages");
if (packages != null) {
@@ -314,6 +323,7 @@
}
}
+ // 4] Configuration: custom ConfigurationProviders
String configProvs = initParams.get("configProviders");
if (configProvs != null) {
String[] classes = configProvs.split("\\s*[,]\\s*");
@@ -332,6 +342,7 @@
}
}
+ // 5] Configurations: Filter's init-parameters as constants to be
injected
// Load filter init params as constants
configurationManager.addConfigurationProvider(new
ConfigurationProvider() {
public void destroy() {}
@@ -344,6 +355,8 @@
}
});
+
+ // 6] Configurations: Alias standard Struts2 beans
configurationManager.addConfigurationProvider(new
BeanSelectionProvider());
// Preload the configuration
Configuration config = configurationManager.getConfiguration();
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
(original)
+++
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
Sat Nov 18 19:56:18 2006
@@ -207,8 +207,11 @@
* @param filterConfig The filter configuration
*/
public void init(FilterConfig filterConfig) throws ServletException {
+ this.filterConfig = filterConfig;
+
dispatcher = createDispatcher(filterConfig);
- this.filterConfig = filterConfig;
+ dispatcher.init();
+
String param = filterConfig.getInitParameter("packages");
String packages = "org.apache.struts2.static template
org.apache.struts2.interceptor.debugging";
if (param != null) {
@@ -388,6 +391,7 @@
*/
public void doFilter(ServletRequest req, ServletResponse res, FilterChain
chain) throws IOException, ServletException {
+
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
ServletContext servletContext = getServletContext();
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=476696&r1=476695&r2=476696
==============================================================================
---
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 Nov 18 19:56:18 2006
@@ -187,6 +187,7 @@
Dispatcher.setPortletSupportActive(true);
dispatcherUtils = new
Dispatcher(ServletContextHolderListener.getServletContext(), params);
+ dispatcherUtils.init();
// For testability
if (factory == null) {
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/DispatcherTest.java
Sat Nov 18 19:56:18 2006
@@ -110,13 +110,13 @@
public void testConfigurationManager() {
Dispatcher du = null;
- final InternalConfigurationManager configurationManager = new
InternalConfigurationManager();
+ InternalConfigurationManager configurationManager = new
InternalConfigurationManager();
try {
- du = new Dispatcher(new MockServletContext(), new
HashMap<String, String>()) {
- {
- setConfigurationManager(configurationManager);
- }
- };
+ du = new Dispatcher(new MockServletContext(), new
HashMap<String, String>());
+ du.setConfigurationManager(configurationManager);
+
+ du.init();
+
Dispatcher.setInstance(du);
assertFalse(configurationManager.destroyConfiguration);
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterDispatcherTest.java
Sat Nov 18 19:56:18 2006
@@ -44,6 +44,8 @@
import com.opensymphony.xwork2.ObjectFactory;
import com.opensymphony.xwork2.config.ConfigurationManager;
import com.opensymphony.xwork2.config.impl.DefaultConfiguration;
+import com.opensymphony.xwork2.inject.Container;
+import com.opensymphony.xwork2.inject.ContainerBuilder;
/**
* FilterDispatcher TestCase.
@@ -128,8 +130,15 @@
final InnerDispatcher _dispatcher = new
InnerDispatcher(servletContext);
Dispatcher.setInstance(null);
+ DefaultConfiguration conf = new DefaultConfiguration() {
+ @Override
+ public Container getContainer() {
+ return new ContainerBuilder().create(false);
+ }
+ };
+
ConfigurationManager confManager = new ConfigurationManager();
- confManager.setConfiguration(new DefaultConfiguration());
+ confManager.setConfiguration(conf);
_dispatcher.setConfigurationManager(confManager);
@@ -142,8 +151,8 @@
return _dispatcher;
}
};
- filter.init(filterConfig);
filter.setActionMapper(new InnerActionMapper());
+ filter.init(filterConfig);
filter.doFilter(req, res, chain);
assertTrue(_dispatcher.wrappedRequest);
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/FilterTest.java
Sat Nov 18 19:56:18 2006
@@ -33,7 +33,6 @@
import junit.framework.TestCase;
-import org.apache.struts2.StrutsConstants;
import org.apache.struts2.dispatcher.mapper.ActionMapper;
import org.apache.struts2.dispatcher.mapper.ActionMapping;
import org.springframework.mock.web.MockFilterConfig;
@@ -124,7 +123,7 @@
filterDispatcherCreateDispatcherCount++;
return _dispatcher2;
}
-
+
@Override
public String toString() {
return "filterDispatcher";
@@ -132,32 +131,35 @@
};
}
-
public void testUsingFilterDispatcherOnly() throws Exception {
ObjectFactory oldObjecFactory = ObjectFactory.getObjectFactory();
try {
ObjectFactory.setObjectFactory(new InnerObjectFactory());
- filterDispatcher.setActionMapper(new FilterTest.InnerMapper());
assertEquals(cleanUpFilterCreateDispatcherCount, 0);
assertEquals(filterDispatcherCreateDispatcherCount, 0);
+ assertFalse(_dispatcher1.init);
assertFalse(_dispatcher1.prepare);
assertFalse(_dispatcher1.wrapRequest);
assertFalse(_dispatcher1.service);
+ assertFalse(_dispatcher2.init);
assertFalse(_dispatcher2.prepare);
assertFalse(_dispatcher2.wrapRequest);
assertFalse(_dispatcher2.service);
filterDispatcher.init(filterConfig);
+ FilterDispatcher.setActionMapper(new FilterTest.InnerMapper());
filterDispatcher.doFilter(request, response, filterChain2);
filterDispatcher.destroy();
// we are using FilterDispatcher only, so cleanUp filter's
Dispatcher should not be created.
assertEquals(cleanUpFilterCreateDispatcherCount, 0);
assertEquals(filterDispatcherCreateDispatcherCount, 1);
+ assertFalse(_dispatcher1.init);
assertFalse(_dispatcher1.prepare);
assertFalse(_dispatcher1.wrapRequest);
assertFalse(_dispatcher1.service);
+ assertTrue(_dispatcher2.init);
assertTrue(_dispatcher2.prepare);
assertTrue(_dispatcher2.wrapRequest);
assertTrue(_dispatcher2.service);
@@ -168,6 +170,7 @@
}
}
+
public void testUsingFilterDispatcherOnly_Multiple() throws Exception {
ObjectFactory oldObjecFactory = ObjectFactory.getObjectFactory();
try {
@@ -179,11 +182,14 @@
assertFalse(_dispatcher1.prepare);
assertFalse(_dispatcher1.wrapRequest);
assertFalse(_dispatcher1.service);
+ assertFalse(_dispatcher1.cleanUp);
assertFalse(_dispatcher2.prepare);
assertFalse(_dispatcher2.wrapRequest);
assertFalse(_dispatcher2.service);
+ assertFalse(_dispatcher2.cleanUp);
filterDispatcher.init(filterConfig);
+ FilterDispatcher.setActionMapper(new FilterTest.InnerMapper());
filterDispatcher.doFilter(request, response, filterChain2);
filterDispatcher.doFilter(request, response, filterChain2);
filterDispatcher.destroy();
@@ -194,9 +200,11 @@
assertFalse(_dispatcher1.prepare);
assertFalse(_dispatcher1.wrapRequest);
assertFalse(_dispatcher1.service);
+ assertFalse(_dispatcher1.cleanUp);
assertTrue(_dispatcher2.prepare);
assertTrue(_dispatcher2.wrapRequest);
assertTrue(_dispatcher2.service);
+ assertTrue(_dispatcher2.cleanUp);
assertTrue(Dispatcher.getInstance() == null);
}
finally {
@@ -204,6 +212,8 @@
}
}
+
+
/*public void testUsingCleanUpAndFilterDispatcher() throws Exception {
ObjectFactory oldObjecFactory = ObjectFactory.getObjectFactory();
try {
@@ -281,12 +291,19 @@
class InnerDispatcher extends Dispatcher {
+ public boolean init = false;
public boolean prepare = false;
public boolean wrapRequest = false;
public boolean service = false;
+ public boolean cleanUp = false;
public InnerDispatcher(ServletContext servletContext) {
- super(servletContext, new HashMap());
+ super(servletContext, new HashMap<String, String>());
+ }
+
+ @Override
+ public void init() {
+ init= true;
}
@Override
@@ -303,6 +320,11 @@
@Override
public void serviceAction(HttpServletRequest request,
HttpServletResponse response, ServletContext context, ActionMapping mapping)
throws ServletException {
service = true;
+ }
+
+ @Override
+ public void cleanup() {
+ cleanUp = true;
}
}
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/AbstractTagTest.java
Sat Nov 18 19:56:18 2006
@@ -108,6 +108,7 @@
mockContainer = new Mock(Container.class);
Dispatcher du = new Dispatcher(pageContext.getServletContext(), new
HashMap());
+ du.init();
Dispatcher.setInstance(du);
du.setConfigurationManager(configurationManager);
session = new SessionMap(request);
Modified:
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java?view=diff&rev=476696&r1=476695&r2=476696
==============================================================================
---
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java
(original)
+++
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/PortletUrlTagTest.java
Sat Nov 18 19:56:18 2006
@@ -80,7 +80,9 @@
public void setUp() throws Exception {
super.setUp();
- Dispatcher.setInstance(new Dispatcher(null, new HashMap()));
+ Dispatcher du = new Dispatcher(null, new HashMap());
+ du.init();
+ Dispatcher.setInstance(du);
mockPortletApiAvailable();