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

wicket git commit: [WICKET-6523] unique suffix is added if more than 1 timer behaviour is added for the component

Repository: wicket
Updated Branches:
  refs/heads/WICKET-6523-unique-timer-id [created] edb8c370a


[WICKET-6523] unique suffix is added if more than 1 timer behaviour is added for the component


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

Branch: refs/heads/WICKET-6523-unique-timer-id
Commit: edb8c370a6989cbfdc1ca53b382a8e1caea3e103
Parents: 1d20044
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Fri Jan 26 11:50:19 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Fri Jan 26 11:50:19 2018 +0700

----------------------------------------------------------------------
 .../wicket/ajax/AbstractAjaxTimerBehavior.java  | 36 ++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/edb8c370/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..2fc9959 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
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax;
 
+import java.util.List;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -44,6 +46,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 	private Duration updateInterval;
 
 	private boolean stopped = false;
+	private String timerId = null;
 
 	/**
 	 * Construct.
@@ -93,6 +96,35 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 	}
 
 	/**
+	 * Can be overridden to provide different implementation
+	 * 
+	 * @return the unique ID of JS timer
+	 */
+	protected CharSequence createTimerId()
+	{
+		StringBuilder jsId = new StringBuilder(getComponent().getMarkupId());
+		List<AbstractAjaxTimerBehavior> list = getComponent().getBehaviors(AbstractAjaxTimerBehavior.class);
+		if (list.size() != 1)
+		{
+			for (int i = 0; i < list.size(); ++i)
+			{
+				if (list.get(i) == this)
+				{
+					jsId.append('_').append(i);
+				}
+			}
+		}
+		return jsId;
+	}
+
+	private final String getTimerId() {
+		if (timerId == null) {
+			timerId = createTimerId().toString();
+		}
+		return timerId;
+	}
+	
+	/**
 	 * @param updateInterval
 	 *            Duration between AJAX callbacks
 	 * @return JS script
@@ -102,7 +134,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 		CharSequence js = getCallbackScript();
 
 		return String.format("Wicket.Timer.set('%s', function(){%s}, %d);",
-				getComponent().getMarkupId(), js, updateInterval.getMilliseconds());
+				getTimerId(), js, updateInterval.getMilliseconds());
 	}
 
 	/**
@@ -187,7 +219,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 
 	private void clearTimeout(Component component, IHeaderResponse headerResponse)
 	{
-		headerResponse.render(OnLoadHeaderItem.forScript("Wicket.Timer.clear('" + component.getMarkupId() + "');"));
+		headerResponse.render(OnLoadHeaderItem.forScript("Wicket.Timer.clear('" + getTimerId() + "');"));
 	}
 
 	/**