WICKET-1718 check successful rendering of page before validating headers
Conflicts:
wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/319a6b86
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/319a6b86
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/319a6b86
Branch: refs/heads/wicket-6.x
Commit: 319a6b86082596d88095f15279486117ad361e03
Parents: d3a2156
Author: Sven Meier <[email protected]>
Authored: Sat Jul 25 23:19:42 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Sat Jul 25 23:51:24 2015 +0200
----------------------------------------------------------------------
.../org/apache/wicket/markup/html/WebPage.java | 7 ++--
...artResponseAtInterceptPageExceptionTest.java | 35 ++++++++++++++++++--
2 files changed, 36 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/319a6b86/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
b/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
index c90ee73..d7e3952 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/WebPage.java
@@ -26,11 +26,9 @@ import
org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
import org.apache.wicket.markup.renderStrategy.AbstractHeaderRenderStrategy;
import org.apache.wicket.model.IModel;
import org.apache.wicket.protocol.http.WebApplication;
-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.core.request.handler.IPageRequestHandler;
import org.apache.wicket.request.http.WebRequest;
import org.apache.wicket.request.http.WebResponse;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -216,7 +214,10 @@ public class WebPage extends Page
// only in development mode validate the headers
if (getApplication().usesDevelopmentConfig())
{
- validateHeaders();
+ // check headers only when page was completely rendered
+ if (wasRendered(this)) {
+ validateHeaders();
+ }
}
super.onAfterRender();
http://git-wip-us.apache.org/repos/asf/wicket/blob/319a6b86/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
----------------------------------------------------------------------
diff --git
a/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
b/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
index a4cc5b2..12fb58e 100644
---
a/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
+++
b/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
@@ -16,10 +16,15 @@
*/
package org.apache.wicket;
+import org.apache.wicket.authorization.Action;
import
org.apache.wicket.authorization.strategies.page.AbstractPageAuthorizationStrategy;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.pages.RedirectPage;
import org.apache.wicket.mock.MockApplication;
+import org.apache.wicket.mock.MockHomePage;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.resource.CoreLibrariesContributor;
import org.junit.Test;
/**
@@ -41,10 +46,12 @@ public class RestartResponseAtInterceptPageExceptionTest
extends WicketTestCase
getSecuritySettings().setAuthorizationStrategy(
new AbstractPageAuthorizationStrategy()
{
+ /**
+ * No rendering for pages other
than RedirectPage.
+ */
@Override
- protected <T extends Page>
boolean isPageAuthorized(Class<T> pageClass)
- {
- if (pageClass !=
RedirectPage.class)
+ public boolean
isActionAuthorized(Component c, Action action) {
+ if ((action.toString()
== Action.RENDER) && c instanceof WebPage && c.getClass() != RedirectPage.class)
{
RedirectPage
intercept = new RedirectPage("http://example.com/path");
throw new
RestartResponseAtInterceptPageException(intercept);
@@ -67,4 +74,26 @@ public class RestartResponseAtInterceptPageExceptionTest
extends WicketTestCase
tester.assertRenderedPage(RedirectPage.class);
}
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-5955
+ */
+ @Test
+ public void
interceptPagePreventsHeaderContributionButShouldNotBeLogged()
+ {
+ tester.startPage(new MockHomePage() {
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+
+
CoreLibrariesContributor.contribute(getApplication(), response);
+ }
+
+ @Override
+ protected void reportMissingHead(CharSequence
collectedHeaderOutput) {
+ fail("missing headers should not be reported
for unrendered page");
+ }
+ });
+
+ tester.assertRenderedPage(RedirectPage.class);
+ }
}