You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2015/07/08 11:58:21 UTC
wicket git commit: WICKET-5945 /ajax/call/done
Repository: wicket
Updated Branches:
refs/heads/wicket-6.x 6fa8616f4 -> 051bb4d08
WICKET-5945 /ajax/call/done
Conflicts:
wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/051bb4d0
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/051bb4d0
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/051bb4d0
Branch: refs/heads/wicket-6.x
Commit: 051bb4d08cbf13ec85e434f37df2fcf380987d60
Parents: 6fa8616
Author: Sven Meier <sv...@apache.org>
Authored: Wed Jul 8 11:41:27 2015 +0200
Committer: Sven Meier <sv...@apache.org>
Committed: Wed Jul 8 11:57:17 2015 +0200
----------------------------------------------------------------------
.../ajax/AbstractDefaultAjaxBehavior.java | 8 ++++
.../ajax/attributes/AjaxAttributeName.java | 7 ++++
.../ajax/attributes/AjaxCallListener.java | 40 ++++++++++++++++++++
.../wicket/ajax/res/js/wicket-ajax-jquery.js | 18 ++++-----
.../wicket/ajax/res/js/wicket-event-jquery.js | 1 +
.../ajax/attributes/AjaxAttributeNameTest.java | 3 +-
6 files changed, 66 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
index d95330d..06d52cd 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
@@ -72,6 +72,7 @@ public abstract class AbstractDefaultAjaxBehavior extends AbstractAjaxBehavior
private static final String BEFORE_SEND_HANDLER_FUNCTION_TEMPLATE = "function(attrs, jqXHR, settings){%s}";
private static final String BEFORE_HANDLER_FUNCTION_TEMPLATE = "function(attrs){%s}";
private static final String INIT_HANDLER_FUNCTION_TEMPLATE = "function(attrs){%s}";
+ private static final String DONE_HANDLER_FUNCTION_TEMPLATE = "function(attrs){%s}";
/**
* Subclasses should call super.onBind()
@@ -313,6 +314,13 @@ public abstract class AbstractDefaultAjaxBehavior extends AbstractAjaxBehavior
CharSequence precondition = ajaxCallListener.getPrecondition(component);
appendListenerHandler(precondition, attributesJson,
AjaxAttributeName.PRECONDITION.jsonName(), PRECONDITION_FUNCTION_TEMPLATE);
+
+ if (ajaxCallListener instanceof AjaxCallListener) {
+ CharSequence doneHandler = ((AjaxCallListener) ajaxCallListener).getDoneHandler(component);
+ appendListenerHandler(doneHandler, attributesJson,
+ AjaxAttributeName.DONE_HANDLER.jsonName(),
+ DONE_HANDLER_FUNCTION_TEMPLATE);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
index 12edc71..bea715d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
@@ -181,6 +181,13 @@ public enum AjaxAttributeName {
INIT_HANDLER("ih"),
/**
+ * done handler (dh)
+ *
+ * @see AjaxCallListener#getDoneHandler(org.apache.wicket.Component)
+ */
+ DONE_HANDLER("dh"),
+
+ /**
* the indicator id, if any found (i)
*
* @see AbstractDefaultAjaxBehavior#findIndicatorId()
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
index 927c4d7..3ba3fa7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
@@ -36,6 +36,7 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
private StringBuilder after;
private StringBuilder complete;
private StringBuilder precondition;
+ private StringBuilder done;
/**
* Sets the JavaScript code that will be returned by {@link #getInitHandler(Component)}.
@@ -59,6 +60,27 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
}
/**
+ * Sets the JavaScript code that will be returned by {@link #getDoneHandler(Component)}.
+ * If this code was already set, the new one will be appended to the existing one.
+ *
+ * @param init
+ * the JavaScript code for the corresponding handler
+ * @return This
+ */
+ public AjaxCallListener onDone(final CharSequence done)
+ {
+ if (Strings.isEmpty(done) == false)
+ {
+ if (this.done == null)
+ {
+ this.done = new StringBuilder();
+ }
+ this.done.append(done);
+ }
+ return this;
+ }
+
+ /**
* Sets the JavaScript code that will be returned by {@link #getBeforeHandler(Component)}.
* If this code was already set, the new one will be appended to the existing one.
*
@@ -255,6 +277,24 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
return precondition;
}
+
+ /**
+ * The JavaScript that will be executed after the Ajax call is done, regardless whether it was
+ * sent or not. The script will be executed in a function that receives the following
+ * parameters:
+ * <ol>
+ * <li>attrs - the AjaxRequestAttributes as JSON</li>
+ * </ol>
+ * TODO Wicket 7: pull up into IAjaxCallListener
+ *
+ * @param component
+ * the Component with the Ajax behavior
+ * @return the JavaScript that will be executed after the Ajax call is done.
+ */
+ public CharSequence getDoneHandler(Component component) {
+ return done;
+ }
+
@Override
public void renderHead(Component component, IHeaderResponse response)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/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 794c2ef..44de5f0 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
@@ -550,9 +550,6 @@
*/
doAjax: function (attrs) {
- // keep channel for done()
- this.channel = attrs.ch;
-
var
// the headers to use for each Ajax request
headers = {
@@ -611,7 +608,7 @@
}
if (result === false) {
Wicket.Log.info("Ajax request stopped because of precondition check, url: " + attrs.u);
- self.done();
+ self.done(attrs);
return false;
}
}
@@ -702,7 +699,7 @@
self._executeHandlers(attrs.coh, attrs, jqXHR, textStatus);
we.publish(topic.AJAX_CALL_COMPLETE, attrs, jqXHR, textStatus);
- self.done();
+ self.done(attrs);
return FunctionsExecuter.DONE;
}, self));
@@ -759,7 +756,7 @@
// In case the page isn't really redirected. For example say the redirect is to an octet-stream.
// A file download popup will appear but the page in the browser won't change.
this.success(context);
- this.done();
+ this.done(context.attrs);
var rhttp = /^http:\/\//, // checks whether the string starts with http://
rhttps = /^https:\/\//; // checks whether the string starts with https://
@@ -930,7 +927,7 @@
this._executeHandlers(attrs.coh, attrs, null, null);
Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_COMPLETE, attrs, null, null);
- this.done();
+ this.done(attrs);
return FunctionsExecuter.DONE;
}, this);
@@ -1112,8 +1109,11 @@
}, this));
},
- done: function () {
- Wicket.channelManager.done(this.channel);
+ done: function (attrs) {
+ this._executeHandlers(attrs.dh, attrs);
+ Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_DONE, attrs);
+
+ Wicket.channelManager.done(attrs.channel);
},
// Adds a closure that replaces a component
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index 248c99b..1a83c4c 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -323,6 +323,7 @@
AJAX_CALL_COMPLETE : '/ajax/call/complete',
AJAX_CALL_AFTER : '/ajax/call/after',
AJAX_CALL_FAILURE : '/ajax/call/failure',
+ AJAX_CALL_DONE : '/ajax/call/done',
AJAX_HANDLERS_BOUND : '/ajax/handlers/bound'
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
index 8a50bfe..1c9398b 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
@@ -58,7 +58,6 @@ public class AjaxAttributeNameTest
}
Assert.assertEquals("all known json parameter names",
- "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|i|sc|mp|f|c|m|u|sel|",
- sb.toString());
+ "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|dh|i|sc|mp|f|c|m|u|sel|", sb.toString());
}
}
Re: wicket git commit: WICKET-5945 /ajax/call/done
Posted by Sven Meier <sv...@meiers.net>.
Good catch, I'll work on the test.
Sven
On 08.07.2015 12:05, Martin Grigorov wrote:
> Hi Sven,
>
> On Wed, Jul 8, 2015 at 12:58 PM, <sv...@apache.org> wrote:
>
>> Repository: wicket
>> Updated Branches:
>> refs/heads/wicket-6.x 6fa8616f4 -> 051bb4d08
>>
>>
>> WICKET-5945 /ajax/call/done
>>
>> Conflicts:
>>
>> wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/051bb4d0
>> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/051bb4d0
>> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/051bb4d0
>>
>> Branch: refs/heads/wicket-6.x
>> Commit: 051bb4d08cbf13ec85e434f37df2fcf380987d60
>> Parents: 6fa8616
>> Author: Sven Meier <sv...@apache.org>
>> Authored: Wed Jul 8 11:41:27 2015 +0200
>> Committer: Sven Meier <sv...@apache.org>
>> Committed: Wed Jul 8 11:57:17 2015 +0200
>>
>> ----------------------------------------------------------------------
>> .../ajax/AbstractDefaultAjaxBehavior.java | 8 ++++
>> .../ajax/attributes/AjaxAttributeName.java | 7 ++++
>> .../ajax/attributes/AjaxCallListener.java | 40 ++++++++++++++++++++
>> .../wicket/ajax/res/js/wicket-ajax-jquery.js | 18 ++++-----
>> .../wicket/ajax/res/js/wicket-event-jquery.js | 1 +
>> .../ajax/attributes/AjaxAttributeNameTest.java | 3 +-
>> 6 files changed, 66 insertions(+), 11 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
>> index d95330d..06d52cd 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
>> @@ -72,6 +72,7 @@ public abstract class AbstractDefaultAjaxBehavior
>> extends AbstractAjaxBehavior
>> private static final String BEFORE_SEND_HANDLER_FUNCTION_TEMPLATE
>> = "function(attrs, jqXHR, settings){%s}";
>> private static final String BEFORE_HANDLER_FUNCTION_TEMPLATE =
>> "function(attrs){%s}";
>> private static final String INIT_HANDLER_FUNCTION_TEMPLATE =
>> "function(attrs){%s}";
>> + private static final String DONE_HANDLER_FUNCTION_TEMPLATE =
>> "function(attrs){%s}";
>>
>> /**
>> * Subclasses should call super.onBind()
>> @@ -313,6 +314,13 @@ public abstract class AbstractDefaultAjaxBehavior
>> extends AbstractAjaxBehavior
>> CharSequence precondition =
>> ajaxCallListener.getPrecondition(component);
>>
>> appendListenerHandler(precondition, attributesJson,
>>
>> AjaxAttributeName.PRECONDITION.jsonName(), PRECONDITION_FUNCTION_TEMPLATE);
>> +
>> + if (ajaxCallListener instanceof
>> AjaxCallListener) {
>> + CharSequence doneHandler =
>> ((AjaxCallListener) ajaxCallListener).getDoneHandler(component);
>> +
>> appendListenerHandler(doneHandler, attributesJson,
>> +
>> AjaxAttributeName.DONE_HANDLER.jsonName(),
>> +
>> DONE_HANDLER_FUNCTION_TEMPLATE);
>> + }
>> }
>> }
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
>> index 12edc71..bea715d 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
>> @@ -181,6 +181,13 @@ public enum AjaxAttributeName {
>> INIT_HANDLER("ih"),
>>
>> /**
>> + * done handler (dh)
>> + *
>> + * @see
>> AjaxCallListener#getDoneHandler(org.apache.wicket.Component)
>> + */
>> + DONE_HANDLER("dh"),
>> +
>> + /**
>> * the indicator id, if any found (i)
>> *
>> * @see AbstractDefaultAjaxBehavior#findIndicatorId()
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
>> index 927c4d7..3ba3fa7 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
>> @@ -36,6 +36,7 @@ public class AjaxCallListener implements
>> IAjaxCallListener, IComponentAwareHeade
>> private StringBuilder after;
>> private StringBuilder complete;
>> private StringBuilder precondition;
>> + private StringBuilder done;
>>
>> /**
>> * Sets the JavaScript code that will be returned by {@link
>> #getInitHandler(Component)}.
>> @@ -59,6 +60,27 @@ public class AjaxCallListener implements
>> IAjaxCallListener, IComponentAwareHeade
>> }
>>
>> /**
>> + * Sets the JavaScript code that will be returned by {@link
>> #getDoneHandler(Component)}.
>> + * If this code was already set, the new one will be appended to
>> the existing one.
>> + *
>> + * @param init
>> + * the JavaScript code for the corresponding
>> handler
>> + * @return This
>> + */
>> + public AjaxCallListener onDone(final CharSequence done)
>> + {
>> + if (Strings.isEmpty(done) == false)
>> + {
>> + if (this.done == null)
>> + {
>> + this.done = new StringBuilder();
>> + }
>> + this.done.append(done);
>> + }
>> + return this;
>> + }
>> +
>> + /**
>> * Sets the JavaScript code that will be returned by {@link
>> #getBeforeHandler(Component)}.
>> * If this code was already set, the new one will be appended to
>> the existing one.
>> *
>> @@ -255,6 +277,24 @@ public class AjaxCallListener implements
>> IAjaxCallListener, IComponentAwareHeade
>> return precondition;
>> }
>>
>> +
>> + /**
>> + * The JavaScript that will be executed after the Ajax call is
>> done, regardless whether it was
>> + * sent or not. The script will be executed in a function that
>> receives the following
>> + * parameters:
>> + * <ol>
>> + * <li>attrs - the AjaxRequestAttributes as JSON</li>
>> + * </ol>
>> + * TODO Wicket 7: pull up into IAjaxCallListener
>> + *
>> + * @param component
>> + * the Component with the Ajax behavior
>> + * @return the JavaScript that will be executed after the Ajax
>> call is done.
>> + */
>> + public CharSequence getDoneHandler(Component component) {
>> + return done;
>> + }
>> +
>> @Override
>> public void renderHead(Component component, IHeaderResponse
>> response)
>> {
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/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 794c2ef..44de5f0 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
>> @@ -550,9 +550,6 @@
>> */
>> doAjax: function (attrs) {
>>
>> - // keep channel for done()
>> - this.channel = attrs.ch;
>> -
>> var
>> // the headers to use for each Ajax request
>> headers = {
>> @@ -611,7 +608,7 @@
>> }
>> if (result === false) {
>> Wicket.Log.info("Ajax
>> request stopped because of precondition check, url: " + attrs.u);
>> - self.done();
>> + self.done(attrs);
>> return false;
>> }
>> }
>> @@ -702,7 +699,7 @@
>>
>> self._executeHandlers(attrs.coh, attrs, jqXHR, textStatus);
>>
>> we.publish(topic.AJAX_CALL_COMPLETE, attrs, jqXHR, textStatus);
>>
>> - self.done();
>> + self.done(attrs);
>> return
>> FunctionsExecuter.DONE;
>> }, self));
>>
>> @@ -759,7 +756,7 @@
>> // In case the page isn't really
>> redirected. For example say the redirect is to an octet-stream.
>> // A file download popup will
>> appear but the page in the browser won't change.
>> this.success(context);
>> - this.done();
>> + this.done(context.attrs);
>>
>> var rhttp = /^http:\/\//, //
>> checks whether the string starts with http://
>> rhttps = /^https:\/\//; //
>> checks whether the string starts with https://
>> @@ -930,7 +927,7 @@
>> this._executeHandlers(attrs.coh, attrs,
>> null, null);
>>
>> Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_COMPLETE, attrs, null,
>> null);
>>
>> - this.done();
>> + this.done(attrs);
>> return FunctionsExecuter.DONE;
>> }, this);
>>
>> @@ -1112,8 +1109,11 @@
>> }, this));
>> },
>>
>> - done: function () {
>> - Wicket.channelManager.done(this.channel);
>> + done: function (attrs) {
>> + this._executeHandlers(attrs.dh, attrs);
>> +
>> Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_DONE, attrs);
>> +
>> + Wicket.channelManager.done(attrs.channel);
>>
> s/attrs.channel/attrs.ch/
>
>
>> },
>>
>> // Adds a closure that replaces a component
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
>> ----------------------------------------------------------------------
>> diff --git
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
>> index 248c99b..1a83c4c 100644
>> ---
>> a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
>> +++
>> b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
>> @@ -323,6 +323,7 @@
>> AJAX_CALL_COMPLETE :
>> '/ajax/call/complete',
>> AJAX_CALL_AFTER :
>> '/ajax/call/after',
>> AJAX_CALL_FAILURE :
>> '/ajax/call/failure',
>> + AJAX_CALL_DONE : '/ajax/call/done',
>> AJAX_HANDLERS_BOUND :
>> '/ajax/handlers/bound'
>> }
>> }
>>
>>
>> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>> b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>> index 8a50bfe..1c9398b 100644
>> ---
>> a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>> +++
>> b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>> @@ -58,7 +58,6 @@ public class AjaxAttributeNameTest
>> }
>>
>> Assert.assertEquals("all known json parameter names",
>> -
>> "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|i|sc|mp|f|c|m|u|sel|",
>> - sb.toString());
>> +
>> "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|dh|i|sc|mp|f|c|m|u|sel|",
>> sb.toString());
>> }
>> }
>>
>>
> Please add JS Unit tests for the new handler.
> Also add an entry to
> http://ci.apache.org/projects/wicket/guide/6.x/guide/ajax.html#ajax_5
>
> Thanks!
>
Re: wicket git commit: WICKET-5945 /ajax/call/done
Posted by Martin Grigorov <mg...@apache.org>.
Hi Sven,
On Wed, Jul 8, 2015 at 12:58 PM, <sv...@apache.org> wrote:
> Repository: wicket
> Updated Branches:
> refs/heads/wicket-6.x 6fa8616f4 -> 051bb4d08
>
>
> WICKET-5945 /ajax/call/done
>
> Conflicts:
>
> wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/051bb4d0
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/051bb4d0
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/051bb4d0
>
> Branch: refs/heads/wicket-6.x
> Commit: 051bb4d08cbf13ec85e434f37df2fcf380987d60
> Parents: 6fa8616
> Author: Sven Meier <sv...@apache.org>
> Authored: Wed Jul 8 11:41:27 2015 +0200
> Committer: Sven Meier <sv...@apache.org>
> Committed: Wed Jul 8 11:57:17 2015 +0200
>
> ----------------------------------------------------------------------
> .../ajax/AbstractDefaultAjaxBehavior.java | 8 ++++
> .../ajax/attributes/AjaxAttributeName.java | 7 ++++
> .../ajax/attributes/AjaxCallListener.java | 40 ++++++++++++++++++++
> .../wicket/ajax/res/js/wicket-ajax-jquery.js | 18 ++++-----
> .../wicket/ajax/res/js/wicket-event-jquery.js | 1 +
> .../ajax/attributes/AjaxAttributeNameTest.java | 3 +-
> 6 files changed, 66 insertions(+), 11 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
> b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
> index d95330d..06d52cd 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
> @@ -72,6 +72,7 @@ public abstract class AbstractDefaultAjaxBehavior
> extends AbstractAjaxBehavior
> private static final String BEFORE_SEND_HANDLER_FUNCTION_TEMPLATE
> = "function(attrs, jqXHR, settings){%s}";
> private static final String BEFORE_HANDLER_FUNCTION_TEMPLATE =
> "function(attrs){%s}";
> private static final String INIT_HANDLER_FUNCTION_TEMPLATE =
> "function(attrs){%s}";
> + private static final String DONE_HANDLER_FUNCTION_TEMPLATE =
> "function(attrs){%s}";
>
> /**
> * Subclasses should call super.onBind()
> @@ -313,6 +314,13 @@ public abstract class AbstractDefaultAjaxBehavior
> extends AbstractAjaxBehavior
> CharSequence precondition =
> ajaxCallListener.getPrecondition(component);
>
> appendListenerHandler(precondition, attributesJson,
>
> AjaxAttributeName.PRECONDITION.jsonName(), PRECONDITION_FUNCTION_TEMPLATE);
> +
> + if (ajaxCallListener instanceof
> AjaxCallListener) {
> + CharSequence doneHandler =
> ((AjaxCallListener) ajaxCallListener).getDoneHandler(component);
> +
> appendListenerHandler(doneHandler, attributesJson,
> +
> AjaxAttributeName.DONE_HANDLER.jsonName(),
> +
> DONE_HANDLER_FUNCTION_TEMPLATE);
> + }
> }
> }
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
> index 12edc71..bea715d 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
> @@ -181,6 +181,13 @@ public enum AjaxAttributeName {
> INIT_HANDLER("ih"),
>
> /**
> + * done handler (dh)
> + *
> + * @see
> AjaxCallListener#getDoneHandler(org.apache.wicket.Component)
> + */
> + DONE_HANDLER("dh"),
> +
> + /**
> * the indicator id, if any found (i)
> *
> * @see AbstractDefaultAjaxBehavior#findIndicatorId()
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
> index 927c4d7..3ba3fa7 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
> @@ -36,6 +36,7 @@ public class AjaxCallListener implements
> IAjaxCallListener, IComponentAwareHeade
> private StringBuilder after;
> private StringBuilder complete;
> private StringBuilder precondition;
> + private StringBuilder done;
>
> /**
> * Sets the JavaScript code that will be returned by {@link
> #getInitHandler(Component)}.
> @@ -59,6 +60,27 @@ public class AjaxCallListener implements
> IAjaxCallListener, IComponentAwareHeade
> }
>
> /**
> + * Sets the JavaScript code that will be returned by {@link
> #getDoneHandler(Component)}.
> + * If this code was already set, the new one will be appended to
> the existing one.
> + *
> + * @param init
> + * the JavaScript code for the corresponding
> handler
> + * @return This
> + */
> + public AjaxCallListener onDone(final CharSequence done)
> + {
> + if (Strings.isEmpty(done) == false)
> + {
> + if (this.done == null)
> + {
> + this.done = new StringBuilder();
> + }
> + this.done.append(done);
> + }
> + return this;
> + }
> +
> + /**
> * Sets the JavaScript code that will be returned by {@link
> #getBeforeHandler(Component)}.
> * If this code was already set, the new one will be appended to
> the existing one.
> *
> @@ -255,6 +277,24 @@ public class AjaxCallListener implements
> IAjaxCallListener, IComponentAwareHeade
> return precondition;
> }
>
> +
> + /**
> + * The JavaScript that will be executed after the Ajax call is
> done, regardless whether it was
> + * sent or not. The script will be executed in a function that
> receives the following
> + * parameters:
> + * <ol>
> + * <li>attrs - the AjaxRequestAttributes as JSON</li>
> + * </ol>
> + * TODO Wicket 7: pull up into IAjaxCallListener
> + *
> + * @param component
> + * the Component with the Ajax behavior
> + * @return the JavaScript that will be executed after the Ajax
> call is done.
> + */
> + public CharSequence getDoneHandler(Component component) {
> + return done;
> + }
> +
> @Override
> public void renderHead(Component component, IHeaderResponse
> response)
> {
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/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 794c2ef..44de5f0 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
> @@ -550,9 +550,6 @@
> */
> doAjax: function (attrs) {
>
> - // keep channel for done()
> - this.channel = attrs.ch;
> -
> var
> // the headers to use for each Ajax request
> headers = {
> @@ -611,7 +608,7 @@
> }
> if (result === false) {
> Wicket.Log.info("Ajax
> request stopped because of precondition check, url: " + attrs.u);
> - self.done();
> + self.done(attrs);
> return false;
> }
> }
> @@ -702,7 +699,7 @@
>
> self._executeHandlers(attrs.coh, attrs, jqXHR, textStatus);
>
> we.publish(topic.AJAX_CALL_COMPLETE, attrs, jqXHR, textStatus);
>
> - self.done();
> + self.done(attrs);
> return
> FunctionsExecuter.DONE;
> }, self));
>
> @@ -759,7 +756,7 @@
> // In case the page isn't really
> redirected. For example say the redirect is to an octet-stream.
> // A file download popup will
> appear but the page in the browser won't change.
> this.success(context);
> - this.done();
> + this.done(context.attrs);
>
> var rhttp = /^http:\/\//, //
> checks whether the string starts with http://
> rhttps = /^https:\/\//; //
> checks whether the string starts with https://
> @@ -930,7 +927,7 @@
> this._executeHandlers(attrs.coh, attrs,
> null, null);
>
> Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_COMPLETE, attrs, null,
> null);
>
> - this.done();
> + this.done(attrs);
> return FunctionsExecuter.DONE;
> }, this);
>
> @@ -1112,8 +1109,11 @@
> }, this));
> },
>
> - done: function () {
> - Wicket.channelManager.done(this.channel);
> + done: function (attrs) {
> + this._executeHandlers(attrs.dh, attrs);
> +
> Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_DONE, attrs);
> +
> + Wicket.channelManager.done(attrs.channel);
>
s/attrs.channel/attrs.ch/
> },
>
> // Adds a closure that replaces a component
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
> b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
> index 248c99b..1a83c4c 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
> +++
> b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
> @@ -323,6 +323,7 @@
> AJAX_CALL_COMPLETE :
> '/ajax/call/complete',
> AJAX_CALL_AFTER :
> '/ajax/call/after',
> AJAX_CALL_FAILURE :
> '/ajax/call/failure',
> + AJAX_CALL_DONE : '/ajax/call/done',
> AJAX_HANDLERS_BOUND :
> '/ajax/handlers/bound'
> }
> }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/051bb4d0/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
> b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
> index 8a50bfe..1c9398b 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
> @@ -58,7 +58,6 @@ public class AjaxAttributeNameTest
> }
>
> Assert.assertEquals("all known json parameter names",
> -
> "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|i|sc|mp|f|c|m|u|sel|",
> - sb.toString());
> +
> "tr|p|d|id|dt|wr|rt|ad|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|dh|i|sc|mp|f|c|m|u|sel|",
> sb.toString());
> }
> }
>
>
Please add JS Unit tests for the new handler.
Also add an entry to
http://ci.apache.org/projects/wicket/guide/6.x/guide/ajax.html#ajax_5
Thanks!