Author: mrdon Date: Fri Dec 8 12:22:37 2006 New Revision: 484741 URL: http://svn.apache.org/viewvc?view=rev&rev=484741 Log: Fixed the filter test, ensured the portlet dispatcher cleans up after itself WW-1544
Modified: 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/FilterDispatcherTest.java 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=484741&r1=484740&r2=484741 ============================================================================== --- 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 Fri Dec 8 12:22:37 2006 @@ -390,12 +390,12 @@ Map sessionMap, Map applicationMap, String portletNamespace, Integer phase) throws PortletException { LOG.debug("serviceAction"); - Dispatcher.setInstance(dispatcherUtils); HashMap extraContext = createContextMap(requestMap, parameterMap, sessionMap, applicationMap, request, response, getPortletConfig(), phase); String actionName = mapping.getName(); String namespace = mapping.getNamespace(); + Dispatcher.setInstance(dispatcherUtils); try { LOG.debug("Creating action proxy for name = " + actionName + ", namespace = " + namespace); @@ -431,6 +431,8 @@ LOG.error("Could not execute action", e); throw new PortletException("Error executing action " + actionName, e); + } finally { + Dispatcher.setInstance(null); } } 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=484741&r1=484740&r2=484741 ============================================================================== --- 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 Fri Dec 8 12:22:37 2006 @@ -46,6 +46,8 @@ import com.opensymphony.xwork2.config.impl.DefaultConfiguration; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.ContainerBuilder; +import com.opensymphony.xwork2.inject.Context; +import com.opensymphony.xwork2.inject.Factory; /** * FilterDispatcher TestCase. @@ -83,11 +85,26 @@ public void testObjectFactoryDestroy() throws Exception { - FilterDispatcher filterDispatcher = new FilterDispatcher(); + final InnerDestroyableObjectFactory destroyedObjectFactory = new InnerDestroyableObjectFactory(); + FilterDispatcher filterDispatcher = new FilterDispatcher() { + @Override + protected Dispatcher createDispatcher(FilterConfig cfg) { + return new Dispatcher(cfg.getServletContext(), new HashMap()) { + Container cont = new ContainerBuilder() + .factory(ObjectFactory.class, new Factory() { + public Object create(Context context) throws Exception { return destroyedObjectFactory; } + }) + .create(false); + + @Override + public Container getContainer() { + return cont; + } + }; + } + }; filterDispatcher.init(new MockFilterConfig((ServletContext) null)); - InnerDestroyableObjectFactory destroyedObjectFactory = new InnerDestroyableObjectFactory(); - ObjectFactory.setObjectFactory(destroyedObjectFactory); - + assertFalse(destroyedObjectFactory.destroyed); filterDispatcher.destroy(); assertTrue(destroyedObjectFactory.destroyed);