Author: jonl
Date: Thu Apr 12 11:58:30 2007
New Revision: 528089

URL: http://svn.apache.org/viewvc?view=rev&rev=528089
Log:
Added method to RequestCycle that allows testing harnesses to explicitly keep 
the request cycle from clearing feedback messages so they can be inspected by 
the tester.  Changed WicketTester to use this.

Modified:
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/UnitTestSettings.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
    
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
 Thu Apr 12 11:58:30 2007
@@ -205,6 +205,12 @@
        private static final int RESPOND = 4;
 
        /**
+        * True if the request cycle should automatically clear feedback 
messages
+        * after processing
+        */
+       private boolean automaticallyClearFeedbackMessages;
+
+       /**
         * Gets request cycle for calling thread.
         * 
         * @return Request cycle for calling thread
@@ -518,6 +524,19 @@
        }
 
        /**
+        * Permit clients like testers to examine feedback messages after
+        * processing.
+        * 
+        * @param automaticallyClearFeedbackMessages
+        *            True to automatically detach request cycle at end of
+        *            processing
+        */
+       public void setAutomaticallyClearFeedbackMessages(boolean 
automaticallyClearFeedbackMessages)
+       {
+               this.automaticallyClearFeedbackMessages = 
automaticallyClearFeedbackMessages;
+       }
+
+       /**
         * Sets whether the page for this request should be redirected.
         * 
         * @param redirect
@@ -845,20 +864,23 @@
                        }
                }
 
-               // remove any rendered and otherwise obsolute feedback messages 
from the
-               // session
-               try
+               if (automaticallyClearFeedbackMessages)
                {
-                       session.cleanupRenderedFeedbackMessages();
-                       Page page = getResponsePage();
-                       if (page != null)
+                       // remove any rendered and otherwise obsolute feedback 
messages from
+                       // the session
+                       try
                        {
-                               session.cleanupFeedbackMessages(page);
+                               session.cleanupRenderedFeedbackMessages();
+                               final Page page = getResponsePage();
+                               if (page != null)
+                               {
+                                       session.cleanupFeedbackMessages(page);
+                               }
+                       }
+                       catch (RuntimeException re)
+                       {
+                               log.error("there was an error cleaning up the 
feedback messages", re);
                        }
-               }
-               catch (RuntimeException re)
-               {
-                       log.error("there was an error cleaning up the feedback 
messages", re);
                }
 
                // At the end of our response, let the session do some book 
keeping
@@ -926,6 +948,7 @@
                {
                        log.error("Exception occurred during threadDetach", re);
                }
+
        }
 
        /**

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/Session.java
 Thu Apr 12 11:58:30 2007
@@ -1241,7 +1241,7 @@
         * Removes any rendered feedback messages as well as compacts memory. 
This
         * method is usually called at the end of the request cycle processing.
         */
