You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/02/21 11:44:45 UTC
git commit: WICKET-4418 Combine all JavaScript evaluations in one
element for better performance at the client side
Updated Branches:
refs/heads/master 3d2dfa75d -> 36c90fa61
WICKET-4418 Combine all JavaScript evaluations in one <evaluate> element for better performance at the client side
Pass all scripts to XmlAjaxResponse so that it can decide how to render them - one by one or all in one <evaluate>.
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/36c90fa6
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/36c90fa6
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/36c90fa6
Branch: refs/heads/master
Commit: 36c90fa61dae547835a8205fba0dd5e1579c49dc
Parents: 3d2dfa7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Feb 21 11:42:28 2012 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Feb 21 11:42:28 2012 +0100
----------------------------------------------------------------------
.../apache/wicket/ajax/AbstractAjaxResponse.java | 29 ++++-----------
.../org/apache/wicket/ajax/AjaxRequestHandler.java | 11 ++----
.../org/apache/wicket/ajax/XmlAjaxResponse.java | 19 ++++++++--
3 files changed, 27 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/36c90fa6/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
index 4f89b15..8cab7e1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.ajax;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
@@ -146,28 +147,14 @@ abstract class AbstractAjaxResponse
// queue up prepend javascripts. unlike other steps these are executed out of order so that
// components can contribute them from inside their onbeforerender methods.
- Iterator<CharSequence> it = prependJavaScripts.iterator();
- while (it.hasNext())
- {
- CharSequence js = it.next();
- writePriorityEvaluation(response, js);
- }
+ writePriorityEvaluations(response, prependJavaScripts);
// execute the dom ready javascripts as first javascripts
// after component replacement
- it = domReadyJavaScripts.iterator();
- while (it.hasNext())
- {
- CharSequence js = it.next();
- writeNormalEvaluation(response, js);
- }
-
- it = appendJavaScripts.iterator();
- while (it.hasNext())
- {
- CharSequence js = it.next();
- writeNormalEvaluation(response, js);
- }
+ List<CharSequence> evaluationScripts = new ArrayList<CharSequence>();
+ evaluationScripts.addAll(domReadyJavaScripts);
+ evaluationScripts.addAll(appendJavaScripts);
+ writeNormalEvaluations(response, evaluationScripts);
writeFooter(response, encoding);
}
@@ -191,7 +178,7 @@ abstract class AbstractAjaxResponse
* @param js
* the JavaScript to evaluate
*/
- protected abstract void writePriorityEvaluation(Response response, CharSequence js);
+ protected abstract void writePriorityEvaluations(Response response, Collection<CharSequence> js);
/**
*
@@ -200,7 +187,7 @@ abstract class AbstractAjaxResponse
* @param js
* the JavaScript to evaluate
*/
- protected abstract void writeNormalEvaluation(Response response, CharSequence js);
+ protected abstract void writeNormalEvaluations(Response response, Collection<CharSequence> js);
/**
* Processes components added to the target. This involves attaching components, rendering
http://git-wip-us.apache.org/repos/asf/wicket/blob/36c90fa6/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java
index 7a349ad..b9dffa9 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java
@@ -48,8 +48,6 @@ import org.apache.wicket.util.string.AppendingStringBuffer;
import org.apache.wicket.util.string.Strings;
import org.apache.wicket.util.visit.IVisit;
import org.apache.wicket.util.visit.IVisitor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* A request target that produces ajax response envelopes used on the client side to update
@@ -81,8 +79,6 @@ import org.slf4j.LoggerFactory;
public class AjaxRequestHandler implements AjaxRequestTarget
{
- private static final Logger LOG = LoggerFactory.getLogger(AjaxRequestHandler.class);
-
/**
* A POJO-like that collects the data for the Ajax response written to the client and serializes
* it to specific String-based format (XML, JSON, ...).
@@ -108,6 +104,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget
* Constructor
*
* @param page
+ * the currently active page
*/
public AjaxRequestHandler(final Page page)
{
@@ -121,6 +118,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget
* events will have been fired by now.
*
* @param response
+ * the response to write to
*/
@Override
protected void fireOnAfterRespondListeners(final Response response)
@@ -139,7 +137,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget
@Override
public void addJavaScript(String script)
{
- writeNormalEvaluation(response, script);
+ writeNormalEvaluations(response, Collections.<CharSequence>singleton(script));
}
};
@@ -414,8 +412,7 @@ public class AjaxRequestHandler implements AjaxRequestTarget
}
/**
- *
- * @return
+ * @return the markup id of the focused element in the browser
*/
@Override
public String getLastFocusedElementId()
http://git-wip-us.apache.org/repos/asf/wicket/blob/36c90fa6/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
index f41d0e9..f064007 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.ajax;
+import java.util.Collection;
+
import org.apache.wicket.Component;
import org.apache.wicket.Page;
import org.apache.wicket.request.Response;
@@ -176,15 +178,24 @@ abstract class XmlAjaxResponse extends AbstractAjaxResponse
}
@Override
- protected void writeNormalEvaluation(final Response response, final CharSequence js)
+ protected void writeNormalEvaluations(final Response response, final Collection<CharSequence> scripts)
{
- writeEvaluation("evaluate", response, js);
+ writeEvaluations(response, "evaluate", scripts);
+
}
@Override
- protected void writePriorityEvaluation(Response response, CharSequence js)
+ protected void writePriorityEvaluations(Response response, Collection<CharSequence> scripts)
{
- writeEvaluation("priority-evaluate", response, js);
+ writeEvaluations(response, "priority-evaluate", scripts);
+ }
+
+ private void writeEvaluations(final Response response, String elementName, Collection<CharSequence> scripts)
+ {
+ for (CharSequence script : scripts)
+ {
+ writeEvaluation(elementName, response, script);
+ }
}
/**