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/08/05 12:07:52 UTC

[1/2] wicket git commit: WICKET-5960 Page header isn't renderen for pages where URL has changed during render

Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 94db8a9ad -> c34f2f9dd


WICKET-5960 Page header isn't renderen for pages where URL has changed during render

This adds a disabled test case for the linked issue.


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

Branch: refs/heads/wicket-6.x
Commit: 4601ff3a7a3cfec6db3f54d913050faf03a5536b
Parents: 94db8a9
Author: Martijn Dashorst <ma...@gmail.com>
Authored: Mon Aug 3 16:32:23 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Aug 5 11:04:23 2015 +0200

----------------------------------------------------------------------
 .../wicket/request/cycle/RerenderPage.html      |  5 ++
 .../wicket/request/cycle/RerenderPage.java      | 62 ++++++++++++++++++++
 .../wicket/request/cycle/RerenderPageTest.java  | 57 ++++++++++++++++++
 3 files changed, 124 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/4601ff3a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.html b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.html
new file mode 100644
index 0000000..5469aa6
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<html>
+<head></head>
+<body></body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/wicket/blob/4601ff3a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
new file mode 100644
index 0000000..82aed54
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
@@ -0,0 +1,62 @@
+package org.apache.wicket.request.cycle;
+
+import java.io.Serializable;
+
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.StringHeaderItem;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.time.Duration;
+
+@SuppressWarnings("javadoc")
+public class RerenderPage extends WebPage
+{
+	private static final long serialVersionUID = 1L;
+
+	public static abstract class Supplier<T> implements Serializable
+	{
+		private static final long serialVersionUID = 1L;
+
+		public abstract T get();
+	}
+
+	private Integer newValue = 1;
+
+	private Supplier<Integer> handler = null;
+
+	public RerenderPage(PageParameters pars)
+	{
+		super(pars);
+		this.newValue = pars.get("value").toInteger();
+		
+		// make page statefull
+		add(new AjaxSelfUpdatingTimerBehavior(Duration.ONE_DAY));
+	}
+
+	@Override
+	protected void onConfigure()
+	{
+		super.onConfigure();
+		if (handler != null)
+			setNewValue(handler.get());
+	}
+
+	private void setNewValue(Integer newValue)
+	{
+		this.newValue = newValue;
+		getPageParameters().set("value", newValue);
+	}
+
+	public void setNewValueHandler(Supplier<Integer> s)
+	{
+		this.handler = s;
+	}
+
+	@Override
+	public void renderHead(IHeaderResponse response)
+	{
+		super.renderHead(response);
+		response.render(new StringHeaderItem("<!-- I should be present " + newValue + " -->"));
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/4601ff3a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
new file mode 100644
index 0000000..1c4fefb
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
@@ -0,0 +1,57 @@
+package org.apache.wicket.request.cycle;
+
+import org.apache.wicket.core.request.mapper.MountedMapper;
+import org.apache.wicket.request.cycle.RerenderPage.Supplier;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.tester.WicketTestCase;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Test cases for re-rendering pages.
+ */
+public class RerenderPageTest extends WicketTestCase
+{
+	/**
+	 * A testcase for WICKET-5960.
+	 * 
+	 * Due to the changes in WICKET-5309, a page is re-rendered when any of the URL segments is
+	 * modified during the request. The re-render causes the {@code <head>} section to be empty
+	 * because it was already rendered in the first try.
+	 */
+	@Test
+	@Ignore("Committed reproduction case, but added disabled to not fail the build")
+	public void wicket5960()
+	{
+		// mount the page so we have URL segments
+		tester.getApplication().mount(new MountedMapper("/rerender/${value}", RerenderPage.class));
+
+		// start the page with a value of 1
+		PageParameters pars = new PageParameters();
+		pars.add("value", 1);
+
+		// render the page
+		RerenderPage page = tester.startPage(RerenderPage.class, pars);
+		tester.assertRenderedPage(RerenderPage.class);
+		tester.assertContains("<!-- I should be present 1 -->");
+
+		// add a supplier to modify the URL during render
+		page.setNewValueHandler(new Supplier<Integer>()
+		{
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public Integer get()
+			{
+				return 2;
+			}
+		});
+
+		// rerender the page
+		tester.startPage(page);
+		tester.assertRenderedPage(RerenderPage.class);
+
+		// due to the mentioned issue, no headers are rendered at all.
+		tester.assertContains("<!-- I should be present 2 -->");
+	}
+}


[2/2] wicket git commit: WICKET-5960 drop headerResponse and renderedComponentsPerScope in #onAfterRender(), so a second rendering re-renders the header

Posted by sv...@apache.org.
WICKET-5960 drop headerResponse and renderedComponentsPerScope in #onAfterRender(), so a second rendering re-renders the header


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

Branch: refs/heads/wicket-6.x
Commit: c34f2f9dd2838d075968280b042b8826e325f012
Parents: 4601ff3
Author: Sven Meier <sv...@apache.org>
Authored: Tue Aug 4 21:28:34 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Aug 5 12:04:36 2015 +0200

----------------------------------------------------------------------
 .../html/internal/HtmlHeaderContainer.java      |  5 ++---
 .../wicket/request/cycle/RerenderPage.java      | 16 ++++++++++++++++
 .../wicket/request/cycle/RerenderPageTest.java  | 20 +++++++++++++++++---
 3 files changed, 35 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c34f2f9d/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
index 17e9c5e..c32131c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
@@ -313,9 +313,8 @@ public class HtmlHeaderContainer extends TransparentWebMarkupContainer
 	}
 
 	@Override
-	protected void onDetach()
-	{
-		super.onDetach();
+	protected void onAfterRender() {
+		super.onAfterRender();
 
 		renderedComponentsPerScope = null;
 		headerResponse = null;

http://git-wip-us.apache.org/repos/asf/wicket/blob/c34f2f9d/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
index 82aed54..fc0ed3e 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPage.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.wicket.request.cycle;
 
 import java.io.Serializable;

http://git-wip-us.apache.org/repos/asf/wicket/blob/c34f2f9d/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
index 1c4fefb..35a607c 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/cycle/RerenderPageTest.java
@@ -1,10 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.wicket.request.cycle;
 
+import org.apache.wicket.WicketTestCase;
 import org.apache.wicket.core.request.mapper.MountedMapper;
 import org.apache.wicket.request.cycle.RerenderPage.Supplier;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.tester.WicketTestCase;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -20,7 +35,6 @@ public class RerenderPageTest extends WicketTestCase
 	 * because it was already rendered in the first try.
 	 */
 	@Test
-	@Ignore("Committed reproduction case, but added disabled to not fail the build")
 	public void wicket5960()
 	{
 		// mount the page so we have URL segments