You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pa...@apache.org on 2016/11/04 10:01:01 UTC

[2/2] wicket git commit: WICKET-6269: replaced Wickets serializable functional interfaces by interfaces provided by jdk-serializable-functional

WICKET-6269: replaced Wickets serializable functional interfaces by interfaces provided by jdk-serializable-functional


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

Branch: refs/heads/master
Commit: 20f07bfdbe3f686d162f8395d258d1d1b22a01cf
Parents: d9d142b
Author: Emond Papegaaij <em...@topicus.nl>
Authored: Fri Nov 4 11:00:43 2016 +0100
Committer: Emond Papegaaij <em...@topicus.nl>
Committed: Fri Nov 4 11:00:43 2016 +0100

----------------------------------------------------------------------
 pom.xml                                         |   6 +
 wicket-core/pom.xml                             |   4 +
 .../wicket/ajax/AbstractAjaxTimerBehavior.java  |   4 +-
 .../wicket/ajax/AjaxClientInfoBehavior.java     |   6 +-
 .../apache/wicket/ajax/AjaxEventBehavior.java   |   6 +-
 .../ajax/AjaxNewWindowNotifyingBehavior.java    |   6 +-
 .../ajax/AjaxSelfUpdatingTimerBehavior.java     |   6 +-
 ...AjaxFormChoiceComponentUpdatingBehavior.java |  20 ++-
 .../form/AjaxFormComponentUpdatingBehavior.java |  19 +-
 .../ajax/form/AjaxFormSubmitBehavior.java       |  16 +-
 .../wicket/ajax/form/OnChangeAjaxBehavior.java  |  19 +-
 .../wicket/ajax/markup/html/AjaxLink.java       |  12 +-
 .../ajax/markup/html/form/AjaxButton.java       |   9 +-
 .../ajax/markup/html/form/AjaxCheckBox.java     |   6 +-
 .../ajax/markup/html/form/AjaxSubmitLink.java   |   9 +-
 .../org/apache/wicket/behavior/Behavior.java    |  35 ++--
 .../java/org/apache/wicket/lambda/Lambdas.java  | 176 ++++++++++---------
 .../apache/wicket/lambda/WicketBiConsumer.java  |  32 ----
 .../apache/wicket/lambda/WicketBiFunction.java  |  36 ----
 .../apache/wicket/lambda/WicketConsumer.java    |  32 ----
 .../apache/wicket/lambda/WicketFunction.java    |  34 ----
 .../apache/wicket/lambda/WicketSupplier.java    |  32 ----
 .../apache/wicket/markup/html/form/Button.java  |  15 +-
 .../apache/wicket/markup/html/link/Link.java    |   4 +-
 .../wicket/markup/html/link/StatelessLink.java  |   6 +-
 .../java/org/apache/wicket/model/IModel.java    |  21 ++-
 .../org/apache/wicket/model/LambdaModel.java    |  22 +--
 .../wicket/model/LoadableDetachableModel.java   |   4 +-
 .../org/apache/wicket/model/IModelTest.java     |  14 +-
 .../apache/wicket/model/LambdaModelTest.java    |  12 +-
 .../ajax/markup/html/IndicatingAjaxButton.java  |   9 +-
 .../ajax/markup/html/IndicatingAjaxLink.java    |   5 +-
 .../html/repeater/data/table/LambdaColumn.java  |  16 +-
 33 files changed, 265 insertions(+), 388 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8c46ecf..3bd117f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -441,6 +441,12 @@
 				<type>jar</type>
 			</dependency>
 			<dependency>
+				<groupId>org.danekja</groupId>
+				<artifactId>jdk-serializable-functional</artifactId>
+				<version>1.8.1</version>
+				<type>jar</type>
+			</dependency>
+			<dependency>
 				<groupId>org.jboss.seam.conversation</groupId>
 				<artifactId>seam-conversation-spi</artifactId>
 				<version>3.0.0.Final</version>

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/pom.xml
----------------------------------------------------------------------
diff --git a/wicket-core/pom.xml b/wicket-core/pom.xml
index add921d..90aca4a 100644
--- a/wicket-core/pom.xml
+++ b/wicket-core/pom.xml
@@ -55,6 +55,10 @@
 			<artifactId>wicket-util</artifactId>
 		</dependency>
 		<dependency>
+			<groupId>org.danekja</groupId>
+			<artifactId>jdk-serializable-functional</artifactId>
+		</dependency>
+		<dependency>
 			<groupId>org.hamcrest</groupId>
 			<artifactId>hamcrest-junit</artifactId>
 		</dependency>

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 9fd936b..0c9a276 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,11 +19,11 @@ 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.lambda.WicketConsumer;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnLoadHeaderItem;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.time.Duration;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * A behavior that generates an AJAX update callback at a regular interval.
@@ -226,7 +226,7 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav
 	 *            the consumer which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AbstractAjaxTimerBehavior}
 	 */
