Hi,

I don't like to add additional classes and/or longer class names. Neither should we deprecate any 'old' solutions.
I'm not keen on the Component#on(String, AjaxListener) method either.

My idea:
3)

public static AjaxEventBehavior lambda(String event, WicketConsumer<AjaxRequestTarget> consumer) {
        return new AjaxEventBehavior(event) {
            @Override
            protected void onEvent(AjaxRequestTarget target)
            {
                consumer.accept(target);
            }
        };
    }

Usage:

   public MyPanel(String id) {
     super(id);

     label = ...;
     label.add(AjaxEventBehavior.lambda("click", this::onDoAjax);
   }

   private void onDoAjax(AjaxRequestTarget target) { ... }



Sven


On 11.03.2016 21:45, Martin Grigorov wrote:
Hi,

I'd like to ask you for your opinion on the following options:

1) introduce java.util.function.Consumer in the existing components and
behaviors
Example:
https://github.com/apache/wicket/blob/lambdas-ajax/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java

Pros:
  - reuse the same components/behaviors as before

Cons:
- the components/behaviors are no more abstract and the developer may
forget to add implementation, i.e. provide consumer or override #onXyz()
method

2) introduce new components and behaviors
Example:
https://github.com/apache/wicket/blob/lambdas-ajax-L/wicket-core/src/main/java/org/apache/wicket/ajax/LAjaxEventBehavior.java

Pros:
- more cleaner API

Cons:
- yet another class for the same functionality
- a bit uglier name. Whatever name I imagine doesn't sound better than the
name of the original class

3) 2) but in separate module (e.g. wicket-java8)

4) 2) but in WicketStuff project

5) Other ideas ?

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov


Reply via email to