This is an automated email from the ASF dual-hosted git repository.
adelbene pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/master by this push:
new 3e211ad8e9 WICKET-6991 using a separate StringBuilder for
OnLoadHeaderItemS
3e211ad8e9 is described below
commit 3e211ad8e904fc1b38f8982d480d9b0b60153304
Author: Andrea Del Bene <[email protected]>
AuthorDate: Wed Jun 29 16:07:18 2022 +0200
WICKET-6991 using a separate StringBuilder for OnLoadHeaderItemS
---
.../wicket/markup/head/ResourceAggregator.java | 32 ++++++++++----------
.../aggregator/ResourceAggregatorTest.java | 34 ++++++++++++++++++++++
2 files changed, 51 insertions(+), 15 deletions(-)
diff --git
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
index 963a5d829b..614678431b 100644
---
a/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
+++
b/wicket-core/src/main/java/org/apache/wicket/markup/head/ResourceAggregator.java
@@ -347,43 +347,45 @@ public class ResourceAggregator extends
DecoratingHeaderResponse
private void renderCombinedEventScripts()
{
// make a rough estimate of the size to which this
StringBuilder will grow
- int length = domReadyItemsToBeRendered.size() * 256;
- StringBuilder combinedScript = new StringBuilder(length);
+ int domReadyLength = domReadyItemsToBeRendered.size() * 256;
+ StringBuilder domReadScript = new StringBuilder(domReadyLength);
for (HeaderItem curItem : domReadyItemsToBeRendered)
{
if (markItemRendered(curItem))
{
- combinedScript.append('\n');
+ domReadScript.append('\n');
if (curItem instanceof OnDomReadyHeaderItem)
{
-
combinedScript.append(((OnDomReadyHeaderItem)curItem).getJavaScript());
+
domReadScript.append(((OnDomReadyHeaderItem)curItem).getJavaScript());
} else if (curItem instanceof OnEventHeaderItem)
{
-
combinedScript.append(((OnEventHeaderItem)curItem).getCompleteJavaScript());
+
domReadScript.append(((OnEventHeaderItem)curItem).getCompleteJavaScript());
}
- combinedScript.append(';');
+ domReadScript.append(';');
}
}
- if (combinedScript.length() > 0)
+ if (domReadScript.length() > 0)
{
-
combinedScript.append("\nWicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);\n");
-
getRealResponse().render(OnDomReadyHeaderItem.forScript(combinedScript));
+
domReadScript.append("\nWicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);\n");
+
getRealResponse().render(OnDomReadyHeaderItem.forScript(domReadScript));
}
- combinedScript.setLength(0);
+ int onLoadLength = loadItemsToBeRendered.size() * 256;
+ StringBuilder onLoadScript = new StringBuilder(onLoadLength);
+
for (OnLoadHeaderItem curItem : loadItemsToBeRendered)
{
if (markItemRendered(curItem))
{
- combinedScript.append('\n');
- combinedScript.append(curItem.getJavaScript());
- combinedScript.append(';');
+ onLoadScript.append('\n');
+ onLoadScript.append(curItem.getJavaScript());
+ onLoadScript.append(';');
}
}
- if (combinedScript.length() > 0)
+ if (onLoadScript.length() > 0)
{
getRealResponse().render(
-
OnLoadHeaderItem.forScript(combinedScript.append('\n')));
+
OnLoadHeaderItem.forScript(onLoadScript.append('\n')));
}
}
diff --git
a/wicket-core/src/test/java/org/apache/wicket/resource/aggregator/ResourceAggregatorTest.java
b/wicket-core/src/test/java/org/apache/wicket/resource/aggregator/ResourceAggregatorTest.java
index 5bddd9c778..bc5e762416 100644
---
a/wicket-core/src/test/java/org/apache/wicket/resource/aggregator/ResourceAggregatorTest.java
+++
b/wicket-core/src/test/java/org/apache/wicket/resource/aggregator/ResourceAggregatorTest.java
@@ -19,6 +19,7 @@ package org.apache.wicket.resource.aggregator;
import static org.apache.wicket.markup.head.JavaScriptHeaderItem.forReference;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
@@ -26,6 +27,8 @@ import java.util.List;
import org.apache.wicket.Application;
import org.apache.wicket.markup.head.HeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.head.OnLoadHeaderItem;
import org.apache.wicket.markup.head.PriorityHeaderItem;
import org.apache.wicket.markup.head.ResourceAggregator;
import org.apache.wicket.request.resource.ResourceReference;
@@ -274,4 +277,35 @@ class ResourceAggregatorTest extends WicketTestCase
aggregator.render(new PriorityHeaderItem(forReference(new
ResourceReferenceA())));
assertItems(new PriorityHeaderItem(bundleAB), forReference(new
ResourceReferenceX()));
}
+
+ /**
+ * Test rendering for onDomReady and onLoad scripts
+ */
+
+ @Test
+ void testCombinedScripts()
+ {
+ String onLoadScript = ";alert('Hello!');";
+ String onReadyScript = ";alert('Ready!');";
+
+ aggregator.render(OnDomReadyHeaderItem.forScript(onReadyScript));
+ aggregator.render(OnLoadHeaderItem.forScript(onLoadScript));
+ aggregator.close();
+
+ List<HeaderItem> items = responseStub.getItems();
+
+ OnDomReadyHeaderItem onDomReadyItem = (OnDomReadyHeaderItem)
items.stream()
+ .filter(item -> (item instanceof OnDomReadyHeaderItem))
+ .findFirst().get();
+
+ String onReadyItemScript = onDomReadyItem.getJavaScript().toString();
+ assertTrue(onReadyItemScript.contains(onReadyScript));
+
+ OnLoadHeaderItem onLoadItem = (OnLoadHeaderItem) items.stream()
+ .filter(item -> (item instanceof OnLoadHeaderItem))
+ .findFirst().get();
+
+ String onLoadItemScript = onLoadItem.getJavaScript().toString();
+ assertTrue(onLoadItemScript.contains(onLoadScript));
+ }
}