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:36 UTC

[1/2] wicket git commit: WICKET-1718 since 1.5.x a ReplaceHandlerException does no longer immediately change the current request handler, thus the comparison with the current page was bogus and never prevented validation of headers

Repository: wicket
Updated Branches:
  refs/heads/master 0f48a1e71 -> bb7f9cf54


WICKET-1718 since 1.5.x a ReplaceHandlerException does no longer immediately change the current request handler, thus the comparison with the current page was bogus and never prevented validation of headers


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

Branch: refs/heads/master
Commit: af84be5792ac22124a4fa19743c03c73eb8d292b
Parents: 0f48a1e
Author: Sven Meier <sv...@apache.org>
Authored: Sat Jul 25 23:17:54 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Sat Jul 25 23:17:54 2015 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/markup/html/WebPage.java | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/af84be57/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 05feebb..903d7c4 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
@@ -213,23 +213,13 @@ public class WebPage extends Page
 	@Override
 	protected void onAfterRender()
 	{
-		super.onAfterRender();
-
 		// only in development mode validate the headers
 		if (getApplication().usesDevelopmentConfig())
 		{
-			// Ignore if an exception and a redirect happened in between (e.g.
-			// RestartResponseAtInterceptPageException)
-			IRequestHandler activeHandler = getRequestCycle().getActiveRequestHandler();
-			if (activeHandler instanceof IPageRequestHandler)
-			{
-				IPageRequestHandler h = (IPageRequestHandler)activeHandler;
-				if (h.getPage() == this)
-				{
-					validateHeaders();
-				}
-			}
+			validateHeaders();
 		}
+
+		super.onAfterRender();
 	}
 
 	/**


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

Posted by sv...@apache.org.
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);
+	}
 }