Hi,

> org.apache.wicket.lambdas

IMHO org.apache.wicket.lambda (not the singular) would be better: it aligns with org.apache.wicket.model.lambda and follows other package namings.

> Lambdas

What's the purpose of this class - is it supposed to ease static imports in an IDE? I'd rather keep all those implementations in the relevant classes, instead of this single location. If you see the need for such a 'collector', we could reverse the delegation:

public class Lambdas {

public static AjaxSelfUpdatingTimerBehavior onSelfUpdate(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer)
    {
return AjaxSelfUpdatingTimerBehavior.onSelfUpdate(interval, onTimer);
    }

}

In this case I think a plural makes sense though.

Regards
Sven


On 12.03.2016 21:51, [email protected] wrote:
Repository: wicket
Updated Branches:
   refs/heads/static-factories-for-lambdas 229fee822 -> d3bee7507


Introduce Lambdas class - a class with factory methods for creating components 
and behaviors by using lambdas for their callback methods


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

Branch: refs/heads/static-factories-for-lambdas
Commit: d3bee7507e14e7a1dc8ba9e9a0c77e02bffacda6
Parents: 229fee8
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Sat Mar 12 21:50:13 2016 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Sat Mar 12 21:50:13 2016 +0100

----------------------------------------------------------------------
  .../wicket/ajax/AbstractAjaxTimerBehavior.java  |  15 +-
  .../wicket/ajax/AjaxClientInfoBehavior.java     |  15 +-
  .../apache/wicket/ajax/AjaxEventBehavior.java   |  14 +-
  .../ajax/AjaxNewWindowNotifyingBehavior.java    |  24 +-
  .../ajax/AjaxSelfUpdatingTimerBehavior.java     |  15 +-
  ...AjaxFormChoiceComponentUpdatingBehavior.java |  34 +-
  .../form/AjaxFormComponentUpdatingBehavior.java |  35 +-
  .../ajax/form/AjaxFormSubmitBehavior.java       |  33 +-
  .../wicket/ajax/form/OnChangeAjaxBehavior.java  |  35 +-
  .../ajax/markup/html/AjaxFallbackLink.java      |   2 -
  .../wicket/ajax/markup/html/AjaxLink.java       |  17 +-
  .../ajax/markup/html/form/AjaxButton.java       |  40 +-
  .../ajax/markup/html/form/AjaxCheckBox.java     |  17 +-
  .../ajax/markup/html/form/AjaxSubmitLink.java   |  33 +-
  .../java/org/apache/wicket/lambdas/Lambdas.java | 366 +++++++++++++++++++
  .../apache/wicket/lambdas/WicketBiConsumer.java |  32 ++
  .../apache/wicket/lambdas/WicketConsumer.java   |  30 ++
  .../apache/wicket/lambdas/WicketFunction.java   |  32 ++
  .../apache/wicket/lambdas/WicketSupplier.java   |  30 ++
  .../apache/wicket/markup/html/link/Link.java    |  17 +-
  .../java/org/apache/wicket/model/Model.java     |  41 +++
  .../apache/wicket/model/lambda/LambdaModel.java |   7 +-
  .../model/lambda/SupplierCachingModel.java      |   1 +
  .../wicket/model/lambda/SupplierModel.java      |   1 +
  .../wicket/model/lambda/WicketBiConsumer.java   |  32 --
  .../wicket/model/lambda/WicketConsumer.java     |  30 --
  .../wicket/model/lambda/WicketFunction.java     |  32 --
  .../wicket/model/lambda/WicketSupplier.java     |  30 --
  .../wicket/model/lambda/LambdaModelTest.java    |   2 +
  .../model/lambda/SupplierCachingModelTest.java  |   1 +
  .../wicket/model/lambda/SupplierModelTest.java  |   1 +
  .../ajax/markup/html/IndicatingAjaxButton.java  |   9 +-
  .../ajax/markup/html/IndicatingAjaxLink.java    |   2 +-
  33 files changed, 603 insertions(+), 422 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
index aef5591..4a3609c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java
@@ -19,10 +19,10 @@ package org.apache.wicket.ajax;
  import org.apache.wicket.Component;
  import org.apache.wicket.Page;
  import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.head.IHeaderResponse;
  import org.apache.wicket.markup.head.OnLoadHeaderItem;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
  import org.apache.wicket.util.time.Duration;
