Updated Branches:
  refs/heads/master 75bad4b13 -> bb4977fb1

WICKET-4429 executeAllTimerBehaviors does not find all timer behaviours

Execute the timer behaviors assigned on both the passed container and its 
children


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

Branch: refs/heads/master
Commit: bb4977fb1e7211b576cd5a2bafe447e6ff1a1412
Parents: 75bad4b
Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Authored: Fri Feb 24 13:53:37 2012 +0100
Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Committed: Fri Feb 24 13:53:37 2012 +0100

----------------------------------------------------------------------
 .../wicket/util/tester/BaseWicketTester.java       |   47 +++++++++------
 1 files changed, 28 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/bb4977fb/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index e400de3..71b708c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -62,7 +62,6 @@ import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.behavior.AbstractAjaxBehavior;
-import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.feedback.FeedbackCollector;
 import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.feedback.IFeedbackMessageFilter;
@@ -2127,32 +2126,42 @@ public class BaseWicketTester
        /**
         * Simulates the firing of all ajax timer behaviors on the page
         * 
-        * @param container
+        * @param page
+        *      the page which timers will be executed
         */
-       public void executeAllTimerBehaviors(final MarkupContainer container)
+       public void executeAllTimerBehaviors(final MarkupContainer page)
        {
-               container.visitChildren(MarkupContainer.class, new 
IVisitor<MarkupContainer, Void>()
+               // execute all timer behaviors for the page itself
+               internalExecuteAllTimerBehaviors(page);
+
+               // and for all its children
+               page.visitChildren(Component.class, new IVisitor<Component, 
Void>()
                {
                        @Override
-                       public void component(final MarkupContainer component, 
final IVisit<Void> visit)
+                       public void component(final Component component, final 
IVisit<Void> visit)
                        {
-                               // get the AbstractAjaxBehaviour which is 
responsible for
-                               // getting the contents of the lazy panel
-                               List<AbstractAjaxTimerBehavior> behaviors = 
component.getBehaviors(AbstractAjaxTimerBehavior.class);
-                               for (Behavior b : behaviors)
-                               {
-                                       checkUsability(component, true);
+                               internalExecuteAllTimerBehaviors(component);
+                       }
+               });
+       }
 
-                                       log.debug("Triggering 
AjaxSelfUpdatingTimerBehavior: " +
-                                               
component.getClassRelativePath());
-                                       AbstractAjaxTimerBehavior timer = 
(AbstractAjaxTimerBehavior)b;
-                                       if (!timer.isStopped())
-                                       {
-                                               executeBehavior(timer);
-                                       }
+       private void internalExecuteAllTimerBehaviors(final Component component)
+       {
+               List<AbstractAjaxTimerBehavior> behaviors = 
component.getBehaviors(AbstractAjaxTimerBehavior.class);
+               for (AbstractAjaxTimerBehavior timer : behaviors)
+               {
+                       checkUsability(component, true);
+
+                       if (!timer.isStopped())
+                       {
+                               if (log.isDebugEnabled())
+                               {
+                                       log.debug("Triggering 
AjaxSelfUpdatingTimerBehavior: {}", component.getClassRelativePath());
                                }
+
+                               executeBehavior(timer);
                        }
-               });
+               }
        }
 
        /**

Reply via email to