You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by eh...@apache.org on 2007/08/27 22:12:18 UTC
svn commit: r570234 -
/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
Author: ehillenius
Date: Mon Aug 27 13:12:16 2007
New Revision: 570234
URL: http://svn.apache.org/viewvc?rev=570234&view=rev
Log:
whenever a request cycle is constructed, the application thread local should have been set. Wasn't the case for lastModified code. Included some minor tweaks.
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java?rev=570234&r1=570233&r2=570234&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java Mon Aug 27 13:12:16 2007
@@ -115,35 +115,55 @@
if (isWicketRequest(relativePath))
{
- HttpServletResponse httpServletResponse = (HttpServletResponse)response;
- long lastModified = getLastModified(httpServletRequest, httpServletResponse);
- if (lastModified == -1)
- {
- // servlet doesn't support if-modified-since, no reason
- // to go through further expensive logic
- doGet(httpServletRequest, httpServletResponse);
- }
- else
- {
- long ifModifiedSince = httpServletRequest.getDateHeader("If-Modified-Since");
- if (ifModifiedSince < (lastModified / 1000 * 1000))
- {
- // If the servlet mod time is later, call doGet()
- // Round down to the nearest second for a proper compare
- // A ifModifiedSince of -1 will always be less
- maybeSetLastModified(httpServletResponse, lastModified);
+ // Set the webapplication for this thread
+ Application.set(webApplication);
+
+ try
+ {
+ HttpServletResponse httpServletResponse = (HttpServletResponse)response;
+ long lastModified = getLastModified(httpServletRequest, httpServletResponse);
+ if (lastModified == -1)
+ {
+ // servlet doesn't support if-modified-since, no reason
+ // to go through further expensive logic
doGet(httpServletRequest, httpServletResponse);
}
else
{
- httpServletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+ long ifModifiedSince = httpServletRequest.getDateHeader("If-Modified-Since");
+ if (ifModifiedSince < (lastModified / 1000 * 1000))
+ {
+ // If the servlet mod time is later, call doGet()
+ // Round down to the nearest second for a proper compare
+ // A ifModifiedSince of -1 will always be less
+ maybeSetLastModified(httpServletResponse, lastModified);
+ doGet(httpServletRequest, httpServletResponse);
+ }
+ else
+ {
+ httpServletResponse.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
+ }
}
}
- // we might have created a request cycle inside getLastModified, so we need to
- // clean it here (in case the doGet method was not called
- if (RequestCycle.get() != null)
+ finally
{
- RequestCycle.get().detach();
+ // we might have created a request cycle inside getLastModified, so we need to
+ // clean it here (in case the doGet method was not called
+ if (RequestCycle.get() != null)
+ {
+ try
+ {
+ RequestCycle.get().detach();
+ }
+ catch (RuntimeException e)
+ {
+ log.error("error detaching request cycle " + RequestCycle.get() + ": " +
+ e.getMessage(), e);
+ }
+ }
+
+ // always unset the application thread local
+ Application.unset();
}
}
else
@@ -249,9 +269,6 @@
}
}
- // First, set the webapplication for this thread
- Application.set(webApplication);
-
// Create a response object and set the output encoding according to
// wicket's application setttings.
final WebResponse response = existingRequestCycle != null
@@ -418,6 +435,7 @@
String contextKey = "wicket:" + filterConfig.getFilterName();
filterConfig.getServletContext().setAttribute(contextKey, webApplication);
+ // set the application thread local in case initialization code uses it
Application.set(webApplication);
// Call internal init method of web application for default
@@ -721,19 +739,19 @@
final String resourceReferenceKey = pathInfo
.substring(WebRequestCodingStrategy.RESOURCES_PATH_PREFIX.length());
- final WebRequest request = webApplication.newWebRequest(servletRequest);
- final WebResponse response = webApplication.newWebResponse(servletResponse);
- RequestCycle cycle = webApplication.newRequestCycle(request, response);
+ Resource resource = null;
+ try
+ {
+ final WebRequest request = webApplication.newWebRequest(servletRequest);
+ final WebResponse response = webApplication.newWebResponse(servletResponse);
+ RequestCycle cycle = webApplication.newRequestCycle(request, response);
- // Try to find shared resource
- Resource resource = webApplication.getSharedResources().get(resourceReferenceKey);
+ // Try to find shared resource
+ resource = webApplication.getSharedResources().get(resourceReferenceKey);
- // If resource found and it is cacheable
- if ((resource != null) && resource.isCacheable())
- {
- try
+ // If resource found and it is cacheable
+ if ((resource != null) && resource.isCacheable())
{
- Application.set(webApplication);
// Set parameters from servlet request
resource.setParameters(request.getParameterMap());
@@ -755,14 +773,16 @@
return time != null ? time.getMilliseconds() : -1;
}
- catch (AbortException e)
- {
- return -1;
- }
- finally
+ }
+ catch (AbortException e)
+ {
+ return -1;
+ }
+ finally
+ {
+ if (resource != null)
{
resource.setParameters(null);
- Application.unset();
}
}
}