/**
@@ -165,16 +165,7 @@ public abstract class AbstractAjaxTimerBehavior extends 
AbstractDefaultAjaxBehav
public static AbstractAjaxTimerBehavior onTimer(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer)
        {
-               Args.notNull(onTimer, "onTimer");
-
-               return new AbstractAjaxTimerBehavior(interval)
-               {
-                       @Override
-                       protected void onTimer(AjaxRequestTarget target)
-                       {
-                               onTimer.accept(target);
-                       }
-               };
+               return Lambdas.onTimer(interval, onTimer);
        }
/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
index 22c9316..bd7c954 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java
@@ -19,15 +19,15 @@ package org.apache.wicket.ajax;
  import org.apache.wicket.Component;
  import org.apache.wicket.Session;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
  import org.apache.wicket.markup.head.IHeaderResponse;
  import org.apache.wicket.markup.head.JavaScriptHeaderItem;
  import org.apache.wicket.markup.html.pages.BrowserInfoForm;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
  import org.apache.wicket.protocol.http.ClientProperties;
  import org.apache.wicket.protocol.http.request.WebClientInfo;
  import org.apache.wicket.request.IRequestParameters;
  import org.apache.wicket.request.cycle.RequestCycle;
-import org.apache.wicket.util.lang.Args;
  import org.apache.wicket.util.time.Duration;
/**
@@ -122,16 +122,7 @@ public class AjaxClientInfoBehavior extends 
AbstractAjaxTimerBehavior
public static AjaxClientInfoBehavior onClientInfo(WicketBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
        {
-               Args.notNull(onClientInfo, "onClientInfo");
-
-               return new AjaxClientInfoBehavior()
-               {
-                       @Override
-                       protected void onClientInfo(AjaxRequestTarget target, 
WebClientInfo clientInfo)
-                       {
-                               onClientInfo.accept(target, clientInfo);
-                       }
-               };
+               return Lambdas.onClientInfo(onClientInfo);
        }
@Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
index 7a11b2d..fa49035 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
@@ -21,9 +21,10 @@ import java.util.List;
import org.apache.wicket.Component;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.head.IHeaderResponse;
  import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
-import org.apache.wicket.model.lambda.WicketConsumer;
  import org.apache.wicket.util.lang.Args;
  import org.apache.wicket.util.lang.Checks;
  import org.apache.wicket.util.string.Strings;
@@ -166,15 +167,6 @@ public abstract class AjaxEventBehavior extends 
AbstractDefaultAjaxBehavior
public static AjaxEventBehavior onEvent(String eventName, WicketConsumer<AjaxRequestTarget> onEvent)
        {
-               Args.notNull(onEvent, "onEvent");
-
-               return new AjaxEventBehavior(eventName)
-               {
-                       @Override
-                       protected void onEvent(AjaxRequestTarget target)
-                       {
-                               onEvent.accept(target);
-                       }
-               };
+               return Lambdas.onEvent(eventName, onEvent);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
index 932d54e..130666b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java
@@ -21,16 +21,13 @@ import java.util.UUID;
  import org.apache.wicket.Component;
  import org.apache.wicket.WicketRuntimeException;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.head.IHeaderResponse;
  import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
  import org.apache.wicket.markup.head.OnLoadHeaderItem;
  import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.protocol.http.request.WebClientInfo;
-import org.apache.wicket.util.lang.Args;
  import org.apache.wicket.util.string.StringValue;
-import org.apache.wicket.util.string.Strings;
/**
   * An Ajax behavior that notifies when a new browser window/tab is opened with
@@ -133,21 +130,6 @@ public abstract class AjaxNewWindowNotifyingBehavior 
extends AbstractDefaultAjax
public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName, WicketConsumer<AjaxRequestTarget> onNewWindow)
        {
-               Args.notNull(onNewWindow, "onNewWindow");
-
-               if (Strings.isEmpty(windowName))
-               {
-                       windowName = UUID.randomUUID().toString();
-               }
-
-               return new AjaxNewWindowNotifyingBehavior(windowName)
-               {
-                       @Override
-                       protected void onNewWindow(AjaxRequestTarget target)
-                       {
-                               onNewWindow.accept(target);
-                       }
-               };
+               return Lambdas.onNewWindow(windowName, onNewWindow);
        }
-
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java
index 479a6b9..d615ae5 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java
@@ -16,8 +16,8 @@
   */
  package org.apache.wicket.ajax;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.util.time.Duration;