-	public static AbstractAjaxTimerBehavior onTimer(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer)
+	public static AbstractAjaxTimerBehavior onTimer(Duration interval, SerializableConsumer<AjaxRequestTarget> onTimer)
 	{
 		Args.notNull(onTimer, "onTimer");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 25dde8d..164c551 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,7 +19,6 @@ 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.lambda.WicketBiConsumer;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.pages.BrowserInfoForm;
@@ -29,6 +28,7 @@ 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;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 
 /**
  * An behavior that collects the information to populate
@@ -142,11 +142,11 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior
 	 * Creates an {@link AjaxClientInfoBehavior} based on lambda expressions
 	 *
 	 * @param onClientInfo
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and the
 	 *            {@link WebClientInfo}
 	 * @return the {@link AjaxClientInfoBehavior}
 	 */
-	public static AjaxClientInfoBehavior onClientInfo(WicketBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
+	public static AjaxClientInfoBehavior onClientInfo(SerializableBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
 	{
 		Args.notNull(onClientInfo, "onClientInfo");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 0f8aea7..a244a3a 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
@@ -22,12 +22,12 @@ import java.util.Locale;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Checks;
 import org.apache.wicket.util.string.Strings;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * An ajax behavior that is attached to a certain client-side (usually javascript) event, such as
@@ -165,10 +165,10 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior
 	 * @param eventName
 	 *            the event name
 	 * @param onEvent
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxEventBehavior}
 	 */
-	public static AjaxEventBehavior onEvent(String eventName, WicketConsumer<AjaxRequestTarget> onEvent)
+	public static AjaxEventBehavior onEvent(String eventName, SerializableConsumer<AjaxRequestTarget> onEvent)
 	{
 		Args.notNull(onEvent, "onEvent");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 ae5a73c..0dff154 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,7 +21,6 @@ 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.lambda.WicketConsumer;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.head.OnLoadHeaderItem;
@@ -29,6 +28,7 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * An Ajax behavior that notifies when a new browser window/tab is opened with
@@ -137,10 +137,10 @@ public abstract class AjaxNewWindowNotifyingBehavior extends AbstractDefaultAjax
 	 * @param windowName
 	 *            the window name
 	 * @param onNewWindow
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxNewWindowNotifyingBehavior}
 	 */
-	public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName, WicketConsumer<AjaxRequestTarget> onNewWindow)
+	public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName, SerializableConsumer<AjaxRequestTarget> onNewWindow)
 	{
 		Args.notNull(onNewWindow, "onNewWindow");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 5ebe52a..6d40901 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,9 +16,9 @@
  */
 package org.apache.wicket.ajax;
 
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.time.Duration;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * Automatically re-renders the component it is attached to via AJAX at a regular interval.
@@ -71,10 +71,10 @@ public class AjaxSelfUpdatingTimerBehavior extends AbstractAjaxTimerBehavior
 	 * @param interval
 	 *            the interval for the self update
 	 * @param onTimer
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AbstractAjaxTimerBehavior}
 	 */
-	public static AjaxSelfUpdatingTimerBehavior onSelfUpdate(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer)
+	public static AjaxSelfUpdatingTimerBehavior onSelfUpdate(Duration interval, SerializableConsumer<AjaxRequestTarget> onTimer)
 	{
 		Args.notNull(onTimer, "onTimer");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 1b31f12..7fe6c7c 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.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * This is a Ajax Component Update Behavior that is meant for choices/groups that are not one
@@ -118,10 +118,12 @@ public abstract class AjaxFormChoiceComponentUpdatingBehavior extends
 	 * Creates an {@link AjaxFormChoiceComponentUpdatingBehavior} based on lambda expressions
 	 * 
 	 * @param onUpdateChoice
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormChoiceComponentUpdatingBehavior}
 	 */
-	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice) {
+	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(
+		SerializableConsumer<AjaxRequestTarget> onUpdateChoice)
+	{
 		Args.notNull(onUpdateChoice, "onUpdateChoice");
 		return new AjaxFormChoiceComponentUpdatingBehavior()
 		{
@@ -139,14 +141,16 @@ public abstract class AjaxFormChoiceComponentUpdatingBehavior extends
 	 * Creates an {@link AjaxFormChoiceComponentUpdatingBehavior} based on lambda expressions
 	 * 
 	 * @param onUpdateChoice
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and the
 	 *            {@link RuntimeException}
 	 * @return the {@link AjaxFormChoiceComponentUpdatingBehavior}
 	 */
-	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice,
-	                                                         WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) {
+	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(
+		SerializableConsumer<AjaxRequestTarget> onUpdateChoice,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+	{
 		Args.notNull(onUpdateChoice, "onUpdateChoice");
 		Args.notNull(onError, "onError");
 		return new AjaxFormChoiceComponentUpdatingBehavior()

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 37930dc..4236692 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.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.validation.IFormValidator;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -228,10 +228,11 @@ public abstract class AjaxFormComponentUpdatingBehavior extends AjaxEventBehavio
 	 * @param eventName
 	 *            the event name
 	 * @param onUpdate
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormComponentUpdatingBehavior}
 	 */
-	public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName, WicketConsumer<AjaxRequestTarget> onUpdate)
+	public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName,
+		SerializableConsumer<AjaxRequestTarget> onUpdate)
 	{
 		Args.notNull(onUpdate, "onUpdate");
 
@@ -253,15 +254,15 @@ public abstract class AjaxFormComponentUpdatingBehavior extends AjaxEventBehavio
 	 * @param eventName
 	 *            the event name
 	 * @param onUpdate
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link RuntimeException}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link RuntimeException}
 	 * @return the {@link AjaxFormComponentUpdatingBehavior}
 	 */
 	public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName,
-	                                                         WicketConsumer<AjaxRequestTarget> onUpdate,
-	                                                         WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+		SerializableConsumer<AjaxRequestTarget> onUpdate,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
 	{
 		Args.notNull(onUpdate, "onUpdate");
 		Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 f3cd7eb..8542379 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.lambda.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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * Ajax event behavior that submits a form via ajax when the event it is attached to, is invoked.
@@ -280,10 +280,11 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 	 * @param eventName
 	 *            the event name
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormSubmitBehavior}
 	 */
-	public static AjaxFormSubmitBehavior onSubmit(String eventName, WicketConsumer<AjaxRequestTarget> onSubmit)
+	public static AjaxFormSubmitBehavior onSubmit(String eventName,
+		SerializableConsumer<AjaxRequestTarget> onSubmit)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 
@@ -305,14 +306,15 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 	 * @param eventName
 	 *            the event name
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormSubmitBehavior}
 	 */
 	public static AjaxFormSubmitBehavior onSubmit(String eventName,
-	                                              WicketConsumer<AjaxRequestTarget> onSubmit,
-	                                              WicketConsumer<AjaxRequestTarget> onError) {
+		SerializableConsumer<AjaxRequestTarget> onSubmit,
+		SerializableConsumer<AjaxRequestTarget> onError)
+	{
 		Args.notNull(onSubmit, "onSubmit");
 		Args.notNull(onError, "onError");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 54efaea..796dd33 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,13 +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.lambda.Lambdas;
-import org.apache.wicket.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * A behavior that updates the hosting {@link FormComponent} via Ajax when value of the component is
@@ -86,10 +85,10 @@ public abstract class OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBeha
 	 * Creates an {@link OnChangeAjaxBehavior} based on lambda expressions
 	 * 
 	 * @param onChange
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link OnChangeAjaxBehavior}
 	 */
-	public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange)
+	public static OnChangeAjaxBehavior onChange(SerializableConsumer<AjaxRequestTarget> onChange)
 	{
 		Args.notNull(onChange, "onChange");
 
@@ -109,14 +108,14 @@ public abstract class OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBeha
 	 * Creates an {@link OnChangeAjaxBehavior} based on lambda expressions
 	 * 
 	 * @param onChange
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link RuntimeException}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link RuntimeException}
 	 * @return the {@link OnChangeAjaxBehavior}
 	 */
