You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2018/01/26 10:07:08 UTC

[5/9] wicket git commit: WICKET-6523 remove timer handle as soon as possible

WICKET-6523 remove timer handle as soon as possible


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/883db384
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/883db384
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/883db384

Branch: refs/heads/WICKET-6523-ajax-timers
Commit: 883db38419977da450eaac81fbe3356542e0c845
Parents: 9d26068
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jan 24 19:42:40 2018 +0100
Committer: Sven Meier <sv...@apache.org>
Committed: Thu Jan 25 17:13:02 2018 +0100

----------------------------------------------------------------------
 .../wicket/ajax/AbstractAjaxTimerBehavior.java  | 16 ++++------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    |  9 ++++++---
 wicket-core/src/test/js/timer.js                | 20 +++++++++-----------
 3 files changed, 19 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/883db384/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
index 7fd3606..25dd1b7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
@@ -88,7 +88,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 
 		if (isStopped() == false)
 		{
-			addTimeout(response);
+			setTimeout(response);
 		}
 	}
 
@@ -112,23 +112,15 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 	@Override
 	protected final void respond(final AjaxRequestTarget target)
 	{
-		// onTimer might remove this behavior, so keep the component
-		// so the timeout can be cleared later on
-		Component component = getComponent();
-		
 		if (shouldTrigger())
 		{
 			onTimer(target);
 
 			if (shouldTrigger())
 			{
-				addTimeout(target.getHeaderResponse());
-
-				return;
+				setTimeout(target.getHeaderResponse());
 			}
 		}
-
-		clearTimeout(component, target.getHeaderResponse());
 	}
 
 	/**
@@ -175,12 +167,12 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 
 			if (target != null)
 			{
-				addTimeout(target.getHeaderResponse());
+				setTimeout(target.getHeaderResponse());
 			}
 		}
 	}
 
-	private void addTimeout(IHeaderResponse headerResponse)
+	private void setTimeout(IHeaderResponse headerResponse)
 	{
 		headerResponse.render(OnLoadHeaderItem.forScript(getJsTimeoutCall(updateInterval)));
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/883db384/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index d4f3100..d9cf11f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -2740,16 +2740,19 @@
 			/**
 			 * Schedules a timer
 			 * @param {string} timerId - the identifier for the timer
-			 * @param {function|string} js - the JavaScript to execute after the timeout
+			 * @param {function} f - the JavaScript function to execute after the timeout
 			 * @param {number} delay - the timeout
 			 */
-			'set': function(timerId, js, delay) {
+			'set': function(timerId, f, delay) {
 				if (typeof(Wicket.TimerHandles) === 'undefined') {
 					Wicket.TimerHandles = {};
 				}
 
 				Wicket.Timer.clear(timerId);
-				Wicket.TimerHandles[timerId] = setTimeout(js, delay);
+				Wicket.TimerHandles[timerId] = setTimeout(function() {
+					Wicket.Timer.clear(timerId);
+					f();
+				}, delay);
 			},
 
 			/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/883db384/wicket-core/src/test/js/timer.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/timer.js b/wicket-core/src/test/js/timer.js
index e018f24..c95c20b 100644
--- a/wicket-core/src/test/js/timer.js
+++ b/wicket-core/src/test/js/timer.js
@@ -28,8 +28,8 @@ jQuery(document).ready(function() {
 
 		var timerId = 'timerId',
 			run = function() {
+				ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is no handle to the timeout!");
 				ok("The timer is ran!");
-				ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!");
 				start();
 			};
 
@@ -38,21 +38,19 @@ jQuery(document).ready(function() {
 
 	test('clear', function () {
 		stop();
-		expect(3);
+		expect(2);
 
 		var timerId = 'timerId',
 			run = function() {
-				ok("The timer is ran!");
-
-				ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!");
-
-				Wicket.Timer.clear(timerId);
-
-				ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is NO handle to the timeout!");
-
-				start();
+				ok(false, "timeout is not called");
 			};
 
 		Wicket.Timer.set('timerId', run, 1);
+		ok(Wicket.TimerHandles[timerId], "There is a handle to the timeout!");
+		
+		Wicket.Timer.clear(timerId);
+		ok(typeof(Wicket.TimerHandles[timerId]) === 'undefined', "There is no handle to the timeout!");
+
+		start();
 	});
 });