/**
@@ -67,15 +67,6 @@ public class AjaxSelfUpdatingTimerBehavior extends 
AbstractAjaxTimerBehavior
public static AbstractAjaxTimerBehavior onSelfUpdate(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer)
        {
-               Args.notNull(onTimer, "onTimer");
-
-               return new AjaxSelfUpdatingTimerBehavior(interval)
-               {
-                       @Override
-                       protected void onPostProcessTarget(AjaxRequestTarget 
target)
-                       {
-                               onTimer.accept(target);
-                       }
-               };
+               return Lambdas.onSelfUpdate(interval, onTimer);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java
index e5bc69a..19915d6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java
@@ -21,14 +21,14 @@ import org.apache.wicket.WicketRuntimeException;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxCallListener;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.html.form.CheckBoxMultipleChoice;
  import org.apache.wicket.markup.html.form.CheckGroup;
  import org.apache.wicket.markup.html.form.FormComponent;
  import org.apache.wicket.markup.html.form.RadioChoice;
  import org.apache.wicket.markup.html.form.RadioGroup;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * This is a Ajax Component Update Behavior that is meant for choices/groups 
that are not one
@@ -114,36 +114,12 @@ public abstract class 
AjaxFormChoiceComponentUpdatingBehavior extends
                        (component instanceof CheckGroup);
        }
-
        public static AjaxFormChoiceComponentUpdatingBehavior 
onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice) {
-               Args.notNull(onUpdateChoice, "onUpdateChoice");
-               return new AjaxFormChoiceComponentUpdatingBehavior()
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onUpdateChoice.accept(target);
-                       }
-               };
+               return Lambdas.onUpdateChoice(onUpdateChoice);
        }
public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice,
                                                                 
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) {
-               Args.notNull(onUpdateChoice, "onUpdateChoice");
-               Args.notNull(onError, "onError");
-               return new AjaxFormChoiceComponentUpdatingBehavior()
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onUpdateChoice.accept(target);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
-                       {
-                               onError.accept(target, e);
-                       }
-               };
+               return Lambdas.onUpdateChoice(onUpdateChoice, onError);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java
index 97b31a3..490afd6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java
@@ -23,11 +23,11 @@ import org.apache.wicket.ajax.AjaxEventBehavior;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.html.form.FormComponent;
  import org.apache.wicket.markup.html.form.validation.IFormValidator;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
@@ -205,39 +205,14 @@ public abstract class AjaxFormComponentUpdatingBehavior extends AjaxEventBehavio public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName, WicketConsumer<AjaxRequestTarget> onUpdate)
        {
-               Args.notNull(onUpdate, "onUpdate");
-
-               return new AjaxFormComponentUpdatingBehavior(eventName)
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onUpdate.accept(target);
-                       }
-               };
+               return Lambdas.onUpdate(eventName, onUpdate);
        }
public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName,
                                                                 
WicketConsumer<AjaxRequestTarget> onUpdate,
                                                                 
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
        {
-               Args.notNull(onUpdate, "onUpdate");
-               Args.notNull(onError, "onError");
-
-               return new AjaxFormComponentUpdatingBehavior(eventName)
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onUpdate.accept(target);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
-                       {
-                               onError.accept(target, e);
-                       }
-               };
+               return onUpdate(eventName, onUpdate, onError);
        }
/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
index 7b7c4a0..7011481 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
@@ -21,12 +21,12 @@ import org.apache.wicket.ajax.AjaxEventBehavior;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.html.form.Button;
  import org.apache.wicket.markup.html.form.Form;
  import org.apache.wicket.markup.html.form.IFormSubmitter;
  import org.apache.wicket.markup.html.form.IFormSubmittingComponent;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * Ajax event behavior that submits a form via ajax when the event it is 
attached to, is invoked.
@@ -272,37 +272,12 @@ public abstract class AjaxFormSubmitBehavior extends 
AjaxEventBehavior
public static AjaxFormSubmitBehavior onSubmit(String eventName, WicketConsumer<AjaxRequestTarget> onSubmit)
        {
-               Args.notNull(onSubmit, "onSubmit");
-
-               return new AjaxFormSubmitBehavior(eventName)
-               {
-                       @Override
-                       protected void onSubmit(AjaxRequestTarget target)
-                       {
-                               onSubmit.accept(target);
-                       }
-               };
+               return Lambdas.onSubmit(eventName, onSubmit);
        }
public static AjaxFormSubmitBehavior onSubmit(String eventName,
                                                      
WicketConsumer<AjaxRequestTarget> onSubmit,
                                                      
WicketConsumer<AjaxRequestTarget> onError) {
-               Args.notNull(onSubmit, "onSubmit");
-               Args.notNull(onError, "onError");
-
-               return new AjaxFormSubmitBehavior(eventName)
-               {
-                       @Override
-                       protected void onSubmit(AjaxRequestTarget target)
-                       {
-                               onSubmit.accept(target);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target)
-                       {
-                               onError.accept(target);
-                       }
-               };
+               return Lambdas.onSubmit(eventName, onSubmit, onError);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
index e1f2d9b..01c07a8 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
@@ -19,12 +19,12 @@ package org.apache.wicket.ajax.form;
  import org.apache.wicket.Component;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.html.form.FormComponent;
  import org.apache.wicket.markup.html.form.TextArea;
  import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * A behavior that updates the hosting {@link FormComponent} via Ajax when 
value of the component is
@@ -80,38 +80,13 @@ public abstract class OnChangeAjaxBehavior extends 
AjaxFormComponentUpdatingBeha
public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange)
        {
-               Args.notNull(onChange, "onChange");
-
-               return new OnChangeAjaxBehavior()
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onChange.accept(target);
-                       }
-               };
+               return Lambdas.onChange(onChange);
        }
public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange,
                                                    
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
        {
-               Args.notNull(onChange, "onChange");
-               Args.notNull(onError, "onError");
-
-               return new OnChangeAjaxBehavior()
-               {
-                       @Override
-                       protected void onUpdate(AjaxRequestTarget target)
-                       {
-                               onChange.accept(target);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
-                       {
-                               onError.accept(target, e);
-                       }
-               };
+               return Lambdas.onChange(onChange, onError);
        }
}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java
index 29ccb99..d4f95a3 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java
@@ -24,8 +24,6 @@ import 
org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.markup.ComponentTag;
  import org.apache.wicket.markup.html.link.Link;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * An ajax link that will degrade to a normal request if ajax is not 
available or javascript is

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java
index bf3d4d5..1907f58 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java
@@ -20,11 +20,11 @@ import org.apache.wicket.IGenericComponent;
  import org.apache.wicket.ajax.AjaxEventBehavior;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.ComponentTag;
  import org.apache.wicket.markup.html.link.AbstractLink;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * A component that allows a trigger request to be triggered via html anchor 
tag
@@ -135,17 +135,8 @@ public abstract class AjaxLink<T> extends AbstractLink 
implements IAjaxLink, IGe
        @Override
        public abstract void onClick(final AjaxRequestTarget target);
- public static <T> AjaxLink<T> ajaxLink(String id, WicketConsumer<AjaxRequestTarget> onClick)
+       public static <T> AjaxLink<T> onClick(String id, 
WicketConsumer<AjaxRequestTarget> onClick)
        {
-               Args.notNull(onClick, "onClick");
-
-               return new AjaxLink<T>(id)
-               {
-                       @Override
-                       public void onClick(AjaxRequestTarget target)
-                       {
-                               onClick.accept(target);
-                       }
-               };
+               return Lambdas.ajaxLink(id, onClick);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
index ce2fcf7..9d3732f 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
@@ -19,12 +19,12 @@ package org.apache.wicket.ajax.markup.html.form;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
  import org.apache.wicket.markup.ComponentTag;
  import org.apache.wicket.markup.html.form.Button;
  import org.apache.wicket.markup.html.form.Form;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.util.lang.Args;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
@@ -219,40 +219,16 @@ public abstract class AjaxButton extends Button
        {
        }
- public static AjaxButton ajaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
+       public static AjaxButton onSubmit(String id, WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onSubmit)
        {
-               Args.notNull(onSubmit, "onSubmit");
-
-               return new AjaxButton(id)
-               {
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
-                       {
-                               onSubmit.accept(target, form);
-                       }
-               };
+               return Lambdas.ajaxButton(id, onSubmit);
        }
- public static AjaxButton ajaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit,
-                                         WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
+       public static AjaxButton onSubmit(String id,
+                                           WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onSubmit,
+                                           WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
        {
-               Args.notNull(onSubmit, "onSubmit");
-               Args.notNull(onError, "onError");
-
-               return new AjaxButton(id)
-               {
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
-                       {
-                               onSubmit.accept(target, form);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
Form<?> form)
-                       {
-                               onError.accept(target, form);
-                       }
-               };
+               return Lambdas.ajaxButton(id, onSubmit, onError);
        }
/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java
index 54e8b3d..5dba68e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java
@@ -19,10 +19,10 @@ package org.apache.wicket.ajax.markup.html.form;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.html.form.CheckBox;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketConsumer;
-import org.apache.wicket.util.lang.Args;
/**
   * A CheckBox which is updated via ajax when the user changes its value
@@ -92,17 +92,8 @@ public abstract class AjaxCheckBox extends CheckBox
         */
        protected abstract void onUpdate(AjaxRequestTarget target);