-	public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange,
-	                                            WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+	public static OnChangeAjaxBehavior onChange(SerializableConsumer<AjaxRequestTarget> onChange,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
 	{
 		Args.notNull(onChange, "onChange");
 		Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 1355872..483c2b4 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
@@ -21,12 +21,12 @@ 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.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * A component that allows a trigger request to be triggered via html anchor tag
@@ -149,10 +149,11 @@ public abstract class AjaxLink<T> extends AbstractLink implements IAjaxLink, IGe
 	 * @param id
 	 *            the id of the ajax link
 	 * @param onClick
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxLink}
 	 */
-	public static <T> AjaxLink<T> onClick(String id, WicketConsumer<AjaxRequestTarget> onClick)
+	public static <T> AjaxLink<T> onClick(String id,
+		SerializableConsumer<AjaxRequestTarget> onClick)
 	{
 		Args.notNull(onClick, "onClick");
 
@@ -177,7 +178,8 @@ public abstract class AjaxLink<T> extends AbstractLink implements IAjaxLink, IGe
 	 *            the consumer of the clicked link and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxLink}
 	 */
-	public static <T> AjaxLink<T> onClick(String id, WicketBiConsumer<AjaxLink<T>, AjaxRequestTarget> onClick)
+	public static <T> AjaxLink<T> onClick(String id,
+		SerializableBiConsumer<AjaxLink<T>, AjaxRequestTarget> onClick)
 	{
 		Args.notNull(onClick, "onClick");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 cb9f911..03f01a8 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
@@ -20,11 +20,11 @@ import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
-import org.apache.wicket.lambda.WicketBiConsumer;
 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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -239,7 +239,8 @@ public abstract class AjaxButton extends Button
 	 *            the consumer which accepts the button and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxButton}
 	 */
-	public static AjaxButton onSubmit(String id, WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
+	public static AjaxButton onSubmit(String id,
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 
@@ -267,8 +268,8 @@ public abstract class AjaxButton extends Button
 	 * @return the {@link AjaxButton}
 	 */
 	public static AjaxButton onSubmit(String id,
-	                                    WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
-	                                    WicketBiConsumer<AjaxButton, AjaxRequestTarget> onError)
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onError)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 		Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 bd21f74..6fa1221 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,11 +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.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 
 /**
  * A CheckBox which is updated via ajax when the user changes its value
@@ -102,7 +101,8 @@ public abstract class AjaxCheckBox extends CheckBox
 	 *            the consumer of the updated checkbox and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxCheckBox}
 	 */
-	public static AjaxCheckBox onUpdate(String id, WicketBiConsumer<AjaxCheckBox, AjaxRequestTarget> onUpdate)
+	public static AjaxCheckBox onUpdate(String id,
+		SerializableBiConsumer<AjaxCheckBox, AjaxRequestTarget> onUpdate)
 	{
 		Args.notNull(onUpdate, "onUpdate");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 eb0b6e0..38416d1 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
@@ -20,11 +20,11 @@ import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
-import org.apache.wicket.lambda.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.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -234,7 +234,8 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink
 	 *            the consumer which accepts the link and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxSubmitLink}
 	 */
-	public static AjaxSubmitLink onSubmit(String id, WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit)
+	public static AjaxSubmitLink onSubmit(String id,
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 
@@ -262,8 +263,8 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink
 	 * @return the {@link AjaxSubmitLink}
 	 */
 	public static AjaxSubmitLink onSubmit(String id,
-	                                            WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit,
-	                                            WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onError)
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit,
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onError)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 		Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java b/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
index eae8cad..fa46b86 100644
--- a/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/behavior/Behavior.java
@@ -21,14 +21,14 @@ import org.apache.wicket.Component;
 import org.apache.wicket.IComponentAwareEventSink;
 import org.apache.wicket.IRequestListener;
 import org.apache.wicket.event.IEvent;
-import org.apache.wicket.lambda.WicketConsumer;
-import org.apache.wicket.lambda.WicketFunction;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.IComponentAwareHeaderContributor;
 import org.apache.wicket.markup.parser.XmlTag.TagType;
 import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
+import org.danekja.java.util.function.serializable.SerializableFunction;
 
 /**
  * Behaviors are kind of plug-ins for Components. They allow functionality to be added to a
@@ -265,19 +265,19 @@ public abstract class Behavior
 	}
 
 	/**
-	 * Creates a {@link Behavior} that uses the given {@link WicketConsumer consumer}
-	 * to do something with the component's tag.
+	 * Creates a {@link Behavior} that uses the given {@code SerializableConsumer consumer} to do
+	 * something with the component's tag.
 	 *
 	 * <p>
-	 *     Usage:<br/>
-	 *     <code>component.add(onTag(tag -> tag.put(key, value)));</code>
+	 * Usage:<br/>
+	 * <code>component.add(onTag(tag -> tag.put(key, value)));</code>
 	 * </p>
 	 *
 	 * @param onTagConsumer
-	 *              the {@link WicketConsumer} that accepts the {@link ComponentTag}
+	 *            the {@code SerializableConsumer} that accepts the {@link ComponentTag}
 	 * @return The created behavior
 	 */
-	public static Behavior onTag(WicketConsumer<ComponentTag> onTagConsumer)
+	public static Behavior onTag(SerializableConsumer<ComponentTag> onTagConsumer)
 	{
 		Args.notNull(onTagConsumer, "onTagConsumer");
 
@@ -292,29 +292,32 @@ public abstract class Behavior
 	}
 
 	/**
-	 * Creates a {@link Behavior} that uses the given {@link WicketFunction function}
-	 * to do something with a component's attribute.
+	 * Creates a {@link Behavior} that uses the given {@link WicketFunction function} to do
+	 * something with a component's attribute.
 	 *
 	 * <p>
-	 *     Usage:<br/>
-	 *     <code>component.add(onAttribute("class",
+	 * Usage:<br/>
+	 * <code>component.add(onAttribute("class",
 	 *              currentValue -> condition(currentValue) ? "positive" : "negative"));</code>
 	 * </p>
 	 *
 	 * @param name
-	 *              the name of the attribute to manipulate
+	 *            the name of the attribute to manipulate
 	 * @param onAttribute
-	 *              the {@link WicketFunction} that accepts the old value of the attribute
-	 *              and returns a new value
+	 *            the {@code SerializableFunction} that accepts the old value of the attribute and
+	 *            returns a new value
 	 * @return The created behavior
 	 */
-	public static Behavior onAttribute(String name, WicketFunction<String, CharSequence> onAttribute)
+	public static Behavior onAttribute(String name,
+		SerializableFunction<String, CharSequence> onAttribute)
 	{
 		Args.notEmpty(name, "name");
 		Args.notNull(onAttribute, "onAttribute");
 
 		return new Behavior()
 		{
+			private static final long serialVersionUID = 1L;
+
 			@Override
 			public void onComponentTag(Component component, ComponentTag tag)
 			{

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java b/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java
index 6341a93..70a06f8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java
+++ b/wicket-core/src/main/java/org/apache/wicket/lambda/Lambdas.java
@@ -35,9 +35,13 @@ import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.link.Link;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
 import org.apache.wicket.util.time.Duration;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
+import org.danekja.java.util.function.serializable.SerializableFunction;
 
 /**
- * Convenience class for easy static importing of lambda factory methods in several components and behaviors.
+ * Convenience class for easy static importing of lambda factory methods in several components and
+ * behaviors.
  */
 public class Lambdas
 {
@@ -47,13 +51,13 @@ public class Lambdas
 	 * @param interval
 	 *            the interval of the timer
 	 * @param onTimer
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AbstractAjaxTimerBehavior}
 	 *
-	 * @see AbstractAjaxTimerBehavior#onTimer(Duration, WicketConsumer)
+	 * @see AbstractAjaxTimerBehavior#onTimer(Duration, SerializableConsumer)
 	 */
 	public static AbstractAjaxTimerBehavior onTimer(Duration interval,
-		WicketConsumer<AjaxRequestTarget> onTimer)
+		SerializableConsumer<AjaxRequestTarget> onTimer)
 	{
 		return AbstractAjaxTimerBehavior.onTimer(interval, onTimer);
 	}
@@ -62,14 +66,14 @@ public class Lambdas
 	 * Creates an {@link AjaxClientInfoBehavior} based on lambda expressions
 	 *
 	 * @param onClientInfo
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link WebClientInfo}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link WebClientInfo}
 	 * @return the {@link AjaxClientInfoBehavior}
 	 *
-	 * @see AjaxClientInfoBehavior#onClientInfo(WicketBiConsumer)
+	 * @see AjaxClientInfoBehavior#onClientInfo(SerializableBiConsumer)
 	 */
 	public static AjaxClientInfoBehavior onClientInfo(
-		WicketBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
+		SerializableBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo)
 	{
 		return AjaxClientInfoBehavior.onClientInfo(onClientInfo);
 	}
@@ -80,13 +84,13 @@ public class Lambdas
 	 * @param eventName
 	 *            the event name
 	 * @param onEvent
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxEventBehavior}
 	 *
 	 * @see AjaxEventBehavior#onEvent(org.apache.wicket.Component, org.apache.wicket.event.IEvent)
 	 */
 	public static AjaxEventBehavior onEvent(String eventName,
-		WicketConsumer<AjaxRequestTarget> onEvent)
+		SerializableConsumer<AjaxRequestTarget> onEvent)
 	{
 		return AjaxEventBehavior.onEvent(eventName, onEvent);
 	}
