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);
+		}
 	}
 
 	/**