-       final void cleanupRenderedFeedbackMessages()
+       protected void cleanupRenderedFeedbackMessages()
        {
                int size = feedbackMessages.size();
                feedbackMessages.clearRendered();

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 Thu Apr 12 11:58:30 2007
@@ -141,7 +141,7 @@
                this.application = application;
 
                this.context = newServletContext(path);
-               
+
                filter = new WicketFilter()
                {
                        protected IWebApplicationFactory getApplicationFactory()
@@ -176,7 +176,8 @@
                                        if 
(name.equals(WicketFilter.FILTER_MAPPING_PARAM))
                                        {
                                                return 
WicketFilter.SERVLET_PATH_HOLDER;
-                                               //return "/" + 
MockWebApplication.this.getName() + "/*";
+                                               // return "/" + 
MockWebApplication.this.getName() +
+                                               // "/*";
                                        }
                                        return null;
                                }
@@ -194,34 +195,35 @@
 
                Application.set(this.application);
 
-               // Construct mock session, request and response 
+               // Construct mock session, request and response
                this.servletSession = new MockHttpSession(this.context);
-               this.servletRequest = new 
MockHttpServletRequest(this.application, this.servletSession, this.context);
+               this.servletRequest = new 
MockHttpServletRequest(this.application, this.servletSession,
+                               this.context);
                this.servletResponse = new MockHttpServletResponse();
-               
+
                // Construct request, response and session using factories
                this.wicketRequest = 
this.application.newWebRequest(this.servletRequest);
                this.wicketResponse = 
this.application.newWebResponse(this.servletResponse);
                this.wicketSession = 
this.application.getSession(this.wicketRequest, this.wicketResponse);
-               
+
                // Get request cycle factory
                this.requestCycleFactory = 
this.wicketSession.getRequestCycleFactory();
 
                // Set the default context path
                
this.application.getApplicationSettings().setContextPath(context.getServletContextName());
 
-               this.application.getRequestCycleSettings()
-                               
.setRenderStrategy(IRequestCycleSettings.ONE_PASS_RENDER);
+               this.application.getRequestCycleSettings().setRenderStrategy(
+                               IRequestCycleSettings.ONE_PASS_RENDER);
                this.application.getResourceSettings().setResourceFinder(new 
WebApplicationPath(context));
                
this.application.getPageSettings().setAutomaticMultiWindowSupport(false);
 
-               // Since the purpose of MockWebApplication is singlethreaded 
+               // Since the purpose of MockWebApplication is singlethreaded
                // programmatic testing it doesn't make much sense to have a
                // modification watcher thread started to watch for changes in 
the
                // markup.
-               // Disabling this also helps test suites with many test cases 
-               // (problems has been noticed with >~300 test cases). The 
problem 
-               // is that even if the wicket tester is GC'ed the modification 
+               // Disabling this also helps test suites with many test cases
+               // (problems has been noticed with >~300 test cases). The 
problem
+               // is that even if the wicket tester is GC'ed the modification
                // watcher still runs, taking up file handles and memory, 
leading
                // to "Too many files opened" or a regular OutOfMemoryException
                
this.application.getResourceSettings().setResourcePollFrequency(null);
@@ -241,7 +243,7 @@
        {
                return new MockServletContext(this.application, path);
        }
-       
+
        /**
         * Gets the application object.
         * 
@@ -359,7 +361,14 @@
        {
                setupRequestAndResponse();
                final WebRequestCycle cycle = createRequestCycle();
-               cycle.request(new BookmarkablePageRequestTarget(pageClass));
+               try
+               {
+                       cycle.request(new 
BookmarkablePageRequestTarget(pageClass));
+               }
+               finally
+               {
+                       cycle.getResponse().close();
+               }
                postProcessRequestCycle(cycle);
        }
 
@@ -380,7 +389,14 @@
         */
        public void processRequestCycle(WebRequestCycle cycle)
        {
-               cycle.request();
+               try
+               {
+                       cycle.request();
+               }
+               finally
+               {
+                       cycle.getResponse().close();
+               }
                postProcessRequestCycle(cycle);
        }
 
@@ -474,7 +490,14 @@
         */
        public WebRequestCycle createRequestCycle()
        {
-               return (WebRequestCycle) 
requestCycleFactory.newRequestCycle(wicketSession, wicketRequest, 
wicketResponse);
+               // Create a web request cycle using factory
+               final WebRequestCycle cycle = 
(WebRequestCycle)requestCycleFactory.newRequestCycle(
+                               wicketSession, wicketRequest, wicketResponse);
+
+               // Set request cycle so it won't detach automatically and clear 
messages
+               // we want to check
+               cycle.setAutomaticallyClearFeedbackMessages(false);
+               return cycle;
        }
 
        /**
@@ -488,10 +511,10 @@
                servletResponse.initialize();
                servletRequest.setParameters(parametersForNextRequest);
                parametersForNextRequest.clear();
-        this.wicketRequest = this.application.newWebRequest(servletRequest);
-        this.wicketResponse = 
this.application.newWebResponse(servletResponse); 
-        this.wicketSession = this.application.getSession(wicketRequest, 
wicketResponse); 
-        this.application.getSessionStore().bind(wicketRequest, wicketSession); 
+               this.wicketRequest = 
this.application.newWebRequest(servletRequest);
+               this.wicketResponse = 
this.application.newWebResponse(servletResponse);
+               this.wicketSession = this.application.getSession(wicketRequest, 
wicketResponse);
+               this.application.getSessionStore().bind(wicketRequest, 
wicketSession);
                wicketResponse.setAjax(wicketRequest.isAjax());
        }
 
@@ -515,7 +538,7 @@
        {
                this.parametersForNextRequest = parametersForNextRequest;
        }
-       
+
        /**
         * clears this mock application
         */
@@ -525,18 +548,18 @@
                File dir = 
(File)context.getAttribute("javax.servlet.context.tempdir");
                deleteDir(dir);
        }