@@ -97,13 +101,13 @@ public class Lambdas
 	 * @param windowName
 	 *            the window name
 	 * @param onNewWindow
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxNewWindowNotifyingBehavior}
 	 * 
-	 * @see AjaxNewWindowNotifyingBehavior#onNewWindow(String, WicketConsumer)
+	 * @see AjaxNewWindowNotifyingBehavior#onNewWindow(String, SerializableConsumer)
 	 */
 	public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName,
-		WicketConsumer<AjaxRequestTarget> onNewWindow)
+		SerializableConsumer<AjaxRequestTarget> onNewWindow)
 	{
 		return AjaxNewWindowNotifyingBehavior.onNewWindow(windowName, onNewWindow);
 	}
@@ -114,13 +118,13 @@ public class Lambdas
 	 * @param interval
 	 *            the interval for the self update
 	 * @param onTimer
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxSelfUpdatingTimerBehavior}
 	 * 
-	 * @see AjaxSelfUpdatingTimerBehavior#onSelfUpdate(Duration, WicketConsumer)
+	 * @see AjaxSelfUpdatingTimerBehavior#onSelfUpdate(Duration, SerializableConsumer)
 	 */
 	public static AjaxSelfUpdatingTimerBehavior onSelfUpdate(Duration interval,
-		WicketConsumer<AjaxRequestTarget> onTimer)
+		SerializableConsumer<AjaxRequestTarget> onTimer)
 	{
 		return AjaxSelfUpdatingTimerBehavior.onSelfUpdate(interval, onTimer);
 	}
@@ -129,13 +133,13 @@ public class Lambdas
 	 * Creates an {@link AjaxFormChoiceComponentUpdatingBehavior} based on lambda expressions
 	 * 
 	 * @param onUpdateChoice
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormChoiceComponentUpdatingBehavior}
 	 * 
-	 * @see AjaxFormChoiceComponentUpdatingBehavior#onUpdateChoice(WicketConsumer)
+	 * @see AjaxFormChoiceComponentUpdatingBehavior#onUpdateChoice(SerializableConsumer)
 	 */
 	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(
-		WicketConsumer<AjaxRequestTarget> onUpdateChoice)
+		SerializableConsumer<AjaxRequestTarget> onUpdateChoice)
 	{
 		return AjaxFormChoiceComponentUpdatingBehavior.onUpdateChoice(onUpdateChoice);
 	}
@@ -144,17 +148,18 @@ public class Lambdas
 	 * Creates an {@link AjaxFormChoiceComponentUpdatingBehavior} based on lambda expressions
 	 * 
 	 * @param onUpdateChoice
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link RuntimeException}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link RuntimeException}
 	 * @return the {@link AjaxFormChoiceComponentUpdatingBehavior}
 	 * 
-	 * @see AjaxFormChoiceComponentUpdatingBehavior#onUpdateChoice(WicketConsumer, WicketBiConsumer)
+	 * @see AjaxFormChoiceComponentUpdatingBehavior#onUpdateChoice(SerializableConsumer,
+	 *      SerializableBiConsumer)
 	 */
 	public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(
-		WicketConsumer<AjaxRequestTarget> onUpdateChoice,
-		WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+		SerializableConsumer<AjaxRequestTarget> onUpdateChoice,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
 	{
 		return AjaxFormChoiceComponentUpdatingBehavior.onUpdateChoice(onUpdateChoice, onError);
 	}
@@ -165,13 +170,13 @@ public class Lambdas
 	 * @param eventName
 	 *            the event name
 	 * @param onUpdate
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormComponentUpdatingBehavior}
 	 * 
-	 * @see AjaxFormComponentUpdatingBehavior#onUpdate(String, WicketConsumer) 
+	 * @see AjaxFormComponentUpdatingBehavior#onUpdate(String, SerializableConsumer)
 	 */
 	public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName,
-		WicketConsumer<AjaxRequestTarget> onUpdate)
+		SerializableConsumer<AjaxRequestTarget> onUpdate)
 	{
 		return AjaxFormComponentUpdatingBehavior.onUpdate(eventName, onUpdate);
 	}
@@ -182,17 +187,18 @@ public class Lambdas
 	 * @param eventName
 	 *            the event name
 	 * @param onUpdate
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link RuntimeException}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link RuntimeException}
 	 * @return the {@link AjaxFormComponentUpdatingBehavior}
 	 * 
-	 * @see AjaxFormComponentUpdatingBehavior#onUpdate(String, WicketConsumer, WicketBiConsumer) 
+	 * @see AjaxFormComponentUpdatingBehavior#onUpdate(String, SerializableConsumer,
+	 *      SerializableBiConsumer)
 	 */
 	public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName,
-		WicketConsumer<AjaxRequestTarget> onUpdate,
-		WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+		SerializableConsumer<AjaxRequestTarget> onUpdate,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
 	{
 		return AjaxFormComponentUpdatingBehavior.onUpdate(eventName, onUpdate, onError);
 	}
@@ -203,13 +209,13 @@ public class Lambdas
 	 * @param eventName
 	 *            the event name
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormSubmitBehavior}
 	 * 
