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