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