-	 * @see AjaxFormSubmitBehavior#onSubmit(String, WicketConsumer)
+	 * @see AjaxFormSubmitBehavior#onSubmit(String, SerializableConsumer)
 	 */
 	public static AjaxFormSubmitBehavior onSubmit(String eventName,
-		WicketConsumer<AjaxRequestTarget> onSubmit)
+		SerializableConsumer<AjaxRequestTarget> onSubmit)
 	{
 		return AjaxFormSubmitBehavior.onSubmit(eventName, onSubmit);
 	}
@@ -220,15 +226,16 @@ public class Lambdas
 	 * @param eventName
 	 *            the event name
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link AjaxFormSubmitBehavior}
 	 * 
-	 * @see AjaxFormSubmitBehavior#onSubmit(String, WicketConsumer, WicketConsumer)
+	 * @see AjaxFormSubmitBehavior#onSubmit(String, SerializableConsumer, SerializableConsumer)
 	 */
 	public static AjaxFormSubmitBehavior onSubmit(String eventName,
-		WicketConsumer<AjaxRequestTarget> onSubmit, WicketConsumer<AjaxRequestTarget> onError)
+		SerializableConsumer<AjaxRequestTarget> onSubmit,
+		SerializableConsumer<AjaxRequestTarget> onError)
 	{
 		return AjaxFormSubmitBehavior.onSubmit(eventName, onSubmit, onError);
 	}
@@ -237,12 +244,12 @@ public class Lambdas
 	 * Creates an {@link OnChangeAjaxBehavior} based on lambda expressions
 	 * 
 	 * @param onChange
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @return the {@link OnChangeAjaxBehavior}
 	 * 
-	 * @see OnChangeAjaxBehavior#onChange(WicketConsumer)
+	 * @see OnChangeAjaxBehavior#onChange(SerializableConsumer)
 	 */
-	public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange)
+	public static OnChangeAjaxBehavior onChange(SerializableConsumer<AjaxRequestTarget> onChange)
 	{
 		return OnChangeAjaxBehavior.onChange(onChange);
 	}
@@ -251,62 +258,63 @@ public class Lambdas
 	 * Creates an {@link OnChangeAjaxBehavior} based on lambda expressions
 	 * 
 	 * @param onChange
-	 *            the {@link WicketConsumer} which accepts the {@link AjaxRequestTarget}
+	 *            the {@code SerializableConsumer} which accepts the {@link AjaxRequestTarget}
 	 * @param onError
-	 *            the {@link WicketBiConsumer} which accepts the {@link AjaxRequestTarget} and the
-	 *            {@link RuntimeException}
+	 *            the {@code SerializableBiConsumer} which accepts the {@link AjaxRequestTarget} and
+	 *            the {@link RuntimeException}
 	 * @return the {@link OnChangeAjaxBehavior}
 	 * 
-	 * @see OnChangeAjaxBehavior#onChange(WicketConsumer, WicketBiConsumer)
+	 * @see OnChangeAjaxBehavior#onChange(SerializableConsumer, SerializableBiConsumer)
 	 */
-	public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange,
-		WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError)
+	public static OnChangeAjaxBehavior onChange(SerializableConsumer<AjaxRequestTarget> onChange,
+		SerializableBiConsumer<AjaxRequestTarget, RuntimeException> onError)
 	{
 		return OnChangeAjaxBehavior.onChange(onChange, onError);
 	}
 
 	/**
-	 * Creates a {@link Behavior} that uses the given {@link WicketConsumer consumer}
-	 * to do something with the component's tag.
+	 * Creates a {@link Behavior} that uses the given {@code SerializableConsumer consumer} to do
+	 * something with the component's tag.
 	 *
 	 * <p>
-	 *     Usage:<br/>
-	 *     <code>component.add(onTag(tag -> tag.put(key, value)));</code>
+	 * Usage:<br/>
+	 * <code>component.add(onTag(tag -> tag.put(key, value)));</code>
 	 * </p>
 	 *
 	 * @param onTagConsumer
-	 *              the {@link WicketConsumer} that accepts the {@link ComponentTag}
+	 *            the {@code SerializableConsumer} that accepts the {@link ComponentTag}
 	 * @return The created behavior
 	 * 
-	 * @see Behavior#onTag(WicketConsumer)
+	 * @see Behavior#onTag(SerializableConsumer)
 	 */
-	public static Behavior onTag(WicketConsumer<ComponentTag> onTagConsumer)
+	public static Behavior onTag(SerializableConsumer<ComponentTag> onTagConsumer)
 	{
 		return Behavior.onTag(onTagConsumer);
 	}
 
 	/**
-	 * Creates a {@link Behavior} that uses the given {@link WicketFunction function}
-	 * to do something with a component's attribute.
+	 * Creates a {@link Behavior} that uses the given {@code SerializableFunction function} to do
+	 * something with a component's attribute.
 	 *
 	 * <p>
-	 *     Usage:<br/>
-	 *     <code>component.add(onAttribute("class", value -> condition ? "positive" : "negative"));</code>
+	 * Usage:<br/>
+	 * <code>component.add(onAttribute("class", value -> condition ? "positive" : "negative"));</code>
 	 * </p>
 	 *
 	 * @param attributeName
-	 *              the name of the attribute to manipulate
+	 *            the name of the attribute to manipulate
 	 * @param onAttribute
-	 *              the function that is applied to the attribute value
+	 *            the function that is applied to the attribute value
 	 * @return The created behavior
 	 * 
-	 * @see Behavior#onAttribute(String, WicketFunction)
+	 * @see Behavior#onAttribute(String, SerializableFunction)
 	 */
-	public static Behavior onAttribute(String attributeName, WicketFunction<String, CharSequence> onAttribute)
+	public static Behavior onAttribute(String attributeName,
+		SerializableFunction<String, CharSequence> onAttribute)
 	{
 		return Behavior.onAttribute(attributeName, onAttribute);
 	}
-	
+
 	/**
 	 * Creates an {@link AjaxLink} based on lambda expressions
 	 * 
@@ -316,9 +324,10 @@ public class Lambdas
 	 *            the consumer of the clicked link and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxLink}
 	 * 
-	 * @see AjaxLink#onClick(String, WicketConsumer)
+	 * @see AjaxLink#onClick(String, SerializableConsumer)
 	 */
-	public static <T> AjaxLink<T> ajaxLink(String id, WicketBiConsumer<AjaxLink<T>, AjaxRequestTarget> onClick)
+	public static <T> AjaxLink<T> ajaxLink(String id,
+		SerializableBiConsumer<AjaxLink<T>, AjaxRequestTarget> onClick)
 	{
 		return AjaxLink.onClick(id, onClick);
 	}
@@ -332,10 +341,10 @@ public class Lambdas
 	 *            the consumer of the submitted button and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxButton}
 	 * 
-	 * @see AjaxButton#onSubmit(String, WicketBiConsumer)
+	 * @see AjaxButton#onSubmit(String, SerializableBiConsumer)
 	 */
 	public static AjaxButton ajaxButton(String id,
-		WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
 	{
 		return AjaxButton.onSubmit(id, onSubmit);
 	}
@@ -351,11 +360,11 @@ public class Lambdas
 	 *            the consumer of the button in error and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxButton}
 	 * 
