You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2012/07/17 09:42:02 UTC
git commit: WICKET-4659: preventing exceptional responses from being
cached and overlay next requests replay on the same address
Updated Branches:
refs/heads/master 0f9349b62 -> ccd746419
WICKET-4659: preventing exceptional responses from being cached and
overlay next requests replay on the same address
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/ccd74641
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/ccd74641
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/ccd74641
Branch: refs/heads/master
Commit: ccd746419bd803e1b801aea0dd50d3b01b022ec4
Parents: 0f9349b
Author: Pedro Santos <pe...@apache.com>
Authored: Tue Jul 17 04:40:09 2012 -0300
Committer: Pedro Santos <pe...@apache.com>
Committed: Tue Jul 17 04:40:09 2012 -0300
----------------------------------------------------------------------
.../org/apache/wicket/DefaultExceptionMapper.java | 18 ++++++++++----
.../apache/wicket/DefaultExceptionMapperTest.java | 17 ++++++++++++++
2 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/ccd74641/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java b/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
index 1a787ea..eea361d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/DefaultExceptionMapper.java
@@ -17,21 +17,23 @@
package org.apache.wicket;
import org.apache.wicket.authorization.AuthorizationException;
+import org.apache.wicket.core.request.handler.IPageRequestHandler;
+import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
+import org.apache.wicket.core.request.handler.PageProvider;
+import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
+import org.apache.wicket.core.request.mapper.StalePageException;
import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
import org.apache.wicket.protocol.http.PageExpiredException;
import org.apache.wicket.protocol.http.servlet.ResponseIOException;
import org.apache.wicket.request.IExceptionMapper;
import org.apache.wicket.request.IRequestHandler;
import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Response;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.handler.EmptyRequestHandler;
-import org.apache.wicket.core.request.handler.IPageRequestHandler;
-import org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedException;
-import org.apache.wicket.core.request.handler.PageProvider;
-import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
import org.apache.wicket.request.http.WebRequest;
+import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.http.handler.ErrorCodeRequestHandler;
-import org.apache.wicket.core.request.mapper.StalePageException;
import org.apache.wicket.settings.IExceptionSettings;
import org.apache.wicket.settings.IExceptionSettings.UnexpectedExceptionDisplay;
import org.slf4j.Logger;
@@ -51,6 +53,12 @@ public class DefaultExceptionMapper implements IExceptionMapper
{
try
{
+ Response response = RequestCycle.get().getResponse();
+ if (response instanceof WebResponse)
+ {
+ // we don't wan't to cache an exceptional reply in the browser
+ ((WebResponse)response).disableCaching();
+ }
return internalMap(e);
}
catch (RuntimeException e2)
http://git-wip-us.apache.org/repos/asf/wicket/blob/ccd74641/wicket-core/src/test/java/org/apache/wicket/DefaultExceptionMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/DefaultExceptionMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/DefaultExceptionMapperTest.java
index fb544cf..3e5dac5 100644
--- a/wicket-core/src/test/java/org/apache/wicket/DefaultExceptionMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/DefaultExceptionMapperTest.java
@@ -16,6 +16,9 @@
*/
package org.apache.wicket;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
import javax.servlet.http.HttpServletResponse;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
@@ -23,6 +26,7 @@ import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.mock.MockApplication;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.settings.IExceptionSettings;
import org.apache.wicket.util.resource.IResourceStream;
@@ -50,6 +54,19 @@ public class DefaultExceptionMapperTest extends WicketTestCase
}
/**
+ * <a href="https://issues.apache.org/jira/browse/WICKET-4659">WICKET-4659</a>
+ */
+ @Test
+ public void shouldDisableCaching()
+ {
+ WebResponse response = mock(WebResponse.class);
+ tester.getRequestCycle().setResponse(response);
+ new DefaultExceptionMapper().map(mock(Exception.class));
+ verify(response).disableCaching();
+ tester.destroy();
+ }
+
+ /**
* <a href="https://issues.apache.org/jira/browse/WICKET-3520">WICKET-3520</a>
*/
@Test