You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/02/06 14:23:54 UTC

git commit: WICKET-5024 Global ajax event for precondition is not called

Updated Branches:
  refs/heads/master 3de1a514d -> dac7fc6b5


WICKET-5024 Global ajax event for precondition is not called


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

Branch: refs/heads/master
Commit: dac7fc6b5235e12647c9df8386557be48b5d5bb7
Parents: 3de1a51
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Feb 6 14:23:36 2013 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Feb 6 14:23:36 2013 +0100

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js       |    2 +
 wicket-core/src/test/js/ajax.js                    |  107 ++++++++++-----
 2 files changed, 72 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/dac7fc6b/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 75ed0e4..53c09f5 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
@@ -485,6 +485,8 @@
 				}
 			}
 
+			Wicket.Event.publish('/ajax/call/precondition', attrs);
+
 			if (attrs.mp) { // multipart form. jQuery.ajax() doesn't help here ...
 				return this.submitMultipartForm(context);
 			}

http://git-wip-us.apache.org/repos/asf/wicket/blob/dac7fc6b/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 c789559..7f09a7f 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -719,20 +719,23 @@ jQuery(document).ready(function() {
 
 		/**
 		 * Verifies the order of execution of the callbacks.
-		 * The order must be: before, beforeSend, after, success, complete.
+		 * The order must be: before, precondition, beforeSend, after, success, complete.
 		 * Three consecutive executions are made on the same Ajax channel validating
 		 * that they do not overlap.
 		 */
 		asyncTest('callbacks order - success scenario.', function () {
 
-			expect(30);
+			expect(36);
 
 			var order = 0,
 
-				// calculates the offset for the order depending on the execution number
-				offset = function(round) {
-					return (round * 10) - 10;
-				};
+			// the number of assertions per iteration
+			numberOfTests = 12,
+
+			// calculates the offset for the order depending on the execution number
+			offset = function(extraData) {
+				return numberOfTests * extraData.round;
+			};
 
 			var attrs = {
 				u: 'data/ajax/emptyAjaxResponse.xml',
@@ -742,19 +745,25 @@ jQuery(document).ready(function() {
 						equal((1 + offset(attrs.event.extraData)), ++order, "Before handler");
 					}
 				],
+				pre: [
+					function(attrs) {
+						equal((3 + offset(attrs.event.extraData)), ++order, "Precondition");
+						return true;
+					}
+				],
 				bsh: [
 					function(attrs) {
-						equal((3 + offset(attrs.event.extraData)), ++order, "BeforeSend handler");
+						equal((5 + offset(attrs.event.extraData)), ++order, "BeforeSend handler");
 					}
 				],
 				ah: [
 					function(attrs) {
-						equal((5 + offset(attrs.event.extraData)), ++order, "After handler");
+						equal((7 + offset(attrs.event.extraData)), ++order, "After handler");
 					}
 				],
 				sh: [
 					function(attrs) {
-						equal((7 + offset(attrs.event.extraData)), ++order, "Success handler");
+						equal((9 + offset(attrs.event.extraData)), ++order, "Success handler");
 					}
 				],
 				fh: [
@@ -764,7 +773,7 @@ jQuery(document).ready(function() {
 				],
 				coh: [
 					function(attrs) {
-						equal((9 + offset(attrs.event.extraData)), ++order, "Complete handler");
+						equal((11 + offset(attrs.event.extraData)), ++order, "Complete handler");
 					}
 				]
 			};
@@ -774,16 +783,21 @@ jQuery(document).ready(function() {
 				equal((2 + offset(attrs.event.extraData)), ++order, "Global before handler");
 			});
 
+			Wicket.Event.subscribe('/ajax/call/precondition', function(jqEvent, attrs) {
+				equal((4 + offset(attrs.event.extraData)), ++order, "Global precondition");
+				return true;
+			});
+
 			Wicket.Event.subscribe('/ajax/call/beforeSend', function(jqEvent, attrs) {
-				equal((4 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler");
+				equal((6 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/after', function(jqEvent, attrs) {
-				equal((6 + offset(attrs.event.extraData)), ++order, "Global after handler");
+				equal((8 + offset(attrs.event.extraData)), ++order, "Global after handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/success', function(jqEvent, attrs) {
-				equal((8 + offset(attrs.event.extraData)), ++order, "Global success handler");
+				equal((10 + offset(attrs.event.extraData)), ++order, "Global success handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/failure', function() {
@@ -791,11 +805,12 @@ jQuery(document).ready(function() {
 			});
 
 			Wicket.Event.subscribe('/ajax/call/complete', function(jqEvent, attrs) {
-				equal((10 + offset(attrs.event.extraData)), ++order, "Global complete handler");
+				equal((12 + offset(attrs.event.extraData)), ++order, "Global complete handler");
 
-				if (attrs.event.extraData == 3) {
+				if (attrs.event.extraData.round === 2) {
 					// unregister all global subscribers
 					jQuery(document).off();
+					jQuery(window).off("event1");
 
 					start();
 				}
@@ -804,11 +819,15 @@ jQuery(document).ready(function() {
 			Wicket.Ajax.ajax(attrs);
 
 			var target = jQuery(window);
-			target.triggerHandler("event1", 1); // execution No1
-			target.triggerHandler("event1", 2); // execution No2
-			target.triggerHandler("event1", 3); // execution No3
+			console.log('Iteration 1', order);
+			target.triggerHandler("event1", {"round": 0}); // execution No1
+
+			console.log('Iteration 2', order);
+			target.triggerHandler("event1", {"round": 1}); // execution No2
+
+			console.log('Iteration 3', order);
+			target.triggerHandler("event1", {"round": 2}); // execution No3
 
-			target.off("event1");
 		});
 
 		/**
@@ -819,14 +838,17 @@ jQuery(document).ready(function() {
 		 */
 		asyncTest('callbacks order - failure scenario.', function () {
 
-			expect(30);
+			expect(36);
 
 			var order = 0,
 
+			// the number of assertions per iteration
+			numberOfTests = 12,
+
 			// calculates the offset for the order depending on the execution number
-				offset = function(round) {
-					return (round * 10) - 10;
-				};
+			offset = function(extraData) {
+				return numberOfTests * extraData.round;
+			};
 
 			var attrs = {
 				u: 'data/ajax/nonExistingResponse.xml',
@@ -836,14 +858,20 @@ jQuery(document).ready(function() {
 						equal((1 + offset(attrs.event.extraData)), ++order, "Before handler");
 					}
 				],
+				pre: [
+					function(attrs) {
+						equal((3 + offset(attrs.event.extraData)), ++order, "Precondition");
+						return true;
+					}
+				],
 				bsh: [
 					function(attrs) {
-						equal((3 + offset(attrs.event.extraData)), ++order, "BeforeSend handler");
+						equal((5 + offset(attrs.event.extraData)), ++order, "BeforeSend handler");
 					}
 				],
 				ah: [
 					function(attrs) {
-						equal((5 + offset(attrs.event.extraData)), ++order, "After handler");
+						equal((7 + offset(attrs.event.extraData)), ++order, "After handler");
 					}
 				],
 				sh: [
@@ -853,12 +881,12 @@ jQuery(document).ready(function() {
 				],
 				fh: [
 					function(attrs) {
-						equal((7 + offset(attrs.event.extraData)), ++order, "Failure handler");
+						equal((9 + offset(attrs.event.extraData)), ++order, "Failure handler");
 					}
 				],
 				coh: [
 					function(attrs) {
-						equal((9 + offset(attrs.event.extraData)), ++order, "Complete handler");
+						equal((11 + offset(attrs.event.extraData)), ++order, "Complete handler");
 					}
 				]
 			};
@@ -868,12 +896,17 @@ jQuery(document).ready(function() {
 				equal((2 + offset(attrs.event.extraData)), ++order, "Global before handler");
 			});
 
+			Wicket.Event.subscribe('/ajax/call/precondition', function(jqEvent, attrs) {
+				equal((4 + offset(attrs.event.extraData)), ++order, "Global precondition");
+				return true;
+			});
+
 			Wicket.Event.subscribe('/ajax/call/beforeSend', function(jqEvent, attrs) {
-				equal((4 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler");
+				equal((6 + offset(attrs.event.extraData)), ++order, "Global beforeSend handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/after', function(jqEvent, attrs) {
-				equal((6 + offset(attrs.event.extraData)), ++order, "Global after handler");
+				equal((8 + offset(attrs.event.extraData)), ++order, "Global after handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/success', function() {
@@ -881,16 +914,18 @@ jQuery(document).ready(function() {
 			});
 
 			Wicket.Event.subscribe('/ajax/call/failure', function(jqEvent, attrs) {
-				equal((8 + offset(attrs.event.extraData)), ++order, "Global failure handler");
+				equal((10 + offset(attrs.event.extraData)), ++order, "Global failure handler");
 			});
 
 			Wicket.Event.subscribe('/ajax/call/complete', function(jqEvent, attrs) {
-				equal((10 + offset(attrs.event.extraData)), ++order, "Global complete handler");
+				equal((12 + offset(attrs.event.extraData)), ++order, "Global complete handler");
 
-				if (attrs.event.extraData == 3) {
+				if (attrs.event.extraData.round === 2) {
 					// unregister all global subscribers
 					jQuery(document).off();
 
+					jQuery(window).off("event1");
+
 					start();
 				}
 			});
@@ -898,11 +933,9 @@ jQuery(document).ready(function() {
 			Wicket.Ajax.ajax(attrs);
 
 			var target = jQuery(window);
-			target.triggerHandler("event1", 1); // execution No1
-			target.triggerHandler("event1", 2); // execution No2
-			target.triggerHandler("event1", 3); // execution No3
-
-			target.off("event1");
+			target.triggerHandler("event1", {"round": 0}); // execution No1
+			target.triggerHandler("event1", {"round": 1}); // execution No2
+			target.triggerHandler("event1", {"round": 2}); // execution No3
 		});
 
 		/**