-       
+
        private void deleteDir(File dir)
        {
-               if(dir != null && dir.isDirectory())
+               if (dir != null && dir.isDirectory())
                {
                        File[] files = dir.listFiles();
                        if (files != null)
                        {
-                               for (int i=0; i<files.length; i++)
+                               for (int i = 0; i < files.length; i++)
                                {
                                        File element = files[i];
-                                       if(element.isDirectory())
+                                       if (element.isDirectory())
                                        {
                                                deleteDir(element);
                                        }

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/UnitTestSettings.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/UnitTestSettings.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/UnitTestSettings.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/UnitTestSettings.java
 Thu Apr 12 11:58:30 2007
@@ -29,11 +29,18 @@
         */
        private static boolean sortUrlParameters = false;
 
+       /**
+        * @return True if URL parameters should be sorted
+        */
        public static boolean getSortUrlParameters()
        {
                return UnitTestSettings.sortUrlParameters;
        }
 
+       /**
+        * @param sortUrlParameters
+        *            True if URL parameters should be sorted
+        */
        public static void setSortUrlParameters(boolean sortUrlParameters)
        {
                UnitTestSettings.sortUrlParameters = sortUrlParameters;

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/lang/Objects.java
 Thu Apr 12 11:58:30 2007
@@ -25,12 +25,9 @@
 import java.io.ObjectStreamClass;
 import java.io.OutputStream;
 import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.HashMap;
-import java.util.Locale;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -38,9 +35,7 @@
 import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.application.IClassResolver;
-import org.apache.wicket.markup.MarkupException;
 import org.apache.wicket.settings.IApplicationSettings;
-import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.io.ByteCountingOutputStream;
 import org.apache.wicket.util.io.IObjectStreamFactory;
 import org.apache.wicket.util.io.WicketObjectStreamFactory;

Modified: 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java?view=diff&rev=528089&r1=528088&r2=528089
==============================================================================
--- 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
 (original)
+++ 
incubator/wicket/branches/wicket-1.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/WicketTester.java
 Thu Apr 12 11:58:30 2007
@@ -29,10 +29,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.wicket.Component;
-import org.apache.wicket.Page;
-import org.apache.wicket.Request;
-import org.apache.wicket.Response;
-import org.apache.wicket.Session;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.markup.html.basic.Label;
@@ -41,7 +37,6 @@
 import org.apache.wicket.protocol.http.UnitTestSettings;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WebResponse;
-import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.util.diff.DiffUtil;
 
 
@@ -168,20 +163,6 @@
                protected WebResponse newWebResponse(final HttpServletResponse 
servletResponse)
                {
                        return new WebResponse(servletResponse);
-               }
-
-               public Session newSession(Request request, Response response)
-               {
-                       return new WebSession(this, request)
-                       {
-                               private static final long serialVersionUID = 1L;
-
-                               public void cleanupFeedbackMessages(Page page)
-                               {
-                                       // don't clean up so that we'll have 
them available for
-                                       // testing
-                               }
-                       };
                }
        }
 


Reply via email to