- public static AjaxCheckBox ajaxCheckBox(String id, WicketConsumer<AjaxRequestTarget> onUpdate)
+       public static AjaxCheckBox onUpdate(String id, 
WicketConsumer<AjaxRequestTarget> onUpdate)
        {
-               Args.notNull(onUpdate, "onUpdate");
-
-               return new AjaxCheckBox(id)
-               {
-                       @Override
-                       public void onUpdate(AjaxRequestTarget target)
-                       {
-                               onUpdate.accept(target);
-                       }
-               };
+               return Lambdas.ajaxCheckBox(id, onUpdate);
        }
  }

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
index f369bf6..552f64c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java
@@ -19,11 +19,11 @@ package org.apache.wicket.ajax.markup.html.form;
  import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
  import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketBiConsumer;
  import org.apache.wicket.markup.ComponentTag;
  import org.apache.wicket.markup.html.form.AbstractSubmitLink;
  import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
-import org.apache.wicket.util.lang.Args;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
@@ -138,39 +138,14 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink public static AjaxSubmitLink ajaxSubmitLink(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
        {
-               Args.notNull(onSubmit, "onSubmit");
-
-               return new AjaxSubmitLink(id)
-               {
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
-                       {
-                               onSubmit.accept(target, form);
-                       }
-               };
+               return Lambdas.ajaxSubmitLink(id, onSubmit);
        }
public static AjaxSubmitLink ajaxSubmitLink(String id,
                                                    WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onSubmit,
                                                    WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
        {
-               Args.notNull(onSubmit, "onSubmit");
-               Args.notNull(onError, "onError");
-
-               return new AjaxSubmitLink(id)
-               {
-                       @Override
-                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
-                       {
-                               onSubmit.accept(target, form);
-                       }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target, 
Form<?> form)
-                       {
-                               onError.accept(target, form);
-                       }
-               };
+               return Lambdas.ajaxSubmitLink(id, onSubmit, onError);
        }
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/lambdas/Lambdas.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambdas/Lambdas.java 
b/wicket-core/src/main/java/org/apache/wicket/lambdas/Lambdas.java
new file mode 100644
index 0000000..0397706
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/lambdas/Lambdas.java
@@ -0,0 +1,366 @@
+package org.apache.wicket.lambdas;
+
+import java.util.UUID;
+
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxClientInfoBehavior;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxNewWindowNotifyingBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
+import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.util.lang.Args;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ *
+ */
+public class Lambdas
+{
+       public static AbstractAjaxTimerBehavior onTimer(Duration interval, 
WicketConsumer<AjaxRequestTarget> onTimer)
+       {
+               Args.notNull(onTimer, "onTimer");
+
+               return new AbstractAjaxTimerBehavior(interval)
+               {
+                       @Override
+                       protected void onTimer(AjaxRequestTarget target)
+                       {
+                               onTimer.accept(target);
+                       }
+               };
+       }
+
+       public static AjaxClientInfoBehavior 
onClientInfo(WicketBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
+       {
+               Args.notNull(onClientInfo, "onClientInfo");
+
+               return new AjaxClientInfoBehavior()
+               {
+                       @Override
+                       protected void onClientInfo(AjaxRequestTarget target, 
WebClientInfo clientInfo)
+                       {
+                               onClientInfo.accept(target, clientInfo);
+                       }
+               };
+       }
+
+       public static AjaxEventBehavior onEvent(String eventName, 
WicketConsumer<AjaxRequestTarget> onEvent)
+       {
+               Args.notNull(onEvent, "onEvent");
+
+               return new AjaxEventBehavior(eventName)
+               {
+                       @Override
+                       protected void onEvent(AjaxRequestTarget target)
+                       {
+                               onEvent.accept(target);
+                       }
+               };
+       }
+
+       public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName, 
WicketConsumer<AjaxRequestTarget> onNewWindow)
+       {
+               Args.notNull(onNewWindow, "onNewWindow");
+
+               if (Strings.isEmpty(windowName))
+               {
+                       windowName = UUID.randomUUID().toString();
+               }
+
+               return new AjaxNewWindowNotifyingBehavior(windowName)
+               {
+                       @Override
+                       protected void onNewWindow(AjaxRequestTarget target)
+                       {
+                               onNewWindow.accept(target);
+                       }
+               };
+       }
+
+       public static AbstractAjaxTimerBehavior onSelfUpdate(Duration interval, 
WicketConsumer<AjaxRequestTarget> onTimer)
+       {
+               Args.notNull(onTimer, "onTimer");
+
+               return new AjaxSelfUpdatingTimerBehavior(interval)
+               {
+                       @Override
+                       protected void onPostProcessTarget(AjaxRequestTarget 
target)
+                       {
+                               onTimer.accept(target);
+                       }
+               };
+       }
+
+
+       public static AjaxFormChoiceComponentUpdatingBehavior 
onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice) {
+               Args.notNull(onUpdateChoice, "onUpdateChoice");
+               return new AjaxFormChoiceComponentUpdatingBehavior()
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onUpdateChoice.accept(target);
+                       }
+               };
+       }
+
+       public static AjaxFormChoiceComponentUpdatingBehavior 
onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice,
+                                                                            
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) {
+               Args.notNull(onUpdateChoice, "onUpdateChoice");
+               Args.notNull(onError, "onError");
+               return new AjaxFormChoiceComponentUpdatingBehavior()
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onUpdateChoice.accept(target);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
+                       {
+                               onError.accept(target, e);
+                       }
+               };
+       }
+
+
+       public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName, 
WicketConsumer<AjaxRequestTarget> onUpdate)
+       {
+               Args.notNull(onUpdate, "onUpdate");
+
+               return new AjaxFormComponentUpdatingBehavior(eventName)
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onUpdate.accept(target);
+                       }
+               };
+       }
+
+       public static AjaxFormComponentUpdatingBehavior onUpdate(String 
eventName,
+                                                                
WicketConsumer<AjaxRequestTarget> onUpdate,
+                                                                
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+       {
+               Args.notNull(onUpdate, "onUpdate");
+               Args.notNull(onError, "onError");
+
+               return new AjaxFormComponentUpdatingBehavior(eventName)
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onUpdate.accept(target);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
+                       {
+                               onError.accept(target, e);
+                       }
+               };
+       }
+
+       public static AjaxFormSubmitBehavior onSubmit(String eventName, 
WicketConsumer<AjaxRequestTarget> onSubmit)
+       {
+               Args.notNull(onSubmit, "onSubmit");
+
+               return new AjaxFormSubmitBehavior(eventName)
+               {
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target)
+                       {
+                               onSubmit.accept(target);
+                       }
+               };
+       }
+
+       public static AjaxFormSubmitBehavior onSubmit(String eventName,
+                                                     
WicketConsumer<AjaxRequestTarget> onSubmit,
+                                                     
WicketConsumer<AjaxRequestTarget> onError) {
+               Args.notNull(onSubmit, "onSubmit");
+               Args.notNull(onError, "onError");
+
+               return new AjaxFormSubmitBehavior(eventName)
+               {
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target)
+                       {
+                               onSubmit.accept(target);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target)
+                       {
+                               onError.accept(target);
+                       }
+               };
+       }
+
+
+       public static OnChangeAjaxBehavior 
onChange(WicketConsumer<AjaxRequestTarget> onChange)
+       {
+               Args.notNull(onChange, "onChange");
+
+               return new OnChangeAjaxBehavior()
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onChange.accept(target);
+                       }
+               };
+       }
+
+       public static OnChangeAjaxBehavior 
onChange(WicketConsumer<AjaxRequestTarget> onChange,
+                                                   
WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+       {
+               Args.notNull(onChange, "onChange");
+               Args.notNull(onError, "onError");
+
+               return new OnChangeAjaxBehavior()
+               {
+                       @Override
+                       protected void onUpdate(AjaxRequestTarget target)
+                       {
+                               onChange.accept(target);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
RuntimeException e)
+                       {
+                               onError.accept(target, e);
+                       }
+               };
+       }
+
+       public static <T> AjaxLink<T> ajaxLink(String id, 
WicketConsumer<AjaxRequestTarget> onClick)
+       {
+               Args.notNull(onClick, "onClick");
+
+               return new AjaxLink<T>(id)
+               {
+                       @Override
+                       public void onClick(AjaxRequestTarget target)
+                       {
+                               onClick.accept(target);
+                       }
+               };
+       }
+
+
+       public static AjaxButton ajaxButton(String id, 
WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
+       {
+               Args.notNull(onSubmit, "onSubmit");
+
+               return new AjaxButton(id)
+               {
+                       @Override
+                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
+                       {
+                               onSubmit.accept(target, form);
+                       }
+               };
+       }
+
+       public static AjaxButton ajaxButton(String id, 
WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit,
+                                           WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
+       {
+               Args.notNull(onSubmit, "onSubmit");
+               Args.notNull(onError, "onError");
+
+               return new AjaxButton(id)
+               {
+                       @Override
+                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
+                       {
+                               onSubmit.accept(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form)
+                       {
+                               onError.accept(target, form);
+                       }
+               };
+       }
+
+       public static AjaxCheckBox ajaxCheckBox(String id, 
WicketConsumer<AjaxRequestTarget> onUpdate)
+       {
+               Args.notNull(onUpdate, "onUpdate");
+
+               return new AjaxCheckBox(id)
+               {
+                       @Override
+                       public void onUpdate(AjaxRequestTarget target)
+                       {
+                               onUpdate.accept(target);
+                       }
+               };
+       }
+
+
+       public static AjaxSubmitLink ajaxSubmitLink(String id, 
WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
+       {
+               Args.notNull(onSubmit, "onSubmit");
+
+               return new AjaxSubmitLink(id)
+               {
+                       @Override
+                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
+                       {
+                               onSubmit.accept(target, form);
+                       }
+               };
+       }
+
+       public static AjaxSubmitLink ajaxSubmitLink(String id,
+                                                   WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onSubmit,
+                                                   WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
+       {
+               Args.notNull(onSubmit, "onSubmit");
+               Args.notNull(onError, "onError");
+
+               return new AjaxSubmitLink(id)
+               {
+                       @Override
+                       public void onSubmit(AjaxRequestTarget target, Form<?> 
form)
+                       {
+                               onSubmit.accept(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form)
+                       {
+                               onError.accept(target, form);
+                       }
+               };
+       }
+
+       public static <T> Link<T> link(String id, WicketConsumer<Void> onClick)
+       {
+               Args.notNull(onClick, "onClick");
+
+               return new Link<T>(id)
+               {
+                       @Override
+                       public void onClick()
+                       {
+                               onClick.accept((Void)null);
+                       }
+               };
+       }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketBiConsumer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketBiConsumer.java 
b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketBiConsumer.java
new file mode 100644
index 0000000..509a6c5
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketBiConsumer.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.lambdas;
+
+import java.io.Serializable;
+import java.util.function.BiConsumer;
+
+/**
+ * A {@link Serializable} {@link BiConsumer}.
+ *
+ * @param <T>
+ *            - the type of the first input to consume
+ * @param <T>
+ *            - the type of the second input to consume
+ */
+public interface WicketBiConsumer<T, U> extends BiConsumer<T, U>, Serializable
+{
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketConsumer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketConsumer.java 
b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketConsumer.java
new file mode 100644
index 0000000..36404f2
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketConsumer.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.lambdas;
+
+import java.io.Serializable;
+import java.util.function.Consumer;
+
+/**
+ * A {@link Serializable} {@link Consumer}.
+ *
+ * @param <T>
+ *            - the type of the input to consume
+ */
+public interface WicketConsumer<T> extends Consumer<T>, Serializable
+{
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketFunction.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketFunction.java 
b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketFunction.java
new file mode 100644
index 0000000..7c6b9ae
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketFunction.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.lambdas;
+
+import java.io.Serializable;
+import java.util.function.Function;
+
+/**
+ * A {@link Serializable} {@link Function}.
+ *
+ * @param <T>
+ *            - the type of the input to the function
+ * @param <R>
+ *            - the type of the result of the function
+ */
+public interface WicketFunction<T, R> extends Function<T, R>, Serializable
+{
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketSupplier.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketSupplier.java 
b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketSupplier.java
new file mode 100644
index 0000000..85a4bdb
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/lambdas/WicketSupplier.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.lambdas;
+
+import java.io.Serializable;
+import java.util.function.Supplier;
+
+/**
+ * A {@link Serializable} {@link Supplier}.
+ *
+ * @param <T>
+ *            - the type of results supplied by this supplier
+ */
+public interface WicketSupplier<T> extends Supplier<T>, Serializable
+{
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
index 10e6396..7a39c06 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java
@@ -20,11 +20,11 @@ import org.apache.wicket.Component;
  import org.apache.wicket.IGenericComponent;
  import org.apache.wicket.Page;
  import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.lambdas.Lambdas;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.markup.ComponentTag;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketConsumer;
  import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.lang.Args;
/**
   * Implementation of a hyperlink component. A link can be used with an anchor 
(&lt;a href...)
@@ -177,18 +177,9 @@ public abstract class Link<T> extends AbstractLink 
implements ILinkListener, IGe
         */
        public abstract void onClick();
- public static <T> Link<T> link(String id, WicketConsumer<Void> onClick)
+       public static <T> Link<T> onClick(String id, WicketConsumer<Void> 
onClick)
        {
-               Args.notNull(onClick, "onClick");
-
-               return new Link<T>(id)
-               {
-                       @Override
-                       public void onClick()
-                       {
-                               onClick.accept((Void)null);
-                       }
-               };
+               return Lambdas.link(id, onClick);
        }
/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/Model.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/Model.java 
b/wicket-core/src/main/java/org/apache/wicket/model/Model.java
index 271cf8d..ba790e6 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/Model.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/Model.java
@@ -24,6 +24,11 @@ import java.util.Map;
  import java.util.Set;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.lambdas.WicketConsumer;
+import org.apache.wicket.lambdas.WicketSupplier;
+import org.apache.wicket.model.lambda.LambdaModel;
+import org.apache.wicket.model.lambda.SupplierCachingModel;
+import org.apache.wicket.model.lambda.SupplierModel;
  import org.apache.wicket.model.util.CollectionModel;
  import org.apache.wicket.model.util.ListModel;
  import org.apache.wicket.model.util.MapModel;
@@ -170,6 +175,42 @@ public class Model<T extends Serializable> implements 
IObjectClassAwareModel<T>
        }
/**
+        * Factory methods for Model which uses type inference to make code 
shorter. Equivalent to
+        * <code>new LambdaModel<TypeOfObject>(getter, setter)</code>.
+        *
+        * @param <T>
+        * @return Model that contains <code>object</code>
+        */
+       public static <T> IModel<T> ofLambdas(WicketSupplier<T> getter, 
WicketConsumer<T> setter)
+       {
+               return new LambdaModel<>(getter, setter);
+       }
+
+       /**
+        * Factory methods for Model which uses type inference to make code 
shorter. Equivalent to
+        * <code>new SupplierModel<TypeOfObject>(getter)</code>.
+        *
+        * @param <T>
+        * @return Model that contains <code>object</code>
+        */
+       public static <T> IModel<T> readOnly(WicketSupplier<T> getter)
+       {
+               return new SupplierModel<>(getter);
+       }
+
+       /**
+        * Factory methods for Model which uses type inference to make code 
shorter. Equivalent to
+        * <code>new SupplierCachingModel<TypeOfObject>(getter)</code>.
+        *
+        * @param <T>
+        * @return Model that contains <code>object</code>
+        */
+       public static <T> IModel<T> cachingReadOnly(WicketSupplier<T> getter)
+       {
+               return new SupplierCachingModel<>(getter);
+       }
+
+       /**
         * @see org.apache.wicket.model.IModel#getObject()
         */
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/LambdaModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/LambdaModel.java 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/LambdaModel.java
index 2620680..6b1b3ea 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/lambda/LambdaModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/lambda/LambdaModel.java
@@ -18,6 +18,8 @@ package org.apache.wicket.model.lambda;
import java.util.Objects; +import org.apache.wicket.lambdas.WicketConsumer;
+import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.IModel;
  import org.apache.wicket.util.lang.Args;
@@ -50,11 +52,6 @@ public class LambdaModel<T> implements IModel<T>
                this.setter = Args.notNull(setter, "setter");
        }
- public static <T> LambdaModel<T> of(WicketSupplier<T> getter, WicketConsumer<T> setter)
-       {
-               return new LambdaModel<>(getter, setter);
-       }
-
        @Override
        public T getObject()
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierCachingModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierCachingModel.java
 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierCachingModel.java
index 70f8090..e26dcbd 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierCachingModel.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierCachingModel.java
@@ -18,6 +18,7 @@ package org.apache.wicket.model.lambda;
import java.util.Objects; +import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.LoadableDetachableModel;
  import org.apache.wicket.util.lang.Args;
http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierModel.java 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierModel.java
index 9b4d0bd..4a8b77c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierModel.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/SupplierModel.java
@@ -18,6 +18,7 @@ package org.apache.wicket.model.lambda;
import java.util.Objects; +import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.AbstractReadOnlyModel;
  import org.apache.wicket.util.lang.Args;
http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketBiConsumer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketBiConsumer.java
 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketBiConsumer.java
deleted file mode 100644
index 20d3ace..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketBiConsumer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.model.lambda;
-
-import java.io.Serializable;
-import java.util.function.BiConsumer;
-
-/**
- * A {@link Serializable} {@link BiConsumer}.
- *
- * @param <T>
- *            - the type of the first input to consume
- * @param <T>
- *            - the type of the second input to consume
- */
-public interface WicketBiConsumer<T, U> extends BiConsumer<T, U>, Serializable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketConsumer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketConsumer.java 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketConsumer.java
deleted file mode 100644
index fd67e32..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketConsumer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.model.lambda;
-
-import java.io.Serializable;
-import java.util.function.Consumer;
-
-/**
- * A {@link Serializable} {@link Consumer}.
- *
- * @param <T>
- *            - the type of the input to consume
- */
-public interface WicketConsumer<T> extends Consumer<T>, Serializable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketFunction.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketFunction.java 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketFunction.java
deleted file mode 100644
index 6c1fcec..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketFunction.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.model.lambda;
-
-import java.io.Serializable;
-import java.util.function.Function;
-
-/**
- * A {@link Serializable} {@link Function}.
- *
- * @param <T>
- *            - the type of the input to the function
- * @param <R>
- *            - the type of the result of the function
- */
-public interface WicketFunction<T, R> extends Function<T, R>, Serializable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketSupplier.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketSupplier.java 
b/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketSupplier.java
deleted file mode 100644
index d876d77..0000000
--- 
a/wicket-core/src/main/java/org/apache/wicket/model/lambda/WicketSupplier.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.model.lambda;
-
-import java.io.Serializable;
-import java.util.function.Supplier;
-
-/**
- * A {@link Serializable} {@link Supplier}.
- *
- * @param <T>
- *            - the type of results supplied by this supplier
- */
-public interface WicketSupplier<T> extends Supplier<T>, Serializable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/test/java/org/apache/wicket/model/lambda/LambdaModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/LambdaModelTest.java 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/LambdaModelTest.java
index 8bf21ae..9f8d2b4 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/LambdaModelTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/LambdaModelTest.java
@@ -22,6 +22,8 @@ import static org.hamcrest.Matchers.nullValue;
  import static org.junit.Assert.*;
import org.apache.wicket.core.util.lang.WicketObjects;
+import org.apache.wicket.lambdas.WicketConsumer;
+import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.IModel;
  import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierCachingModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierCachingModelTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierCachingModelTest.java
index dc2208d..e2b95e4 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierCachingModelTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierCachingModelTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.verify;
  import static org.mockito.Mockito.when;
import org.apache.wicket.core.util.lang.WicketObjects;
+import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.IModel;
  import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierModelTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierModelTest.java
index 384dd89..f0ecc02 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierModelTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/model/lambda/SupplierModelTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.verify;
  import static org.mockito.Mockito.when;
import org.apache.wicket.core.util.lang.WicketObjects;
+import org.apache.wicket.lambdas.WicketSupplier;
  import org.apache.wicket.model.IModel;
  import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java
index 39da031..7d91e4c 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java
@@ -21,7 +21,7 @@ import org.apache.wicket.ajax.IAjaxIndicatorAware;
  import org.apache.wicket.ajax.markup.html.form.AjaxButton;
  import org.apache.wicket.markup.html.form.Form;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketBiConsumer;
+import org.apache.wicket.lambdas.WicketBiConsumer;
  import org.apache.wicket.util.lang.Args;
/**
@@ -96,7 +96,7 @@ public abstract class IndicatingAjaxButton extends AjaxButton 
implements IAjaxIn
        }
- public static IndicatingAjaxButton indicatingAjaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
+       public static IndicatingAjaxButton onSubmit(String id, 
WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit)
        {
                Args.notNull(onSubmit, "onSubmit");
@@ -110,8 +110,9 @@ public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIn
                };
        }
- public static IndicatingAjaxButton indicatingAjaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit,
-                                         WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
+       public static IndicatingAjaxButton onSubmit(String id,
+                                                   WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onSubmit,
+                                                   WicketBiConsumer<AjaxRequestTarget, 
Form<?>> onError)
        {
                Args.notNull(onSubmit, "onSubmit");
                Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/d3bee750/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java
index dabd29a..59c4fcc 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java
@@ -20,7 +20,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
  import org.apache.wicket.ajax.IAjaxIndicatorAware;
  import org.apache.wicket.ajax.markup.html.AjaxLink;
  import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.lambda.WicketConsumer;
+import org.apache.wicket.lambdas.WicketConsumer;
  import org.apache.wicket.util.lang.Args;
/**


Reply via email to