Author: mgrigorov
Date: Wed Aug 31 12:14:42 2011
New Revision: 1163599

URL: http://svn.apache.org/viewvc?rev=1163599&view=rev
Log:
WICKET-4004 PageExpiredException still thrown after handled by 
IRequestCycleListener

try/catch the log generation, log a warning if there a problem and return 
"UNKNOWN" as result.
Example: event={handler=ListenerInterfaceRequestHandler,pageClass=UNKNOWN}


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java?rev=1163599&r1=1163598&r2=1163599&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
 Wed Aug 31 12:14:42 2011
@@ -135,43 +135,52 @@ public class RequestLogger extends Abstr
                AppendingStringBuffer sb = new AppendingStringBuffer(128);
                if (handler != null)
                {
-                       sb.append("handler=");
-                       sb.append(handler.getClass().isAnonymousClass() ? 
handler.getClass().getName()
-                               : handler.getClass().getSimpleName());
-                       sb.append(",");
-                       if (handler instanceof AjaxRequestTarget)
+                       try
                        {
-                               getAjaxString(sb, (AjaxRequestTarget)handler);
-                       }
-                       else if (handler instanceof 
BookmarkablePageRequestHandler)
-                       {
-                               getBookmarkableString(sb, 
(BookmarkablePageRequestHandler)handler);
-                       }
-                       else if (handler instanceof 
BufferedResponseRequestHandler)
-                       {
-                               // nothing extra to log... BufferedResponse 
doesn't have identifiable information
-// about
-                               // which request was buffered
-                       }
-                       else if (handler instanceof IRequestHandlerDelegate)
-                       {
-                               getDelegateString(sb, 
(IRequestHandlerDelegate)handler);
-                       }
-                       else if (handler instanceof 
ListenerInterfaceRequestHandler)
-                       {
-                               getListenerString(sb, 
(ListenerInterfaceRequestHandler)handler);
-                       }
-                       else if (handler instanceof RenderPageRequestHandler)
-                       {
-                               getRendererString(sb, 
(RenderPageRequestHandler)handler);
-                       }
-                       else if (handler instanceof 
ResourceReferenceRequestHandler)
-                       {
-                               getResourceString(sb, 
(ResourceReferenceRequestHandler)handler);
-                       }
-                       else if (handler instanceof 
ResourceStreamRequestHandler)
-                       {
-                               getResourceString(sb, 
(ResourceStreamRequestHandler)handler);
+                               sb.append("handler=");
+                               sb.append(handler.getClass().isAnonymousClass() 
? handler.getClass().getName()
+                                       : handler.getClass().getSimpleName());
+                               sb.append(",");
+                               if (handler instanceof AjaxRequestTarget)
+                               {
+                                       getAjaxString(sb, 
(AjaxRequestTarget)handler);
+                               }
+                               else if (handler instanceof 
BookmarkablePageRequestHandler)
+                               {
+                                       getBookmarkableString(sb, 
(BookmarkablePageRequestHandler)handler);
+                               }
+                               else if (handler instanceof 
BufferedResponseRequestHandler)
+                               {
+                                       // nothing extra to log... 
BufferedResponse doesn't have identifiable
+                                       // information about which request was 
buffered
+                               }
+                               else if (handler instanceof 
IRequestHandlerDelegate)
+                               {
+                                       getDelegateString(sb, 
(IRequestHandlerDelegate)handler);
+                               }
+                               else if (handler instanceof 
ListenerInterfaceRequestHandler)
+                               {
+                                       getListenerString(sb, 
(ListenerInterfaceRequestHandler)handler);
+                               }
+                               else if (handler instanceof 
RenderPageRequestHandler)
+                               {
+                                       getRendererString(sb, 
(RenderPageRequestHandler)handler);
+                               }
+                               else if (handler instanceof 
ResourceReferenceRequestHandler)
+                               {
+                                       getResourceString(sb, 
(ResourceReferenceRequestHandler)handler);
+                               }
+                               else if (handler instanceof 
ResourceStreamRequestHandler)
+                               {
+                                       getResourceString(sb, 
(ResourceStreamRequestHandler)handler);
+                               }
+                       }
+                       catch (Exception x)
+                       {
+                               LOG.warn(
+                                       "An error occurred during construction 
of the log entry for '{}', because of: {}",
+                                       handler, x.getMessage());
+                               sb.append("UNKNOWN");
                        }
                }
                else

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java?rev=1163599&r1=1163598&r2=1163599&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
 Wed Aug 31 12:14:42 2011
@@ -65,6 +65,16 @@ public class RequestLoggerRequestCycleLi
        }
 
        @Override
+       public void onExceptionRequestHandlerResolved(RequestCycle cycle, 
IRequestHandler handler,
+               Exception exception)
+       {
+               if (!isRequestLoggingEnabled())
+                       return;
+
+               registerHandler(handler);
+       }
+
+       @Override
        public void onEndRequest(RequestCycle cycle)
        {
                first.remove();


Reply via email to