Updated Branches: refs/heads/master 382431639 -> 8fb770773
WICKET-4652 AbstractAjaxTimerBehavior throws ComponentNotFoundException when its component is replaced in PageMap. 1) default precondition returns 'true' if there is no specified component (attrs.c) - this may happen if someone uses JavaScript APIs directly. Our default impl sets 'window' if attrs.c is undefined. 2) Wicket.DOM.inDoc(window) now returns 'true' 3) add unit tests Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/8fb77077 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/8fb77077 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/8fb77077 Branch: refs/heads/master Commit: 8fb77077354c6658e19bff4d6ee118c7d4896c58 Parents: 3824316 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Jul 23 12:27:08 2012 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Jul 23 12:27:08 2012 +0300 ---------------------------------------------------------------------- .../wicket/ajax/res/js/wicket-ajax-jquery.js | 4 ++ wicket-core/src/test/js/ajax.js | 32 ++++----------- wicket-core/src/test/js/all.html | 4 ++ wicket-core/src/test/js/dom.js | 6 ++- 4 files changed, 21 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/8fb77077/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 44fb6c5..fa46f1c 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 @@ -450,6 +450,7 @@ return Wicket.$$(attributes.c); } } + return true; }]; if (Wicket.Focus.lastFocusId) { @@ -1389,6 +1390,9 @@ * if the argument is not element, function returns true */ inDoc: function (element) { + if (element === window) { + return true; + } if (typeof(element) === "string") { element = Wicket.$(element); } http://git-wip-us.apache.org/repos/asf/wicket/blob/8fb77077/wicket-core/src/test/js/ajax.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js index 0f52461..1558735 100644 --- a/wicket-core/src/test/js/ajax.js +++ b/wicket-core/src/test/js/ajax.js @@ -551,14 +551,11 @@ jQuery(document).ready(function() { .append($indicator) .append($el); - // counts how many complete handlers have been executed - var calls = 0; - // returns the number of 'shows' of the indicator var getCurrentCount = function () { var count = $indicator.attr('showIncrementallyCount'); return count ? parseInt(count, 10) : 0; - } + }; // called as 'success' for requestOne and as 'failure' for requestTwo var successFailureHandler = function () { @@ -566,15 +563,6 @@ jQuery(document).ready(function() { ok(count === 1 || count === 2, "'showIncrementallyCount' must be 1 or 2. Value is: " + count); }; - // notifies when the last (second) complete handler is done - var deferred = jQuery.Deferred(); - - var completeHandler = function () { - if (++calls === 2) { - deferred.resolve(); - } - }; - var attrs = { u: 'data/ajax/nonWicketResponse.json', e: 'event1', @@ -583,7 +571,6 @@ jQuery(document).ready(function() { dt: 'json', // datatype sh: [ successFailureHandler ], fh: [ successFailureHandler ], - coh: [ completeHandler ], wr: false // not Wicket's <ajax-response> }; @@ -599,7 +586,14 @@ jQuery(document).ready(function() { var attrsThree = jQuery.extend({}, attrs, { pre: [ function () { + start(); ok(true, 'Request 3: Precondition called.') + + var count = getCurrentCount(); + equal(0, count, "'showIncrementallyCount' must be 0 after the executions but is: " + count); + $indicator.remove(); + $el.off().remove(); + return false; } ] @@ -607,16 +601,6 @@ jQuery(document).ready(function() { // binds requestThree - not executed due to precondition Wicket.Ajax.ajax(attrsThree); - // executed when the last request is in its 'onComplete' phase. - jQuery.when(deferred) - .done(function () { - start(); - var count = getCurrentCount(); - equal(0, count, "'showIncrementallyCount' must be 0 after the executions but is: " + count); - $indicator.remove(); - $el.off().remove(); - }); - // fire all requests $el.triggerHandler("event1"); }); http://git-wip-us.apache.org/repos/asf/wicket/blob/8fb77077/wicket-core/src/test/js/all.html ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/all.html b/wicket-core/src/test/js/all.html index caecb94..71ae31c 100644 --- a/wicket-core/src/test/js/all.html +++ b/wicket-core/src/test/js/all.html @@ -39,6 +39,10 @@ AJAX --> + <div id="evaluationId"></div> + <div id="priorityEvaluationId"></div> + <div id="evaluationIdentifierAndCodeId"></div> + <div id="componentToReplace">old body</div> <textarea id="componentId"><ajax-response><component id="componentToReplace"><![CDATA[<span id="componentToReplace">new body</span>]]></component></ajax-response></textarea> http://git-wip-us.apache.org/repos/asf/wicket/blob/8fb77077/wicket-core/src/test/js/dom.js ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/js/dom.js b/wicket-core/src/test/js/dom.js index be8e20b..daa9c95 100644 --- a/wicket-core/src/test/js/dom.js +++ b/wicket-core/src/test/js/dom.js @@ -48,7 +48,11 @@ jQuery(document).ready(function() { }); test("Wicket.$$ looks for non existing element", function() { - equal( Wicket.$$(nonExistingId), true, "Wicket.$$ should return true for non existing elements." ); + equal( Wicket.$$(nonExistingId), false, "Wicket.$$ should return 'false' for non existing elements." ); + }); + + test("Wicket.$$ looks for 'window'", function() { + equal( Wicket.$$(window), true, "Wicket.$$ should return 'true' for 'window'." ); }); test("Wicket.$$ looks for element in iframe", function() {