-	 * @see AjaxButton#onSubmit(String, WicketBiConsumer, WicketBiConsumer)
+	 * @see AjaxButton#onSubmit(String, SerializableBiConsumer, SerializableBiConsumer)
 	 */
 	public static AjaxButton ajaxButton(String id,
-		WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
-		WicketBiConsumer<AjaxButton, AjaxRequestTarget> onError)
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onError)
 	{
 		return AjaxButton.onSubmit(id, onSubmit, onError);
 	}
@@ -369,9 +378,10 @@ public class Lambdas
 	 *            the consumer of the updated checkbox and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxCheckBox}
 	 * 
-	 * @see AjaxCheckBox#onUpdate(String, WicketConsumer)
+	 * @see AjaxCheckBox#onUpdate(String, SerializableConsumer)
 	 */
-	public static AjaxCheckBox ajaxCheckBox(String id, WicketBiConsumer<AjaxCheckBox, AjaxRequestTarget> onUpdate)
+	public static AjaxCheckBox ajaxCheckBox(String id,
+		SerializableBiConsumer<AjaxCheckBox, AjaxRequestTarget> onUpdate)
 	{
 		return AjaxCheckBox.onUpdate(id, onUpdate);
 	}
@@ -385,10 +395,10 @@ public class Lambdas
 	 *            the consumer of the submitted button and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxSubmitLink}
 	 * 
-	 * @see AjaxSubmitLink#onSubmit(String, WicketBiConsumer)
+	 * @see AjaxSubmitLink#onSubmit(String, SerializableBiConsumer)
 	 */
 	public static AjaxSubmitLink ajaxSubmitLink(String id,
-		WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit)
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit)
 	{
 		return AjaxSubmitLink.onSubmit(id, onSubmit);
 	}
@@ -404,13 +414,13 @@ public class Lambdas
 	 *            the consumer of the link in error and an {@link AjaxRequestTarget}
 	 * @return the {@link AjaxSubmitLink}
 	 * 
-	 * @see AjaxSubmitLink#onSubmit(String, WicketBiConsumer, WicketBiConsumer)
+	 * @see AjaxSubmitLink#onSubmit(String, SerializableBiConsumer, SerializableBiConsumer)
 	 */
 	public static AjaxSubmitLink ajaxSubmitLink(String id,
-		WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit,
-		WicketBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onError)
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onSubmit,
+		SerializableBiConsumer<AjaxSubmitLink, AjaxRequestTarget> onError)
 	{
-		return AjaxSubmitLink.onSubmit(id,  onSubmit,  onError);
+		return AjaxSubmitLink.onSubmit(id, onSubmit, onError);
 	}
 
 	/**
@@ -422,9 +432,9 @@ public class Lambdas
 	 *            the consumer of the clicked link
 	 * @return the {@link Link}
 	 * 
-	 * @see Link#onClick(String, WicketConsumer)
+	 * @see Link#onClick(String, SerializableConsumer)
 	 */
