WICKET-5460 always reset FLAG_PREPARED_FOR_RENDER, so stateless page is re-prepared before next render
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a3a5a40f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a3a5a40f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a3a5a40f Branch: refs/heads/sandbox/WICKET-4686 Commit: a3a5a40fcea53384554d7a8ada08ef7bb021bf1d Parents: 01f1ee5 Author: svenmeier <[email protected]> Authored: Mon Jan 6 15:50:06 2014 +0100 Committer: svenmeier <[email protected]> Committed: Mon Jan 6 15:50:06 2014 +0100 ---------------------------------------------------------------------- .../main/java/org/apache/wicket/Component.java | 13 ++-- .../stateless/StatelessDynmicLinksTest.java | 51 ++++++++++++++ .../StatelessPageWithDynamicLinks.html | 7 ++ .../StatelessPageWithDynamicLinks.java | 74 ++++++++++++++++++++ 4 files changed, 136 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/a3a5a40f/wicket-core/src/main/java/org/apache/wicket/Component.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/Component.java b/wicket-core/src/main/java/org/apache/wicket/Component.java index 62f1eba..e139f99 100644 --- a/wicket-core/src/main/java/org/apache/wicket/Component.java +++ b/wicket-core/src/main/java/org/apache/wicket/Component.java @@ -4200,15 +4200,10 @@ public abstract class Component */ void internalMarkRendering(boolean setRenderingFlag) { - if (setRenderingFlag) - { - setFlag(FLAG_PREPARED_FOR_RENDER, false); - setFlag(FLAG_RENDERING, true); - } - else - { - setFlag(FLAG_RENDERING, false); - } + // WICKET-5460 no longer prepared for render + setFlag(FLAG_PREPARED_FOR_RENDER, false); + + setFlag(FLAG_RENDERING, setRenderingFlag); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/a3a5a40f/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessDynmicLinksTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessDynmicLinksTest.java b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessDynmicLinksTest.java new file mode 100644 index 0000000..b39d3d6 --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessDynmicLinksTest.java @@ -0,0 +1,51 @@ +/* + * 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.stateless; + +import org.apache.wicket.WicketTestCase; +import org.apache.wicket.request.Url; +import org.junit.Test; + +/** + * @author svenmeier + */ +public class StatelessDynmicLinksTest extends WicketTestCase +{ + /** + * WICKET-5460 + */ + @Test + public void foo() throws Exception + { + tester.getApplication().mountPage("/stateless", StatelessPageWithDynamicLinks.class); + + tester.startPage(StatelessPageWithDynamicLinks.class); + assertTrue(tester.getLastResponseAsString().contains("LINK-1")); + + tester.getRequest().setUrl(Url.parse("stateless?-0.ILinkListener-links:1")); + tester.processRequest(); + assertTrue(tester.getLastResponseAsString().contains("LINK-2")); + + tester.getRequest().setUrl(Url.parse("stateless?-0.ILinkListener-links:2")); + tester.processRequest(); + assertTrue(tester.getLastResponseAsString().contains("LINK-3")); + + tester.getRequest().setUrl(Url.parse("stateless?-0.ILinkListener-links:3")); + tester.processRequest(); + assertTrue(tester.getLastResponseAsString().contains("LINK-4")); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/a3a5a40f/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.html b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.html new file mode 100644 index 0000000..70a07dc --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.html @@ -0,0 +1,7 @@ +<html> +<body> + <a wicket:id="links"> + + </a> +</body> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/a3a5a40f/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.java b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.java new file mode 100644 index 0000000..866ae59 --- /dev/null +++ b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithDynamicLinks.java @@ -0,0 +1,74 @@ +/* + * 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.stateless; + +import org.apache.wicket.markup.ComponentTag; +import org.apache.wicket.markup.MarkupStream; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.link.StatelessLink; +import org.apache.wicket.markup.repeater.RepeatingView; +import org.apache.wicket.request.mapper.parameter.PageParameters; + +/** + * @author svenmeier + */ +public class StatelessPageWithDynamicLinks extends WebPage +{ + private static final long serialVersionUID = 1L; + + private static int count = 1; + + /** + * Construct. + * + * @param parameters + */ + public StatelessPageWithDynamicLinks(PageParameters parameters) + { + super(parameters); + + setStatelessHint(true); + + add(new RepeatingView("links") + { + @Override + protected void onPopulate() + { + removeAll(); + + for (int c = 0; c < count; c++) + { + add(new StatelessLink<Void>(newChildId()) + { + @Override + public void onComponentTagBody(MarkupStream markupStream, + ComponentTag openTag) + { + super.replaceComponentTagBody(markupStream, openTag, "LINK-" + getId()); + } + + @Override + public void onClick() + { + count++; + } + }); + } + } + }); + } +} \ No newline at end of file
