You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by th...@apache.org on 2022/04/20 12:43:23 UTC
[wicket] branch wicket-9.x updated: WICKET-6975 Ensure `behavior.renderHead` is called only once per component/behavior (#515)
This is an automated email from the ASF dual-hosted git repository.
theigl pushed a commit to branch wicket-9.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-9.x by this push:
new d9fb6bcb24 WICKET-6975 Ensure `behavior.renderHead` is called only once per component/behavior (#515)
d9fb6bcb24 is described below
commit d9fb6bcb24126f8f25e05134e26dda8858754f33
Author: Thomas Heigl <th...@gmail.com>
AuthorDate: Wed Apr 20 14:29:44 2022 +0200
WICKET-6975 Ensure `behavior.renderHead` is called only once per component/behavior (#515)
(cherry picked from commit 558e14736e0c7654b366d9aac8d9a7753946051b)
---
.../src/main/java/org/apache/wicket/Component.java | 4 ++--
.../org/apache/wicket/behavior/SharedBehaviorTest.java | 18 +++++++++++++++---
2 files changed, 17 insertions(+), 5 deletions(-)
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 5a2e9c3a45..9f7bd71f86 100644
--- a/wicket-core/src/main/java/org/apache/wicket/Component.java
+++ b/wicket-core/src/main/java/org/apache/wicket/Component.java
@@ -2666,10 +2666,10 @@ public abstract class Component
{
if (isBehaviorAccepted(behavior))
{
- if (response.wasRendered(behavior) == false)
+ List<IClusterable> pair = List.of(this, behavior);
+ if (!response.wasRendered(pair))
{
behavior.renderHead(this, response);
- List<IClusterable> pair = Arrays.asList(this, behavior);
response.markRendered(pair);
}
}
diff --git a/wicket-core/src/test/java/org/apache/wicket/behavior/SharedBehaviorTest.java b/wicket-core/src/test/java/org/apache/wicket/behavior/SharedBehaviorTest.java
index 3d23abbdcb..5d4d61a495 100644
--- a/wicket-core/src/test/java/org/apache/wicket/behavior/SharedBehaviorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/behavior/SharedBehaviorTest.java
@@ -28,6 +28,8 @@ import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.WicketTestCase;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* @since 1.5.8
*/
@@ -49,6 +51,8 @@ class SharedBehaviorTest extends WicketTestCase
{
TestPage page = new TestPage();
executeTest(page, "SharedBehaviorTest_renderHead_expected.html");
+
+ assertEquals(page.sharedBehavior.renderHeadCount, 2);
}
/**
@@ -56,13 +60,18 @@ class SharedBehaviorTest extends WicketTestCase
*/
private static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{
+
+ final SharedBehavior sharedBehavior;
+
private TestPage()
{
- SharedBehavior behavior = new SharedBehavior();
+ sharedBehavior = new SharedBehavior();
WebComponent component1 = new WebComponent("comp1");
- component1.add(behavior);
+ component1.add(sharedBehavior);
+ component1.add(sharedBehavior);
WebComponent component2 = new WebComponent("comp2");
- component2.add(behavior);
+ component2.add(sharedBehavior);
+ component2.add(sharedBehavior);
add(component1, component2);
}
@@ -78,10 +87,13 @@ class SharedBehaviorTest extends WicketTestCase
*/
private static class SharedBehavior extends Behavior
{
+ int renderHeadCount;
+
@Override
public void renderHead(Component component, IHeaderResponse response)
{
super.renderHead(component, response);
+ renderHeadCount += 1;
response.render(StringHeaderItem.forString("\nRendering header contribution for component with id: " + component.getId()));
}
}