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);
+       }
 }

Reply via email to