-	public static <T> Link<T> link(String id, WicketConsumer<Link<T>> onClick)
+	public static <T> Link<T> link(String id, SerializableConsumer<Link<T>> onClick)
 	{
 		return Link.onClick(id, onClick);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiConsumer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiConsumer.java b/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiConsumer.java
deleted file mode 100644
index 6f93d6e..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/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.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 <U>
- *            - 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/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiFunction.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiFunction.java b/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiFunction.java
deleted file mode 100644
index f5f66a6..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketBiFunction.java
+++ /dev/null
@@ -1,36 +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.lambda;
-
-import java.io.Serializable;
-import java.util.function.BiFunction;
-
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * A {@link Serializable} {@link BiFunction}.
- *
- * @param <T>
- *            - the type of the first input to the function
- * @param <U>
- *            - the type of the second input to the function
- * @param <R>
- *            - the type of the result of the function
- */
-public interface WicketBiFunction<T, U, R> extends BiFunction<T, U, R>, IClusterable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/WicketConsumer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketConsumer.java b/wicket-core/src/main/java/org/apache/wicket/lambda/WicketConsumer.java
deleted file mode 100644
index 9ffe611..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketConsumer.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.lambda;
-
-import java.io.Serializable;
-import java.util.function.Consumer;
-
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * A {@link Serializable} {@link Consumer}.
- *
- * @param <T>
- *            - the type of the input to consume
- */
-public interface WicketConsumer<T> extends Consumer<T>, IClusterable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/WicketFunction.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketFunction.java b/wicket-core/src/main/java/org/apache/wicket/lambda/WicketFunction.java
deleted file mode 100644
index 3016062..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketFunction.java
+++ /dev/null
@@ -1,34 +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.lambda;
-
-import java.io.Serializable;
-import java.util.function.Function;
-
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * 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>, IClusterable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/lambda/WicketSupplier.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketSupplier.java b/wicket-core/src/main/java/org/apache/wicket/lambda/WicketSupplier.java
deleted file mode 100644
index f25637c..0000000
--- a/wicket-core/src/main/java/org/apache/wicket/lambda/WicketSupplier.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.lambda;
-
-import java.io.Serializable;
-import java.util.function.Supplier;
-
-import org.apache.wicket.util.io.IClusterable;
-
-/**
- * A {@link Serializable} {@link Supplier}.
- *
- * @param <T>
- *            - the type of results supplied by this supplier
- */
-public interface WicketSupplier<T> extends Supplier<T>, IClusterable
-{
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
index 604e964..067f39a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Button.java
@@ -17,12 +17,12 @@
 package org.apache.wicket.markup.html.form;
 
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.MarkupStream;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * A form button.
@@ -261,10 +261,10 @@ public class Button extends FormComponent<String> implements IFormSubmittingComp
 	 * @param id
 	 *            the id of the button
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link Button}
+	 *            the {@code SerializableConsumer} which accepts the {@link Button}
 	 * @return the {@link Button}
 	 */
-	public static Button onSubmit(String id, WicketConsumer<Button> onSubmit)
+	public static Button onSubmit(String id, SerializableConsumer<Button> onSubmit)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 
@@ -286,14 +286,13 @@ public class Button extends FormComponent<String> implements IFormSubmittingComp
 	 * @param id
 	 *            the id of the button
 	 * @param onSubmit
-	 *            the {@link WicketConsumer} which accepts the {@link Button}
+	 *            the {@code SerializableConsumer} which accepts the {@link Button}
 	 * @param onError
-	 *            the {@link WicketConsumer} which accepts the {@link Button}
+	 *            the {@code SerializableConsumer} which accepts the {@link Button}
 	 * @return the {@link AjaxButton}
 	 */
-	public static Button onSubmit(String id,
-	                                    WicketConsumer<Button> onSubmit,
-	                                    WicketConsumer<Button> onError)
+	public static Button onSubmit(String id, SerializableConsumer<Button> onSubmit,
+		SerializableConsumer<Button> onError)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 		Args.notNull(onError, "onError");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 eaeb77a..8c7f1b1 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
@@ -21,11 +21,11 @@ import org.apache.wicket.IGenericComponent;
 import org.apache.wicket.IRequestListener;
 import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * Implementation of a hyperlink component. A link can be used with an anchor (&lt;a href...)
@@ -428,7 +428,7 @@ public abstract class Link<T> extends AbstractLink implements IRequestListener,
 	 *            the consumer of the clicked link
 	 * @return the {@link Link}
 	 */
-	public static <T> Link<T> onClick(String id, WicketConsumer<Link<T>> onClick)
+	public static <T> Link<T> onClick(String id, SerializableConsumer<Link<T>> onClick)
 	{
 		Args.notNull(onClick, "onClick");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
index ac6d157..05d1fc9 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/StatelessLink.java
@@ -17,8 +17,8 @@
 package org.apache.wicket.markup.html.link;
 
 
-import org.apache.wicket.lambda.WicketConsumer;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
 
 /**
  * This link is stateless that means that the url to this link could generate a new page before the
@@ -63,10 +63,10 @@ public abstract class StatelessLink<T> extends Link<T>
 	 * @param id
 	 *            the id of the link
 	 * @param onClick
-	 *            the {@link WicketConsumer} which accepts the {@link Void}
+	 *            the {@code SerializableConsumer} which accepts the {@link Void}
 	 * @return the {@link Link}
 	 */
-	public static <T> StatelessLink<T> onClick(String id, WicketConsumer<Link<T>> onClick)
+	public static <T> StatelessLink<T> onClick(String id, SerializableConsumer<Link<T>> onClick)
 	{
 		Args.notNull(onClick, "onClick");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/IModel.java b/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
index 55b5f04..110be3e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/IModel.java
@@ -17,10 +17,11 @@
 package org.apache.wicket.model;
 
 
-import org.apache.wicket.lambda.WicketBiFunction;
-import org.apache.wicket.lambda.WicketFunction;
-import org.apache.wicket.lambda.WicketSupplier;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiFunction;
+import org.danekja.java.util.function.serializable.SerializableFunction;
+import org.danekja.java.util.function.serializable.SerializablePredicate;
+import org.danekja.java.util.function.serializable.SerializableSupplier;
 
 /**
  * A IModel wraps the actual model Object used by a Component. IModel implementations are used as a
@@ -96,12 +97,12 @@ public interface IModel<T> extends IDetachable
 	 *            a predicate to be used for testing the contained object
 	 * @return a new IModel
 	 */
-	default IModel<T> filter(WicketFunction<? super T, Boolean> predicate)
+	default IModel<T> filter(SerializablePredicate<? super T> predicate)
 	{
 		Args.notNull(predicate, "predicate");
 		return (IModel<T>)() -> {
 			T object = IModel.this.getObject();
-			if (object != null && predicate.apply(object))
+			if (object != null && predicate.test(object))
 			{
 				return object;
 			}
@@ -121,7 +122,7 @@ public interface IModel<T> extends IDetachable
 	 *            a mapper, to be applied to the contained object
 	 * @return a new IModel
 	 */
-	default <R> IModel<R> map(WicketFunction<? super T, R> mapper)
+	default <R> IModel<R> map(SerializableFunction<? super T, R> mapper)
 	{
 		Args.notNull(mapper, "mapper");
 		return (IModel<R>)() -> {
@@ -152,7 +153,7 @@ public interface IModel<T> extends IDetachable
 	 * @return a new IModel
 	 */
 	default <R, U> IModel<R> combineWith(IModel<U> other,
-		WicketBiFunction<? super T, ? super U, R> combiner)
+		SerializableBiFunction<? super T, ? super U, R> combiner)
 	{
 		Args.notNull(combiner, "combiner");
 		Args.notNull(other, "other");
@@ -179,11 +180,13 @@ public interface IModel<T> extends IDetachable
 	 *            a mapper, to be applied to the contained object
 	 * @return a new IModel
 	 */
-	default <R> IModel<R> flatMap(WicketFunction<? super T, IModel<R>> mapper)
+	default <R> IModel<R> flatMap(SerializableFunction<? super T, IModel<R>> mapper)
 	{
 		Args.notNull(mapper, "mapper");
 		return new IModel<R>()
 		{
+			private static final long serialVersionUID = 1L;
+
 			@Override
 			public R getObject()
 			{
@@ -267,7 +270,7 @@ public interface IModel<T> extends IDetachable
 	 *            a supplier to be used as a default
 	 * @return a new IModel
 	 */
-	default IModel<T> orElseGet(WicketSupplier<? extends T> other)
+	default IModel<T> orElseGet(SerializableSupplier<? extends T> other)
 	{
 		Args.notNull(other, "other");
 		return (IModel<T>)() -> {

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
index 3266992..8fb9d6a 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/LambdaModel.java
@@ -18,11 +18,11 @@ package org.apache.wicket.model;
 
 import java.util.Objects;
 
-import org.apache.wicket.lambda.WicketBiConsumer;
-import org.apache.wicket.lambda.WicketConsumer;
-import org.apache.wicket.lambda.WicketFunction;
-import org.apache.wicket.lambda.WicketSupplier;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
+import org.danekja.java.util.function.serializable.SerializableFunction;
+import org.danekja.java.util.function.serializable.SerializableSupplier;
 
 /**
  * <code>LambdaModel</code> is a basic implementation of an <code>IModel</code>
@@ -37,8 +37,8 @@ public class LambdaModel<T> implements IModel<T>
 {
 	private static final long serialVersionUID = 1L;
 
-	private final WicketSupplier<T> getter;
-	private final WicketConsumer<T> setter;
+	private final SerializableSupplier<T> getter;
+	private final SerializableConsumer<T> setter;
 
 	/**
 	 * Construct the model, using the given supplier and consumer as
@@ -47,7 +47,7 @@ public class LambdaModel<T> implements IModel<T>
 	 * @param getter Used for the getObject() method.
 	 * @param setter Used for the setObject(T object) method.
 	 */
-	public LambdaModel(WicketSupplier<T> getter, WicketConsumer<T> setter)
+	public LambdaModel(SerializableSupplier<T> getter, SerializableConsumer<T> setter)
 	{
 		this.getter = Args.notNull(getter, "getter");
 		this.setter = Args.notNull(setter, "setter");
@@ -108,7 +108,8 @@ public class LambdaModel<T> implements IModel<T>
 	 *
 	 * @param <T> model object type
 	 */
-	public static <T> IModel<T> of(WicketSupplier<T> getter, WicketConsumer<T> setter) {
+	public static <T> IModel<T> of(SerializableSupplier<T> getter, SerializableConsumer<T> setter)
+	{
 		return new LambdaModel<>(getter, setter);
 	}
 
@@ -128,7 +129,7 @@ public class LambdaModel<T> implements IModel<T>
 	 * 
 	 * @return model
 	 */
-	public static <X, T> IModel<T> of(IModel<X> target, WicketFunction<X, T> getter)
+	public static <X, T> IModel<T> of(IModel<X> target, SerializableFunction<X, T> getter)
 	{
 		Args.notNull(target, "target");
 		Args.notNull(getter, "getter");
@@ -175,7 +176,8 @@ public class LambdaModel<T> implements IModel<T>
 
 	 * @return model
 	 */
-	public static <X, T> IModel<T> of(IModel<X> target, WicketFunction<X, T> getter, WicketBiConsumer<X, T> setter)
+	public static <X, T> IModel<T> of(IModel<X> target, SerializableFunction<X, T> getter,
+		SerializableBiConsumer<X, T> setter)
 	{
 		Args.notNull(target, "target");
 		Args.notNull(getter, "getter");

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/main/java/org/apache/wicket/model/LoadableDetachableModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/model/LoadableDetachableModel.java b/wicket-core/src/main/java/org/apache/wicket/model/LoadableDetachableModel.java
index c08cebc..d4fcd5e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/model/LoadableDetachableModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/model/LoadableDetachableModel.java
@@ -16,7 +16,7 @@
  */
 package org.apache.wicket.model;
 
-import org.apache.wicket.lambda.WicketSupplier;
+import org.danekja.java.util.function.serializable.SerializableSupplier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -202,7 +202,7 @@ public abstract class LoadableDetachableModel<T> implements IModel<T>
 	 * @param getter Used for the getObject() method.
 	 * @return Model
 	 */
-	public static <T> IModel<T> of(WicketSupplier<T> getter)
+	public static <T> IModel<T> of(SerializableSupplier<T> getter)
 	{
 		return new LoadableDetachableModel<T>()
 		{

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
index 965eac5..d76d117 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/IModelTest.java
@@ -20,9 +20,9 @@ import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
 
-import org.apache.wicket.lambda.WicketBiFunction;
 import org.apache.wicket.model.lambda.Address;
 import org.apache.wicket.model.lambda.Person;
+import org.danekja.java.util.function.serializable.SerializableBiFunction;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -96,8 +96,8 @@ public class IModelTest extends Assert
 	public void combineWith()
 	{
 		IModel<String> janeModel = Model.of("Jane");
-		WicketBiFunction<Person, String, String> function =
-				(WicketBiFunction<Person, String, String>) (person1, other) ->
+		SerializableBiFunction<Person, String, String> function =
+				(SerializableBiFunction<Person, String, String>) (person1, other) ->
 						person1.getName() + " is in relationship with " + other;
 		IModel<String> relationShipModel = Model.of(person).combineWith(janeModel, function);
 		assertThat(relationShipModel.getObject(), is(equalTo("John is in relationship with Jane")));
@@ -107,8 +107,8 @@ public class IModelTest extends Assert
 	public void combineWithNullObject()
 	{
 		IModel<String> janeModel = Model.of((String)null);
-		WicketBiFunction<Person, String, String> function =
-				(WicketBiFunction<Person, String, String>) (person1, other) ->
+		SerializableBiFunction<Person, String, String> function =
+				(SerializableBiFunction<Person, String, String>) (person1, other) ->
 						person1.getName() + " is in relationship with " + other;
 		IModel<String> relationShipModel = Model.of(person).combineWith(janeModel, function);
 		assertThat(relationShipModel.getObject(), is(nullValue()));
@@ -118,8 +118,8 @@ public class IModelTest extends Assert
 	public void combineWithNullModel()
 	{
 		IModel<String> janeModel = null;
-		WicketBiFunction<Person, String, String> function =
-				(WicketBiFunction<Person, String, String>) (person1, other) ->
+		SerializableBiFunction<Person, String, String> function =
+				(SerializableBiFunction<Person, String, String>) (person1, other) ->
 						person1.getName() + " is in relationship with " + other;
 		Model.of(person).combineWith(janeModel, function);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/wicket-core/src/test/java/org/apache/wicket/model/LambdaModelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/model/LambdaModelTest.java b/wicket-core/src/test/java/org/apache/wicket/model/LambdaModelTest.java
index 8bb31ff..2cca5a8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/model/LambdaModelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/model/LambdaModelTest.java
@@ -23,9 +23,9 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 import org.apache.wicket.core.util.lang.WicketObjects;
-import org.apache.wicket.lambda.WicketConsumer;
-import org.apache.wicket.lambda.WicketSupplier;
 import org.apache.wicket.model.lambda.Person;
+import org.danekja.java.util.function.serializable.SerializableConsumer;
+import org.danekja.java.util.function.serializable.SerializableSupplier;
 import org.junit.Test;
 
 /**
@@ -85,8 +85,8 @@ public class LambdaModelTest
 	public void equality()
 	{
 		Person person = new Person();
-		final WicketSupplier<String> getName = person::getName;
-		final WicketConsumer<String> setName = person::setName;
+		final SerializableSupplier<String> getName = person::getName;
+		final SerializableConsumer<String> setName = person::setName;
 		IModel<String> personNameModel1 = new LambdaModel<>(getName, setName);
 		IModel<String> personNameModel2 = new LambdaModel<>(getName, setName);
 		assertEquals(personNameModel1, personNameModel2);
@@ -96,8 +96,8 @@ public class LambdaModelTest
 	public void hashcode()
 	{
 		Person person = new Person();
-		final WicketSupplier<String> getName = person::getName;
-		final WicketConsumer<String> setName = person::setName;
+		final SerializableSupplier<String> getName = person::getName;
+		final SerializableConsumer<String> setName = person::setName;
 		IModel<String> personNameModel1 = new LambdaModel<>(getName, setName);
 		IModel<String> personNameModel2 = new LambdaModel<>(getName, setName);
 		assertEquals(personNameModel1.hashCode(), personNameModel2.hashCode());

http://git-wip-us.apache.org/repos/asf/wicket/blob/20f07bfd/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 9f18c8b..989c4a2 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,8 +21,8 @@ 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.lambda.WicketBiConsumer;
 import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 
 /**
  * A variant of the {@link AjaxButton} that displays a busy indicator while the ajax request is in
@@ -96,7 +96,8 @@ public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIn
 	}
 
 
-	public static IndicatingAjaxButton onSubmit(String id, WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
+	public static IndicatingAjaxButton onSubmit(String id,
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 
@@ -111,8 +112,8 @@ public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIn
 	}
 
 	public static IndicatingAjaxButton onSubmit(String id,
-	                                            WicketBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
-	                                            WicketBiConsumer<AjaxButton, AjaxRequestTarget> onError)
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onSubmit,
+		SerializableBiConsumer<AjaxButton, AjaxRequestTarget> onError)
 	{
 		Args.notNull(onSubmit, "onSubmit");
 		Args.notNull(onError, "onError");