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);


Reply via email to