You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2015/07/26 00:09:37 UTC

[2/2] wicket git commit: WICKET-1718 check successful rendering of page before validating headers

WICKET-1718 check successful rendering of page before validating headers


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/bb7f9cf5
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/bb7f9cf5
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/bb7f9cf5

Branch: refs/heads/master
Commit: bb7f9cf54770d8470c03a7e2f00eb6445e3953f4
Parents: af84be5
Author: Sven Meier <sv...@apache.org>
Authored: Sat Jul 25 23:19:42 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Sat Jul 25 23:43:44 2015 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/markup/html/WebPage.java  |  7 ++--
 ...artResponseAtInterceptPageExceptionTest.java | 39 ++++++++++++++++++--
 2 files changed, 40 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/bb7f9cf5/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 903d7c4..5c7d6bb 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/bb7f9cf5/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 1361d36..8220cd0 100644
--- a/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/RestartResponseAtInterceptPageExceptionTest.java
@@ -16,13 +16,22 @@
  */
 package org.apache.wicket;
 
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+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.apache.wicket.util.tester.WicketTestCase;
 import org.junit.Test;
 
+import junit.framework.Assert;
+
 /**
  * Tests for {@link RestartResponseAtInterceptPageException}
  */
@@ -42,10 +51,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);
@@ -68,4 +79,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);
+	}
 }