Author: mrdon Date: Fri Dec 8 11:57:59 2006 New Revision: 484717 URL: http://svn.apache.org/viewvc?view=rev&rev=484717 Log: Fixed submit unit tests, file upload test, date picker test, improved dispatcher cleanup WW-1538 WW-1544
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.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/interceptor/FileUploadInterceptorTest.java struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DatePickerTagTest-1.txt struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-1.txt struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-2.txt struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-3.txt Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java Fri Dec 8 11:57:59 2006 @@ -35,6 +35,7 @@ import org.apache.commons.logging.LogFactory; import com.opensymphony.xwork2.ActionContext; +import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.util.profiling.UtilTimerStack; /** 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=484717&r1=484716&r2=484717 ============================================================================== --- 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 Fri Dec 8 11:57:59 2006 @@ -168,6 +168,17 @@ */ public static void setInstance(Dispatcher instance) { Dispatcher.instance.set(instance); + + if (instance != null) { + Container cont = instance.getContainer(); + if (cont != null) { + ObjectFactory.setObjectFactory(cont.getInstance(ObjectFactory.class)); + } else { + LOG.warn("This dispatcher instance doesn't have a container, so the object factory won't be set."); + } + } else { + ObjectFactory.setObjectFactory(null); + } } /** @@ -258,6 +269,7 @@ LOG.error("exception occurred while destroying ObjectFactory ["+objectFactory+"]", e); } } + ObjectFactory.setObjectFactory(null); // clean up Dispatcher itself instance.set(null); @@ -815,6 +827,16 @@ * @return Our dependency injection container */ public Container getContainer() { - return getConfigurationManager().getConfiguration().getContainer(); + ConfigurationManager mgr = getConfigurationManager(); + if (mgr == null) { + throw new IllegalStateException("The configuration manager shouldn't be null"); + } else { + Configuration config = mgr.getConfiguration(); + if (config == null) { + throw new IllegalStateException("Unable to load configuration"); + } else { + return config.getContainer(); + } + } } } Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java (original) +++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/views/velocity/VelocityManager.java Fri Dec 8 11:57:59 2006 @@ -105,8 +105,8 @@ */ public class VelocityManager { private static final Log log = LogFactory.getLog(VelocityManager.class); - private static VelocityManager instance; public static final String STRUTS = "struts"; + private ObjectFactory objectFactory; /** * the parent JSP tag @@ -138,6 +138,11 @@ public VelocityManager() { } + + @Inject + public void setObjectFactory(ObjectFactory fac) { + this.objectFactory = fac; + } /** * retrieve an instance to the current VelocityManager @@ -238,7 +243,7 @@ for (int i = 0; i < chainedContextNames.length; i++) { String className = chainedContextNames[i]; try { - VelocityContext velocityContext = (VelocityContext) ObjectFactory.getObjectFactory().buildBean(className, null); + VelocityContext velocityContext = (VelocityContext) objectFactory.buildBean(className, null); contextList.add(velocityContext); } catch (Exception e) { log.warn("Warning. " + e.getClass().getName() + " caught while attempting to instantiate a chained VelocityContext, " + className + " -- skipping"); 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=484717&r1=484716&r2=484717 ============================================================================== --- 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 11:57:59 2006 @@ -100,11 +100,12 @@ MockHttpServletResponse res = new MockHttpServletResponse(); MockFilterChain chain = new MockFilterChain(); final NoOpDispatcher _dispatcher = new NoOpDispatcher(servletContext); - Dispatcher.setInstance(_dispatcher); - ConfigurationManager confManager = new ConfigurationManager(); confManager.setConfiguration(new DefaultConfiguration()); _dispatcher.setConfigurationManager(confManager); + Dispatcher.setInstance(_dispatcher); + + ObjectFactory.setObjectFactory(new InnerObjectFactory()); 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=484717&r1=484716&r2=484717 ============================================================================== --- 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 Fri Dec 8 11:57:59 2006 @@ -43,6 +43,7 @@ import com.mockobjects.servlet.MockFilterChain; import com.opensymphony.xwork2.ObjectFactory; import com.opensymphony.xwork2.config.ConfigurationManager; +import com.opensymphony.xwork2.inject.Container; /** @@ -132,84 +133,71 @@ } public void testUsingFilterDispatcherOnly() throws Exception { - ObjectFactory oldObjecFactory = ObjectFactory.getObjectFactory(); - try { - ObjectFactory.setObjectFactory(new InnerObjectFactory()); - - 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); - assertTrue(Dispatcher.getInstance() == null); - } - finally { - ObjectFactory.setObjectFactory(oldObjecFactory); - } + 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); + assertTrue(Dispatcher.getInstance() == null); } public void testUsingFilterDispatcherOnly_Multiple() throws Exception { - ObjectFactory oldObjecFactory = ObjectFactory.getObjectFactory(); - try { - ObjectFactory.setObjectFactory(new InnerObjectFactory()); - filterDispatcher.setActionMapper(new FilterTest.InnerMapper()); - - assertEquals(cleanUpFilterCreateDispatcherCount, 0); - assertEquals(filterDispatcherCreateDispatcherCount, 0); - 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(); + + filterDispatcher.setActionMapper(new FilterTest.InnerMapper()); - assertEquals(cleanUpFilterCreateDispatcherCount, 0); - // We should create dispatcher once, although filter.doFilter(...) is called many times. - assertEquals(filterDispatcherCreateDispatcherCount, 1); - 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 { - ObjectFactory.setObjectFactory(oldObjecFactory); - } + assertEquals(cleanUpFilterCreateDispatcherCount, 0); + assertEquals(filterDispatcherCreateDispatcherCount, 0); + 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(); + + assertEquals(cleanUpFilterCreateDispatcherCount, 0); + // We should create dispatcher once, although filter.doFilter(...) is called many times. + assertEquals(filterDispatcherCreateDispatcherCount, 1); + 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); + } @@ -304,6 +292,11 @@ @Override public void init() { init= true; + } + + @Override + public Container getContainer() { + return null; } @Override Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java (original) +++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/FileUploadInterceptorTest.java Fri Dec 8 11:57:59 2006 @@ -228,7 +228,9 @@ } private MultiPartRequestWrapper createMultipartRequest(HttpServletRequest req, int maxsize) throws IOException { - return new MultiPartRequestWrapper(new JakartaMultiPartRequest(), req, tempDir.getAbsolutePath()); + JakartaMultiPartRequest jak = new JakartaMultiPartRequest(); + jak.setMaxSize(String.valueOf(maxsize)); + return new MultiPartRequestWrapper(jak, req, tempDir.getAbsolutePath()); } protected void setUp() throws Exception { Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DatePickerTagTest-1.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DatePickerTagTest-1.txt?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DatePickerTagTest-1.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/DatePickerTagTest-1.txt Fri Dec 8 11:57:59 2006 @@ -1,4 +1,6 @@ -<script type="text/javascript"> +<tr> + <td class="tdLabel"></td> + <td><script type="text/javascript"> dojo.require("dojo.widget.DatePicker"); </script> <div dojoType="datepicker" @@ -11,4 +13,6 @@ endDate="d" weekStartsOn="g" staticDisplay="false"> -</div> \ No newline at end of file +</div> +</td> +</tr> Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-1.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-1.txt?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-1.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-1.txt Fri Dec 8 11:57:59 2006 @@ -1,3 +1,5 @@ +<tr> + <td colspan="2"><div align="right"> <input type="submit" dojoType="struts:Bind" @@ -11,4 +13,7 @@ refreshListenTopic="e" beforeLoading="f" afterLoading="g" - handler="h"/> \ No newline at end of file + handler="h"/> + </div> + </td> + </tr> \ No newline at end of file Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-2.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-2.txt?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-2.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-2.txt Fri Dec 8 11:57:59 2006 @@ -1,3 +1,5 @@ +<tr> + <td colspan="2"><div align="right"> <input type="button" dojoType="struts:Bind" @@ -11,4 +13,7 @@ beforeLoading="f" afterLoading="g" handler="h" - value="i"/> \ No newline at end of file + value="i"/> + </div> + </td> + </tr> \ No newline at end of file Modified: struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-3.txt URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-3.txt?view=diff&rev=484717&r1=484716&r2=484717 ============================================================================== --- struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-3.txt (original) +++ struts/struts2/trunk/core/src/test/resources/org/apache/struts2/views/jsp/ui/submit-ajax-3.txt Fri Dec 8 11:57:59 2006 @@ -1,3 +1,5 @@ +<tr> + <td colspan="2"><div align="right"> <input type="image" dojoType="struts:Bind" @@ -13,4 +15,7 @@ refreshListenTopic="e" beforeLoading="f" afterLoading="g" - handler="h"/> \ No newline at end of file + handler="h"/> + </div> + </td> + </tr> \ No newline at end of file