Author: mgrigorov
Date: Fri Mar  4 10:00:24 2011
New Revision: 1077860

URL: http://svn.apache.org/viewvc?rev=1077860&view=rev
Log:
WICKET-3498 Entering huge strings in TextFields causes IllegalStateExceptions 
not caught by the Framework

try/catch the read of wicket-ajax header and response so that it is possible to 
create Wicket Request object.
At this point it is not possible to redirect to Wicket's error pages.
Just log the error and assume it is non-Ajax request. Later if the same error 
occurs while reading header or parameter it will be possible to restart the 
request cycle and redirect to more specific error page.


Modified:
    
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java

Modified: 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=1077860&r1=1077859&r2=1077860&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 (original)
+++ 
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
 Fri Mar  4 10:00:24 2011
@@ -77,23 +77,36 @@ public class ServletWebRequest extends W
                this.httpServletRequest = httpServletRequest;
 
                ajax = false;
-               String ajaxHeader = httpServletRequest.getHeader("Wicket-Ajax");
 
-               if (Strings.isEmpty(ajaxHeader))
-                       ajaxHeader = 
httpServletRequest.getParameter("wicket:ajax");
-
-               if (Strings.isEmpty(ajaxHeader) == false)
+               try
                {
-                       try
+                       String ajaxHeader = 
httpServletRequest.getHeader("Wicket-Ajax");
+
+                       if (Strings.isEmpty(ajaxHeader))
                        {
-                               ajax = Strings.isTrue(ajaxHeader);
+                               ajaxHeader = 
httpServletRequest.getParameter("wicket:ajax");
                        }
-                       catch (StringValueConversionException e)
+
+                       if (Strings.isEmpty(ajaxHeader) == false)
                        {
-                               // We are not interested in this exception but 
we log it anyway
-                               log.debug("Couldn't convert the Wicket-Ajax 
header: " + ajaxHeader);
+                               try
+                               {
+                                       ajax = Strings.isTrue(ajaxHeader);
+                               }
+                               catch (StringValueConversionException e)
+                               {
+                                       // We are not interested in this 
exception but we log it anyway
+                                       log.debug("Couldn't convert the 
Wicket-Ajax header: " + ajaxHeader);
+                               }
                        }
                }
+               catch (IllegalStateException isx)
+               {
+                       // Log the exception and assume this is non-ajax 
request.
+                       // Later if an error occurs again while reading 
headers/parameters
+                       // it will be possible to redirect to the configured 
error pages
+                       log.error("A problem occurred while reading 
'wicket:ajax' header/parameter.", isx);
+               }
        }
 
        /**


Reply via email to