Hi Sven,

On Wed, Oct 28, 2015 at 10:02 PM, <[email protected]> wrote:

> Repository: wicket
> Updated Branches:
>   refs/heads/wicket-7.x 5a5ae6d73 -> e74fdcf21
>
>
> WICKET-6013 add css classes to AjaxFallbackOrderByBorder too
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e74fdcf2
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e74fdcf2
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e74fdcf2
>
> Branch: refs/heads/wicket-7.x
> Commit: e74fdcf219938fe3b262fdec742a7bc15694c4b6
> Parents: 5a5ae6d
> Author: Sven Meier <[email protected]>
> Authored: Wed Oct 28 20:59:28 2015 +0100
> Committer: Sven Meier <[email protected]>
> Committed: Wed Oct 28 20:59:28 2015 +0100
>
> ----------------------------------------------------------------------
>  .../data/sort/AjaxFallbackOrderByBorder.java    | 21 ++++++++++++--------
>  1 file changed, 13 insertions(+), 8 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/e74fdcf2/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
> b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
> index 7355b23..f38e53c 100644
> ---
> a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
> +++
> b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
> @@ -20,7 +20,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
>  import org.apache.wicket.ajax.attributes.IAjaxCallListener;
>  import
> org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator;
>  import
> org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByBorder;
> -import org.apache.wicket.markup.html.border.Border;
> +import
> org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink;
>
>
>  /**
> @@ -35,9 +35,10 @@ import org.apache.wicket.markup.html.border.Border;
>   * @author Igor Vaynberg (ivaynberg)
>   *
>   */
> -public abstract class AjaxFallbackOrderByBorder<S> extends Border
> +public abstract class AjaxFallbackOrderByBorder<S> extends
> OrderByBorder<S>
>  {
>         private static final long serialVersionUID = 1L;
> +       private IAjaxCallListener ajaxCallListener;
>

IAjaxCallListener is not Serializable.
AjaxCallListener happens to be Serializable because it inherits
IComponentAwareHeaderContributor, but it is not guaranteed that the
application will use AjaxCallListener. It may use custom IACL.


>
>         /**
>          * Constructor
> @@ -63,9 +64,16 @@ public abstract class AjaxFallbackOrderByBorder<S>
> extends Border
>         public AjaxFallbackOrderByBorder(final String id, final S
> sortProperty,
>                 final ISortStateLocator<S> stateLocator, final
> IAjaxCallListener ajaxCallListener)
>         {
> -               super(id);
> -               AjaxFallbackOrderByLink<S> link = new
> AjaxFallbackOrderByLink<S>("orderByLink", sortProperty,
> -                       stateLocator, ajaxCallListener)
> +               super(id, sortProperty, stateLocator);
> +
> +               this.ajaxCallListener = ajaxCallListener;
> +       }
> +
> +       @Override
> +       protected OrderByLink<S> newOrderByLink(String id, S property,
> +               ISortStateLocator<S> stateLocator)
> +       {
> +               return new AjaxFallbackOrderByLink<S>("orderByLink",
> property, stateLocator, ajaxCallListener)
>

I see that AjaxFallbackOrderByLink uses this IACL field since a long time.
And it was me who migrated this from IAjaxCallDecorator (Wicket 1.5.x) to
IAjaxCallListener (Wicket 6.x)...
IMO this is bad design. Ajax** components should provide "protected void
updateAjaxAttributes(attrs)", e.g.
org.apache.wicket.ajax.markup.html.AjaxLink#updateAjaxAttributes().
This way the application developer has more control than just being able to
provide custom IACL.
I think we should improve this in 7.x and remove the IACL field in 8.x.
WDYT ?


>                 {
>
>                         private static final long serialVersionUID = 1L;
> @@ -83,10 +91,7 @@ public abstract class AjaxFallbackOrderByBorder<S>
> extends Border
>
>                         }
>                 };
> -               addToBorder(link);
> -               link.add(getBodyContainer());
>         }
> -
>         /**
>          * This method is a hook for subclasses to perform an action after
> sort has changed
>          */
>
>

Reply via email to