WICKET-6104 Rework AjaxFallback** components to use java.util.Optional for 
their #onEvent methods


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

Branch: refs/heads/lambdas
Commit: ec1db0f3392b89af28c18889b11b76b43a4c768e
Parents: ae36388
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Fri Feb 26 14:16:22 2016 +0100
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Fri Feb 26 14:16:22 2016 +0100

----------------------------------------------------------------------
 .../ajax/markup/html/AjaxFallbackLink.java      |  11 +-
 .../markup/html/form/AjaxFallbackButton.java    |   8 +-
 .../wicket/util/tester/BaseWicketTester.java    |   2 +-
 .../org/apache/wicket/MockPanelWithLink.java    |   6 +-
 .../wicket/ajax/AjaxHeaderContributionPage.java |  16 +--
 .../ajax/AjaxHeaderContributionPage2.java       |  22 ++--
 .../apache/wicket/ajax/DomReadyOrderPage.java   |   6 +-
 .../java/org/apache/wicket/ajax/HomePage.java   |   9 +-
 .../ajax/form/AjaxFormSubmitTestPage.java       |   4 +-
 .../ajax/markup/html/AjaxFallbackLinkTest.java  |   6 +-
 .../DoubleNestedTransparentContainerPage.java   |   9 +-
 ...inerWithSiblingTransparentContainerPage.java |   9 +-
 .../SingleNestedTransparentContainerPage.java   |  10 +-
 ...ntainerWithAutoTransparentContainerPage.java |   7 +-
 ...ainerWithManualTransparentContainerPage.java |   8 +-
 .../html/form/FormWithMultipleButtonsTest.java  |   5 +-
 .../util/tester/apps_5/AjaxLinkClickTest.java   |  11 +-
 .../wicket/util/tester/apps_6/LinkPage.java     |   6 +-
 .../diskstore/browser/BrowserPanel.java         |  15 +--
 .../devutils/inspector/EnhancedPageView.java    |  12 +--
 .../examples/ajax/builtin/EffectsPage.java      |  11 +-
 .../wicket/examples/ajax/builtin/LinksPage.java |   8 +-
 .../examples/ajax/builtin/RatingsPage.java      |   6 +-
 .../wicket/examples/ajax/builtin/TodoList.java  |  41 ++++----
 .../wicket/examples/source/SourcesPage.java     |   8 +-
 .../content/CheckedSelectableFolderContent.java |   8 +-
 .../tree/content/EditableFolderContent.java     |   8 +-
 .../content/MultiSelectableFolderContent.java   |  12 ++-
 .../tree/content/SelectableFolderContent.java   |  15 +--
 .../markup/html/IndicatingAjaxFallbackLink.java |   5 +-
 .../data/sort/AjaxFallbackOrderByBorder.java    |   4 +-
 .../data/sort/AjaxFallbackOrderByLink.java      |  64 +----------
 .../repeater/data/sort/AjaxOrderByLink.java     | 105 +++++++++++++++++++
 .../ajax/markup/html/tabs/AjaxTabbedPanel.java  |  16 ++-
 .../markup/html/repeater/tree/AbstractTree.java |   5 +-
 .../markup/html/repeater/tree/NestedTree.java   |  12 +--
 .../markup/html/repeater/tree/Node.java         |   4 +-
 .../markup/html/repeater/tree/TableTree.java    |   9 +-
 .../html/repeater/tree/content/Folder.java      |   7 +-
 .../repeater/tree/content/StyledLinkLabel.java  |  14 +--
 .../html/repeater/util/TreeModelProvider.java   |   3 +-
 .../wicket/extensions/rating/RatingPanel.java   |  20 ++--
 42 files changed, 314 insertions(+), 253 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/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 18488da..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
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
@@ -39,7 +41,7 @@ import org.apache.wicket.model.IModel;
  * @param <T>
  *            type of model object
  */
-public abstract class AjaxFallbackLink<T> extends Link<T> implements IAjaxLink
+public abstract class AjaxFallbackLink<T> extends Link<T>
 {
        /** */
        private static final long serialVersionUID = 1L;
@@ -87,7 +89,7 @@ public abstract class AjaxFallbackLink<T> extends Link<T> 
implements IAjaxLink
                        @Override
                        protected void onEvent(AjaxRequestTarget target)
                        {
-                               onClick(target);
+                               onClick(Optional.of(target));
                        }
 
                        @Override
@@ -114,7 +116,7 @@ public abstract class AjaxFallbackLink<T> extends Link<T> 
implements IAjaxLink
        @Override
        public final void onClick()
        {
-               onClick(null);
+               onClick(Optional.empty());
        }
 
        /**
@@ -124,8 +126,7 @@ public abstract class AjaxFallbackLink<T> extends Link<T> 
implements IAjaxLink
         * @param target
         *            ajax target if this linked was invoked using ajax, null 
otherwise
         */
-       @Override
-       public abstract void onClick(final AjaxRequestTarget target);
+       public abstract void onClick(final Optional<AjaxRequestTarget> target);
 
        /**
         * Removes any inline 'onclick' attributes set by 
Link#onComponentTag(ComponentTag).

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
index 0d164fd..9f25d9b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax.markup.html.form;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
@@ -71,7 +73,7 @@ public abstract class AjaxFallbackButton extends Button
                        @Override
                        protected void onSubmit(AjaxRequestTarget target)
                        {
-                               AjaxFallbackButton.this.onSubmit(target, 
AjaxFallbackButton.this.getForm());
+                               
AjaxFallbackButton.this.onSubmit(Optional.ofNullable(target), 
AjaxFallbackButton.this.getForm());
                        }
 
                        @Override
@@ -138,7 +140,7 @@ public abstract class AjaxFallbackButton extends Button
        {
                if (getRequestCycle().find(AjaxRequestTarget.class) == null)
                {
-                       onSubmit(null, getForm());
+                       onSubmit(Optional.empty(), getForm());
                }
        }
 
@@ -173,7 +175,7 @@ public abstract class AjaxFallbackButton extends Button
         *            ajax target if this linked was invoked using ajax, null 
otherwise
         * @param form
         */
-       protected void onSubmit(final AjaxRequestTarget target, final Form<?> 
form)
+       protected void onSubmit(final Optional<AjaxRequestTarget> target, final 
Form<?> form)
        {
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
index 0242eb9..a5fb789 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
@@ -1924,7 +1924,7 @@ public class BaseWicketTester
                                
(AjaxFormSubmitBehavior)WicketTesterHelper.findAjaxEventBehavior(link, 
"click"));
                }
                // if the link is an IAjaxLink, use it (do check if AJAX is 
expected)
-               else if (linkComponent instanceof IAjaxLink && isAjax)
+               else if (isAjax && (linkComponent instanceof IAjaxLink || 
linkComponent instanceof AjaxFallbackLink))
                {
                        List<AjaxEventBehavior> behaviors = 
WicketTesterHelper.findAjaxEventBehaviors(
                                linkComponent, "click");

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/MockPanelWithLink.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/MockPanelWithLink.java 
b/wicket-core/src/test/java/org/apache/wicket/MockPanelWithLink.java
index ce20aca..083e888 100644
--- a/wicket-core/src/test/java/org/apache/wicket/MockPanelWithLink.java
+++ b/wicket-core/src/test/java/org/apache/wicket/MockPanelWithLink.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.markup.IMarkupCacheKeyProvider;
@@ -46,9 +48,9 @@ public abstract class MockPanelWithLink extends Panel
                add(new AjaxFallbackLink<Void>("link")
                {
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               MockPanelWithLink.this.onLinkClick(target);
+                               
MockPanelWithLink.this.onLinkClick(targetOptional.orElse(null));
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage.java
index a7ccde9..feff1db 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.markup.html.WebPage;
@@ -43,13 +45,15 @@ public class AjaxHeaderContributionPage extends WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               target.prependJavaScript("prepend();");
-                               target.add(test1);
-                               target.add(test2);
-                               target.add(test3);
-                               target.appendJavaScript("append();");
+                               targetOptional.ifPresent(target -> {
+                                       target.prependJavaScript("prepend();");
+                                       target.add(test1);
+                                       target.add(test2);
+                                       target.add(test3);
+                                       target.appendJavaScript("append();");
+                               });
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2.java
index 44c6d4f..398f036 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/AjaxHeaderContributionPage2.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.markup.html.WebPage;
@@ -50,16 +52,18 @@ public class AjaxHeaderContributionPage2 extends WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               target.prependJavaScript("prepend();");
-                               target.add(test1);
-                               target.add(test2);
-                               target.add(test3);
-                               target.add(btest1);
-                               target.add(btest2);
-                               target.add(btest3);
-                               target.appendJavaScript("append();");
+                               targetOptional.ifPresent(target -> {
+                                       target.prependJavaScript("prepend();");
+                                       target.add(test1);
+                                       target.add(test2);
+                                       target.add(test3);
+                                       target.add(btest1);
+                                       target.add(btest2);
+                                       target.add(btest3);
+                                       target.appendJavaScript("append();");
+                               });
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage.java 
b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage.java
index 17670d3..27a6447 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.WebPage;
@@ -60,9 +62,9 @@ public class DomReadyOrderPage extends WebPage
                }
 
                @Override
-               public void onClick(AjaxRequestTarget target)
+               public void onClick(Optional<AjaxRequestTarget> targetOptional)
                {
-                       target.add(this);
+                       targetOptional.ifPresent(target -> target.add(this));
                }
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/HomePage.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/HomePage.java 
b/wicket-core/src/test/java/org/apache/wicket/ajax/HomePage.java
index cf4d32f..190b0af 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/HomePage.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/HomePage.java
@@ -18,6 +18,7 @@ package org.apache.wicket.ajax;
 
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -63,7 +64,7 @@ public class HomePage extends WebPage
 
                };
                add(form);
-               form.add(new TextField<String>("textfield", new 
Model<String>()));
+               form.add(new TextField<>("textfield", new Model<>()));
                form.add(new Button("submit"));
 
                final WebMarkupContainer listViewContainer = new 
WebMarkupContainer("listViewContainer");
@@ -77,7 +78,7 @@ public class HomePage extends WebPage
                                @Override
                                public List<Object> getObject()
                                {
-                                       List<Object> objects = new 
LinkedList<Object>();
+                                       List<Object> objects = new 
LinkedList<>();
                                        for (int i = 0; i < rows; i++)
                                        {
                                                objects.add(new Object());
@@ -97,11 +98,11 @@ public class HomePage extends WebPage
                form.add(new AjaxFallbackButton("addButton", form)
                {
                        @Override
-                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
+                       protected void onSubmit(Optional<AjaxRequestTarget> 
targetOptional, Form<?> form)
                        {
                                rows++;
                                listView.removeAll();
-                               target.add(listViewContainer);
+                               targetOptional.ifPresent(target -> 
target.add(listViewContainer));
                        }
 
                        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage.java
index acd7c36..b372395 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax.form;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton;
 import org.apache.wicket.markup.html.WebPage;
@@ -76,7 +78,7 @@ public class AjaxFormSubmitTestPage extends WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
+                       protected void onSubmit(Optional<AjaxRequestTarget> 
target, Form<?> form)
                        {
                                formSubmitted = formSubmitted | BUTTON;
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLinkTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLinkTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLinkTest.java
index ac047dc..0441436 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLinkTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLinkTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.ajax.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
@@ -46,10 +48,10 @@ public class AjaxFallbackLinkTest extends WicketTestCase
        {
                private OnlyAnchorAreaAndLinkPage()
                {
-                       add(new AjaxFallbackLink("l") {
+                       add(new AjaxFallbackLink<Void>("l") {
 
                                @Override
-                               public void onClick(AjaxRequestTarget target)
+                               public void onClick(Optional<AjaxRequestTarget> 
optional)
                                {
                                }
                        });

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerPage.java
index 651d85a..0008abd 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerPage.java
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
-import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 
 /**
@@ -54,10 +54,9 @@ public class DoubleNestedTransparentContainerPage extends 
WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                                       target.add(label);
+                               targetOptional.ifPresent(target -> 
target.add(label));
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerWithSiblingTransparentContainerPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerWithSiblingTransparentContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerWithSiblingTransparentContainerPage.java
index b5334a9..84d2bcd 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerWithSiblingTransparentContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/DoubleNestedTransparentContainerWithSiblingTransparentContainerPage.java
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
-import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 
 /**
@@ -60,10 +60,9 @@ public class 
DoubleNestedTransparentContainerWithSiblingTransparentContainerPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                                       target.add(label);
+                               targetOptional.ifPresent(target -> 
target.add(label));
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/SingleNestedTransparentContainerPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/SingleNestedTransparentContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/SingleNestedTransparentContainerPage.java
index 877e9b6..3a514a5 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/SingleNestedTransparentContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/SingleNestedTransparentContainerPage.java
@@ -16,11 +16,10 @@
  */
 package org.apache.wicket.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
-import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
 
 /**
@@ -56,10 +55,9 @@ public class SingleNestedTransparentContainerPage extends 
WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                                       target.add(label);
+                               targetOptional.ifPresent(target -> 
target.add(label));
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithAutoTransparentContainerPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithAutoTransparentContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithAutoTransparentContainerPage.java
index 287adb4..eaad76b 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithAutoTransparentContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithAutoTransparentContainerPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -68,10 +70,9 @@ public class 
TransparentContainerWithAutoTransparentContainerPage extends WebPag
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                                       target.add(label);
+                               targetOptional.ifPresent(target -> 
target.add(label));
                        }
                });
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithManualTransparentContainerPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithManualTransparentContainerPage.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithManualTransparentContainerPage.java
index f2c2303..29ed322 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithManualTransparentContainerPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/TransparentContainerWithManualTransparentContainerPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -74,11 +76,9 @@ public class 
TransparentContainerWithManualTransparentContainerPage extends WebP
                {
                        private static final long serialVersionUID = 1L;
 
-                       @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                                       target.add(label);
+                               targetOptional.ifPresent(target -> 
target.add(label));
                        }
                });
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormWithMultipleButtonsTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormWithMultipleButtonsTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormWithMultipleButtonsTest.java
index 3f94112..081efe2 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormWithMultipleButtonsTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/FormWithMultipleButtonsTest.java
@@ -18,6 +18,7 @@ package org.apache.wicket.markup.html.form;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -53,7 +54,7 @@ public class FormWithMultipleButtonsTest extends 
WicketTestCase
        }
 
        /**
-        * @see href https://issues.apache.org/jira/browse/WICKET-1894
+        * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-1894";>WICKET-1894</a>
         */
        @Test
        public void ajaxFallbackButtonInvokedFirst()
@@ -119,7 +120,7 @@ public class FormWithMultipleButtonsTest extends 
WicketTestCase
                                private static final long serialVersionUID = 1L;
 
                                @Override
-                               protected void onSubmit(AjaxRequestTarget 
target, Form<?> form)
+                               protected void 
onSubmit(Optional<AjaxRequestTarget> target, Form<?> form)
                                {
                                        submitSequence.add(this);
                                }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxLinkClickTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxLinkClickTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxLinkClickTest.java
index 9e79501..8077100 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxLinkClickTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_5/AjaxLinkClickTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.util.tester.apps_5;
 
+import java.util.Optional;
+
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
@@ -89,11 +91,10 @@ public class AjaxLinkClickTest extends WicketTestCase
                {
                        private static final long serialVersionUID = 1L;
 
-                       @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                linkClicked = true;
-                               ajaxRequestTarget = target;
+                               targetOptional.ifPresent(target -> 
ajaxRequestTarget = target);
                        }
                });
 
@@ -119,10 +120,10 @@ public class AjaxLinkClickTest extends WicketTestCase
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                linkClicked = true;
-                               ajaxRequestTarget = target;
+                               targetOptional.ifPresent(target -> 
ajaxRequestTarget = target);
                        }
                });
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_6/LinkPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_6/LinkPage.java 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_6/LinkPage.java
index 9e6dc21..6106327 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_6/LinkPage.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/util/tester/apps_6/LinkPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.util.tester.apps_6;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -91,7 +93,7 @@ public class LinkPage extends WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                
getRequestCycle().setResponsePage(ResultPage.class);
                        }
@@ -102,7 +104,7 @@ public class LinkPage extends WebPage
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                getRequestCycle().setResponsePage(new 
ResultPage("A special label"));
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
index 25358cc..51cd5f7 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserPanel.java
@@ -18,6 +18,7 @@ package org.apache.wicket.devutils.diskstore.browser;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
@@ -55,12 +56,9 @@ public class BrowserPanel extends Panel
                AjaxFallbackLink<Void> refreshLink = new 
AjaxFallbackLink<Void>("refresh")
                {
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               if (target != null)
-                               {
-                                       target.add(table);
-                               }
+                               targetOptional.ifPresent(target -> 
target.add(table));
                        }
                };
                add(refreshLink);
@@ -68,13 +66,10 @@ public class BrowserPanel extends Panel
                AjaxFallbackLink<Void> currentSessionLink = new 
AjaxFallbackLink<Void>("currentSessionLink")
                {
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                
sessionsSelector.setModelObject(getCurrentSession().getObject());
-                               if (target != null)
-                               {
-                                       target.add(sessionsSelector, table);
-                               }
+                               targetOptional.ifPresent(target -> 
target.add(sessionsSelector, table));
                        }
 
                        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
----------------------------------------------------------------------
diff --git 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
index 0687f75..49fd4c1 100644
--- 
a/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
+++ 
b/wicket-devutils/src/main/java/org/apache/wicket/devutils/inspector/EnhancedPageView.java
@@ -24,6 +24,7 @@ import java.util.Comparator;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.wicket.Component;
@@ -307,12 +308,10 @@ public final class EnhancedPageView extends 
GenericPanel<Page>
                {
                        private static final long serialVersionUID = 1L;
 
-                       @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                expandState.expandAll();
-                               if (target != null)
-                                       target.add(componentTree);
+                               targetOptional.ifPresent(target -> 
target.add(componentTree));
                        }
                });
                add(new AjaxFallbackLink<Void>("collapseAll")
@@ -320,11 +319,10 @@ public final class EnhancedPageView extends 
GenericPanel<Page>
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                expandState.collapseAll();
-                               if (target != null)
-                                       target.add(componentTree);
+                               targetOptional.ifPresent(target -> 
target.add(componentTree));
                        }
                });
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EffectsPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EffectsPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EffectsPage.java
index e3763c7..e286584 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EffectsPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/EffectsPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.examples.ajax.builtin;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxChannel;
 import org.apache.wicket.ajax.AjaxChannel.Type;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -105,15 +107,14 @@ public class EffectsPage extends BasePage
                add(new AjaxFallbackLink<Void>("c2-link")
                {
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                counter2++;
-                               if (target != null)
-                               {
+                               targetOptional.ifPresent(target -> {
                                        target.add(c2);
                                        
target.appendJavaScript(String.format("jQuery('#%s').effect('highlight');",
-                                               c2.getMarkupId()));
-                               }
+                                                       c2.getMarkupId()));
+                               });
                        }
 
                        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
index d5d99cb..2dc80bf 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.examples.ajax.builtin;
 
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.WicketRuntimeException;
@@ -97,17 +98,14 @@ public class LinksPage extends BasePage
                add(new AjaxFallbackLink<Void>("c2-link")
                {
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                counter2++;
                                // notice that for a fallback link we need to 
makesure the
                                // target is not null. if the target is null 
ajax failed and the
                                // fallback was used, so there is no need to do 
any ajax-related
                                // processing.
-                               if (target != null)
-                               {
-                                       target.add(c2);
-                               }
+                               targetOptional.ifPresent(target -> 
target.add(c2));
                        }
                });
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
index 6ad0b40..44ad5e6 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/RatingsPage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.examples.ajax.builtin;
 
+import java.util.Optional;
+
 import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.rating.RatingPanel;
@@ -181,7 +183,7 @@ public class RatingsPage extends BasePage
                        }
 
                        @Override
-                       public void onRated(int rating, AjaxRequestTarget 
target)
+                       public void onRated(int rating, 
Optional<AjaxRequestTarget> target)
                        {
                                RatingsPage.rating1.addRating(rating);
                        }
@@ -212,7 +214,7 @@ public class RatingsPage extends BasePage
                        }
 
                        @Override
-                       public void onRated(int rating, AjaxRequestTarget 
target)
+                       public void onRated(int rating, 
Optional<AjaxRequestTarget> target)
                        {
                                // make sure the user can't vote again
                                hasVoted = Boolean.TRUE;

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/TodoList.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/TodoList.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/TodoList.java
index 9c37a48..66cc50a 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/TodoList.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/TodoList.java
@@ -18,6 +18,7 @@ package org.apache.wicket.examples.ajax.builtin;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
@@ -165,7 +166,7 @@ public class TodoList extends BasePage
                private boolean linkVisible = true;
 
                /** Link for displaying the AddTodo form. */
-               private final class AddTodoLink extends AjaxFallbackLink
+               private final class AddTodoLink extends AjaxFallbackLink<Void>
                {
                        /** Constructor. */
                        private AddTodoLink(String id)
@@ -176,13 +177,13 @@ public class TodoList extends BasePage
                        /**
                         * onclick handler.
                         * 
-                        * @param target
+                        * @param targetOptional
                         *            the request target.
                         */
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               onShowForm(target);
+                               onShowForm(targetOptional);
                        }
 
                        /**
@@ -201,7 +202,7 @@ public class TodoList extends BasePage
                 * Link for removing all completed todos from the list, this 
link follows the same
                 * visibility rules as the add link.
                 */
-               private final class RemoveCompletedTodosLink extends 
AjaxFallbackLink
+               private final class RemoveCompletedTodosLink extends 
AjaxFallbackLink<Void>
                {
                        /**
                         * Constructor.
@@ -214,13 +215,10 @@ public class TodoList extends BasePage
                                super(id);
                        }
 
-                       /**
-                        * @see 
AjaxFallbackLink#onClick(org.apache.wicket.ajax.AjaxRequestTarget)
-                        */
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               onRemoveCompletedTodos(target);
+                               onRemoveCompletedTodos(targetOptional);
                        }
 
                        /**
@@ -318,19 +316,19 @@ public class TodoList extends BasePage
                /**
                 * Called then the add link was clicked, shows the form, and 
hides the link.
                 * 
-                * @param target
+                * @param targetOptional
                 *            the request target.
                 */
-               void onShowForm(AjaxRequestTarget target)
+               void onShowForm(Optional<AjaxRequestTarget> targetOptional)
                {
                        // toggle the visibility
                        linkVisible = false;
 
                        // redraw the add container.
-                       target.add(this);
+                       targetOptional.ifPresent(target -> target.add(this));
                }
 
-               void onRemoveCompletedTodos(AjaxRequestTarget target)
+               void onRemoveCompletedTodos(Optional<AjaxRequestTarget> 
targetOptional)
                {
                        List<TodoItem> ready = new ArrayList<>();
                        for (TodoItem todo : items)
@@ -342,11 +340,13 @@ public class TodoList extends BasePage
                        }
                        items.removeAll(ready);
 
-                       // repaint our panel
-                       target.add(this);
+                       targetOptional.ifPresent(target -> {
+                               // repaint our panel
+                               target.add(this);
 
-                       // repaint the listview as there was a new item added.
-                       target.add(showItems);
+                               // repaint the listview as there was a new item 
added.
+                               target.add(showItems);
+                       });
                }
 
                /**
@@ -413,11 +413,8 @@ public class TodoList extends BasePage
 
                add(new AjaxFallbackLink<Void>("ajaxback")
                {
-                       /**
-                        * @see 
org.apache.wicket.ajax.markup.html.AjaxFallbackLink#onClick(org.apache.wicket.ajax.AjaxRequestTarget)
-                        */
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                setResponsePage(getPage());
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
index dd30e07..8632e9d 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/source/SourcesPage.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.Optional;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
@@ -293,15 +294,14 @@ public class SourcesPage extends WebPage
                                                item.getModel())
                                        {
                                                @Override
-                                               public void 
onClick(AjaxRequestTarget target)
+                                               public void 
onClick(Optional<AjaxRequestTarget> targetOptional)
                                                {
                                                        
setName(getDefaultModelObjectAsString());
 
-                                                       if (target != null)
-                                                       {
+                                                       
targetOptional.ifPresent(target -> {
                                                                
target.add(codePanel);
                                                                
target.add(filename);
-                                                       }
+                                                       });
                                                }
 
                                                @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/CheckedSelectableFolderContent.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/CheckedSelectableFolderContent.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/CheckedSelectableFolderContent.java
index 0fab470..8310fe8 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/CheckedSelectableFolderContent.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/CheckedSelectableFolderContent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.examples.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.examples.tree.Foo;
@@ -75,9 +77,9 @@ public class CheckedSelectableFolderContent extends 
SelectableFolderContent
                        }
 
                        @Override
-                       protected void onClick(AjaxRequestTarget target)
+                       protected void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               
CheckedSelectableFolderContent.this.select(getModelObject(), tree, target);
+                               
CheckedSelectableFolderContent.this.select(getModelObject(), tree, 
targetOptional);
                        }
 
                        @Override
@@ -87,4 +89,4 @@ public class CheckedSelectableFolderContent extends 
SelectableFolderContent
                        }
                };
        }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/EditableFolderContent.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/EditableFolderContent.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/EditableFolderContent.java
index e202bae..280857b 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/EditableFolderContent.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/EditableFolderContent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.examples.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -72,7 +74,7 @@ public class EditableFolderContent extends Content
                        @Override
                        protected Component newLabelComponent(String id, final 
IModel<Foo> model)
                        {
-                               return new AjaxEditableLabel<String>(id, new 
PropertyModel<String>(model, "bar"))
+                               return new AjaxEditableLabel<String>(id, new 
PropertyModel<>(model, "bar"))
                                {
                                        @Override
                                        protected void 
onSubmit(AjaxRequestTarget target)
@@ -82,10 +84,10 @@ public class EditableFolderContent extends Content
                                                /**
                                                 * update whole node in case 
we're located inside TableTree
                                                 */
-                                               
tree.updateNode(model.getObject(), target);
+                                               
tree.updateNode(model.getObject(), Optional.of(target));
                                        }
                                };
                        }
                };
        }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/MultiSelectableFolderContent.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/MultiSelectableFolderContent.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/MultiSelectableFolderContent.java
index 0c36fa5..2e70744 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/MultiSelectableFolderContent.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/MultiSelectableFolderContent.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.examples.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.examples.tree.Foo;
@@ -51,7 +53,7 @@ public class MultiSelectableFolderContent extends Content
                return selected.contains(foo);
        }
 
-       protected void toggle(Foo foo, AbstractTree<Foo> tree, final 
AjaxRequestTarget target)
+       protected void toggle(Foo foo, AbstractTree<Foo> tree, final 
Optional<AjaxRequestTarget> targetOptional)
        {
                if (isSelected(foo))
                {
@@ -62,7 +64,7 @@ public class MultiSelectableFolderContent extends Content
                        selected.add(foo);
                }
 
-               tree.updateNode(foo, target);
+               tree.updateNode(foo, targetOptional);
        }
 
        @Override
@@ -82,9 +84,9 @@ public class MultiSelectableFolderContent extends Content
                        }
 
                        @Override
-                       protected void onClick(AjaxRequestTarget target)
+                       protected void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               
MultiSelectableFolderContent.this.toggle(getModelObject(), tree, target);
+                               
MultiSelectableFolderContent.this.toggle(getModelObject(), tree, 
targetOptional);
                        }
 
                        @Override
@@ -94,4 +96,4 @@ public class MultiSelectableFolderContent extends Content
                        }
                };
        }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/SelectableFolderContent.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/SelectableFolderContent.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/SelectableFolderContent.java
index b2605d5..caafcae 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/SelectableFolderContent.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/tree/content/SelectableFolderContent.java
@@ -16,8 +16,11 @@
  */
 package org.apache.wicket.examples.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.examples.tree.Foo;
 import org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree;
 import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
@@ -64,11 +67,11 @@ public class SelectableFolderContent extends Content
                }
        }
 
-       protected void select(Foo foo, AbstractTree<Foo> tree, final 
AjaxRequestTarget target)
+       protected void select(Foo foo, AbstractTree<Foo> tree, final 
Optional<AjaxRequestTarget> targetOptional)
        {
                if (selected != null)
                {
-                       tree.updateNode(selected.getObject(), target);
+                       tree.updateNode(selected.getObject(), targetOptional);
 
                        selected.detach();
                        selected = null;
@@ -76,7 +79,7 @@ public class SelectableFolderContent extends Content
 
                selected = provider.model(foo);
 
-               tree.updateNode(foo, target);
+               tree.updateNode(foo, targetOptional);
        }
 
        @Override
@@ -96,9 +99,9 @@ public class SelectableFolderContent extends Content
                        }
 
                        @Override
-                       protected void onClick(AjaxRequestTarget target)
+                       protected void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               
SelectableFolderContent.this.select(getModelObject(), tree, target);
+                               
SelectableFolderContent.this.select(getModelObject(), tree, targetOptional);
                        }
 
                        @Override
@@ -108,4 +111,4 @@ public class SelectableFolderContent extends Content
                        }
                };
        }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
index 47df05f..133e273 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxFallbackLink.java
@@ -35,11 +35,8 @@ public abstract class IndicatingAjaxFallbackLink<T> extends 
AjaxFallbackLink<T>
        implements
                IAjaxIndicatorAware
 {
-
-       /**
-        * 
-        */
        private static final long serialVersionUID = 1L;
+
        private final AjaxIndicatorAppender indicatorAppender = new 
AjaxIndicatorAppender();
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
index d35433b..e91c949 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByBorder.java
@@ -55,7 +55,7 @@ public abstract class AjaxFallbackOrderByBorder<S> extends 
OrderByBorder<S>
        @Override
        protected OrderByLink<S> newOrderByLink(String id, S property, 
ISortStateLocator<S> stateLocator)
        {
-               return new AjaxFallbackOrderByLink<S>("orderByLink", property, 
stateLocator)
+               return new AjaxOrderByLink<S>("orderByLink", property, 
stateLocator)
                {
                        private static final long serialVersionUID = 1L;
 
@@ -93,6 +93,4 @@ public abstract class AjaxFallbackOrderByBorder<S> extends 
OrderByBorder<S>
        }
 
        protected abstract void onAjaxClick(AjaxRequestTarget target);
-
-
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
index e937e72..503d226 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxFallbackOrderByLink.java
@@ -16,10 +16,6 @@
  */
 package org.apache.wicket.extensions.ajax.markup.html.repeater.data.sort;
 
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
-import org.apache.wicket.ajax.markup.html.IAjaxLink;
 import 
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink;
 
@@ -34,13 +30,11 @@ import 
org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink;
  * @since 1.2.1
  * 
  * @author Igor Vaynberg (ivaynberg)
- * 
+ * @deprecated Use {@link AjaxOrderByLink} instead
  */
-public abstract class AjaxFallbackOrderByLink<S> extends OrderByLink<S> 
implements IAjaxLink
+@Deprecated
+public abstract class AjaxFallbackOrderByLink<S> extends AjaxOrderByLink<S>
 {
-       /**
-        * 
-        */
        private static final long serialVersionUID = 1L;
 
        /**
@@ -55,56 +49,4 @@ public abstract class AjaxFallbackOrderByLink<S> extends 
OrderByLink<S> implemen
        {
                super(id, sortProperty, stateLocator);
        }
-
-       @Override
-       public void onInitialize()
-       {
-               super.onInitialize();
-
-               add(newAjaxEventBehavior("click"));
-       }
-
-       /**
-        * @param event
-        *            the name of the default event on which this link will 
listen to
-        * @return the ajax behavior which will be executed when the user 
clicks the link
-        */
-       protected AjaxEventBehavior newAjaxEventBehavior(final String event)
-       {
-               return new AjaxEventBehavior(event)
-               {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void onEvent(final AjaxRequestTarget target)
-                       {
-                               onClick();
-                               AjaxFallbackOrderByLink.this.onClick(target);
-                       }
-
-                       @Override
-                       protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes)
-                       {
-                               super.updateAjaxAttributes(attributes);
-                               attributes.setPreventDefault(true);
-
-                               
AjaxFallbackOrderByLink.this.updateAjaxAttributes(attributes);
-                       }
-               };
-       }
-
-       protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
-       {
-       }
-
-       /**
-        * Callback method when an ajax click occurs. All the behavior of 
changing the sort, etc is
-        * already performed before this is called so this method should 
primarily be used to configure
-        * the target.
-        * 
-        * @param target
-        */
-       @Override
-       public abstract void onClick(AjaxRequestTarget target);
-
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxOrderByLink.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxOrderByLink.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxOrderByLink.java
new file mode 100644
index 0000000..ecca89c
--- /dev/null
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/sort/AjaxOrderByLink.java
@@ -0,0 +1,105 @@
+/*
+ * 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.extensions.ajax.markup.html.repeater.data.sort;
+
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.IAjaxLink;
+import 
org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLocator;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink;
+
+
+/**
+ * Ajaxified {@link OrderByLink}
+ *
+ * @param <S>
+ *            the type of the sort property
+ * @see OrderByLink
+ */
+public abstract class AjaxOrderByLink<S> extends OrderByLink<S> implements 
IAjaxLink
+{
+       /**
+        *
+        */
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Constructor
+        *
+        * @param id
+        * @param sortProperty
+        * @param stateLocator
+        */
+       public AjaxOrderByLink(final String id, final S sortProperty,
+                              final ISortStateLocator<S> stateLocator)
+       {
+               super(id, sortProperty, stateLocator);
+       }
+
+       @Override
+       public void onInitialize()
+       {
+               super.onInitialize();
+
+               add(newAjaxEventBehavior("click"));
+       }
+
+       /**
+        * @param event
+        *            the name of the default event on which this link will 
listen to
+        * @return the ajax behavior which will be executed when the user 
clicks the link
+        */
+       protected AjaxEventBehavior newAjaxEventBehavior(final String event)
+       {
+               return new AjaxEventBehavior(event)
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onEvent(final AjaxRequestTarget target)
+                       {
+                               onClick();
+                               AjaxOrderByLink.this.onClick(target);
+                       }
+
+                       @Override
+                       protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes)
+                       {
+                               super.updateAjaxAttributes(attributes);
+                               attributes.setPreventDefault(true);
+
+                               
AjaxOrderByLink.this.updateAjaxAttributes(attributes);
+                       }
+               };
+       }
+
+       protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+       {
+       }
+
+       /**
+        * Callback method when an ajax click occurs. All the behavior of 
changing the sort, etc is
+        * already performed before this is called so this method should 
primarily be used to configure
+        * the target.
+        * 
+        * @param target
+        */
+       @Override
+       public abstract void onClick(AjaxRequestTarget target);
+
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/tabs/AjaxTabbedPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/tabs/AjaxTabbedPanel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/tabs/AjaxTabbedPanel.java
index e3e0e6f..db08078 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/tabs/AjaxTabbedPanel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/tabs/AjaxTabbedPanel.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.extensions.ajax.markup.html.tabs;
 
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
@@ -72,20 +73,15 @@ public class AjaxTabbedPanel<T extends ITab> extends 
TabbedPanel<T>
        {
                return new AjaxFallbackLink<Void>(linkId)
                {
-
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(final AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                setSelectedTab(index);
-                               if (target != null)
-                               {
-                                       target.add(AjaxTabbedPanel.this);
-                               }
-                               onAjaxUpdate(target);
+                               targetOptional.ifPresent(target -> 
target.add(AjaxTabbedPanel.this));
+                               onAjaxUpdate(targetOptional);
                        }
-
                };
        }
 
@@ -97,11 +93,11 @@ public class AjaxTabbedPanel<T extends ITab> extends 
TabbedPanel<T>
         * <strong>Note</strong> Since an {@link AjaxFallbackLink} is used to 
back the ajax update the
         * <code>target</code> argument can be null when the client browser 
does not support ajax and
         * the fallback mode is used. See {@link AjaxFallbackLink} for details.
-        * 
+        *
         * @param target
         *            ajax target used to update this component
         */
-       protected void onAjaxUpdate(final AjaxRequestTarget target)
+       protected void onAjaxUpdate(final Optional<AjaxRequestTarget> target)
        {
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/AbstractTree.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/AbstractTree.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/AbstractTree.java
index 439c0c7..2bcf921 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/AbstractTree.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/AbstractTree.java
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.tree;
 
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.wicket.Component;
@@ -314,12 +315,12 @@ public abstract class AbstractTree<T> extends Panel 
implements IGenericComponent
         * @param target
         *            request target or {@code null}
         */
-       public abstract void updateNode(T node, final 
IPartialPageRequestHandler target);
+       public abstract void updateNode(T node, final Optional<? extends 
IPartialPageRequestHandler> target);
 
        /**
         * The state of a node.
         */
-       public static enum State {
+       public enum State {
                /**
                 * The node is collapsed, i.e. its children are not iterated.
                 */

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
index 41dfa79..f41be80 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/NestedTree.java
@@ -16,10 +16,10 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.tree;
 
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.markup.html.repeater.tree.nested.BranchItem;
 import org.apache.wicket.extensions.markup.html.repeater.tree.nested.Subtree;
@@ -37,7 +37,6 @@ import org.apache.wicket.util.visit.IVisitor;
  */
 public abstract class NestedTree<T> extends AbstractTree<T>
 {
-
        private static final long serialVersionUID = 1L;
 
        /**
@@ -89,7 +88,7 @@ public abstract class NestedTree<T> extends AbstractTree<T>
        /**
         * Overridden to let the node output its markup id.
         * 
-        * @see #updateNode(Object, IPartialPageRequestHandler)
+        * @see #updateNode(Object, Optional<IPartialPageRequestHandler>)
         * @see Component#setOutputMarkupId(boolean)
         */
        @Override
@@ -132,10 +131,9 @@ public abstract class NestedTree<T> extends AbstractTree<T>
         * Overridden to update the corresponding {@link Node} only.
         */
        @Override
-       public void updateNode(T node, final IPartialPageRequestHandler target)
+       public void updateNode(T node, final Optional<? extends 
IPartialPageRequestHandler> targetOptional)
        {
-               if (target != null)
-               {
+               targetOptional.ifPresent(target -> {
                        final IModel<T> model = getProvider().model(node);
                        visitChildren(Node.class, new IVisitor<Node<T>, Void>()
                        {
@@ -152,7 +150,7 @@ public abstract class NestedTree<T> extends AbstractTree<T>
                                }
                        });
                        model.detach();
-               }
+               });
        }
 
        private class RootsModel extends AbstractReadOnlyModel<T>

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/Node.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/Node.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/Node.java
index 26c0685..e48a34c 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/Node.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/Node.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.tree;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -115,7 +117,7 @@ public abstract class Node<T> extends Panel
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
                                toggle();
                        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/TableTree.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/TableTree.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/TableTree.java
index 01d00c1..df61813 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/TableTree.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/TableTree.java
@@ -17,9 +17,9 @@
 package org.apache.wicket.extensions.markup.html.repeater.tree;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
-import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
@@ -184,10 +184,9 @@ public abstract class TableTree<T, S> extends 
AbstractTree<T>
         * For an update of a node the complete row item is added to the ART.
         */
        @Override
-       public void updateNode(T t, final IPartialPageRequestHandler target)
+       public void updateNode(T t, final Optional<? extends 
IPartialPageRequestHandler> targetOptional)
        {
-               if (target != null)
-               {
+               targetOptional.ifPresent(target -> {
                        final IModel<T> model = getProvider().model(t);
                        visitChildren(Item.class, new IVisitor<Item<T>, Void>()
                        {
@@ -207,7 +206,7 @@ public abstract class TableTree<T, S> extends 
AbstractTree<T>
                                }
                        });
                        model.detach();
-               }
+               });
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/Folder.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/Folder.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/Folder.java
index ee8159f..8130d72 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/Folder.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/Folder.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.util.string.CssUtils;
 import org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree;
@@ -28,13 +30,12 @@ import org.apache.wicket.model.IModel;
  * 
  * The link is used to expand/collapse the tree depending on the {@link State} 
of the current node.
  * Nodes without children are not clickable. Subclasses may change this 
behavior by overriding
- * {@link #isClickable()} and {@link #onClick(AjaxRequestTarget)}.
+ * {@link #isClickable()} and {@link #onClick(Optional<AjaxRequestTarget>)}.
  * 
  * @author svenmeier
  */
 public class Folder<T> extends StyledLinkLabel<T>
 {
-
        private static final long serialVersionUID = 1L;
 
        public static final String OTHER_CSS_CLASS_KEY = 
CssUtils.key(Folder.class, "other");
@@ -71,7 +72,7 @@ public class Folder<T> extends StyledLinkLabel<T>
         * Toggle the node's {@link State} on click.
         */
        @Override
-       protected void onClick(AjaxRequestTarget target)
+       protected void onClick(Optional<AjaxRequestTarget> targetOptional)
        {
                T t = getModelObject();
                if (tree.getState(t) == State.EXPANDED)

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/StyledLinkLabel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/StyledLinkLabel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/StyledLinkLabel.java
index a26c6d3..3d2bd25 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/StyledLinkLabel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/content/StyledLinkLabel.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.extensions.markup.html.repeater.tree.content;
 
+import java.util.Optional;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -66,10 +68,10 @@ public abstract class StyledLinkLabel<T> extends Panel
         * Hook method to create a new link component.
         * 
         * This default implementation returns an {@link AjaxFallbackLink} 
which invokes
-        * {@link #onClick(AjaxRequestTarget)} only if {@link #isClickable()} 
returns <code>true</code>.
+        * {@link #onClick(Optional<AjaxRequestTarget>)} only if {@link 
#isClickable()} returns <code>true</code>.
         * 
         * @see #isClickable()
-        * @see #onClick(AjaxRequestTarget)
+        * @see #onClick(Optional<AjaxRequestTarget>)
         */
        protected MarkupContainer newLinkComponent(String id, IModel<T> model)
        {
@@ -84,9 +86,9 @@ public abstract class StyledLinkLabel<T> extends Panel
                        }
 
                        @Override
-                       public void onClick(AjaxRequestTarget target)
+                       public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                        {
-                               StyledLinkLabel.this.onClick(target);
+                               StyledLinkLabel.this.onClick(targetOptional);
                        }
                };
        }
@@ -140,7 +142,7 @@ public abstract class StyledLinkLabel<T> extends Panel
         * @see #newLinkComponent(String, IModel)
         * @see #isClickable()
         */
-       protected void onClick(AjaxRequestTarget target)
+       protected void onClick(Optional<AjaxRequestTarget> target)
        {
        }
 
@@ -163,4 +165,4 @@ public abstract class StyledLinkLabel<T> extends Panel
                        }
                }
        }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/TreeModelProvider.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/TreeModelProvider.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/TreeModelProvider.java
index 15a9251..c95ff29 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/TreeModelProvider.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/TreeModelProvider.java
@@ -20,6 +20,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 
 import javax.swing.event.TreeModelEvent;
 import javax.swing.event.TreeModelListener;
@@ -189,7 +190,7 @@ public abstract class TreeModelProvider<T> implements 
ITreeProvider<T>
                        {
                                for (T object : nodeUpdates)
                                {
-                                       tree.updateNode(object, target);
+                                       tree.updateNode(object, 
Optional.of(target));
                                }
                        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/ec1db0f3/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
index 4b4753b..528305b 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/rating/RatingPanel.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.extensions.rating;
 
+import java.util.Optional;
+
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -38,7 +40,7 @@ import org.apache.wicket.request.resource.ResourceReference;
 
 /**
  * Rating component that generates a number of stars where a user can click on 
to rate something.
- * Subclasses should implement {@link #onRated(int, 
org.apache.wicket.ajax.AjaxRequestTarget)} to provide the calculation
+ * Subclasses should implement {@link #onRated(int, Optional)} to provide the 
calculation
  * of the rating, and {@link #onIsStarActive(int)} to indicate whether to 
render an active star or
  * an inactive star.
  * <p>
@@ -119,7 +121,7 @@ public abstract class RatingPanel extends Panel
                                private static final long serialVersionUID = 1L;
 
                                @Override
-                               public void onClick(final AjaxRequestTarget 
target)
+                               public void onClick(Optional<AjaxRequestTarget> 
targetOptional)
                                {
                                        LoopItem item = (LoopItem)getParent();
 
@@ -127,13 +129,11 @@ public abstract class RatingPanel extends Panel
                                        // of our rating component, so other 
components can also get
                                        // updated in case of an AJAX event.
 
-                                       onRated(item.getIndex() + 1, target);
+                                       onRated(item.getIndex() + 1, 
targetOptional);
 
                                        // if we process an AJAX event, update 
this panel
-                                       if (target != null)
-                                       {
-                                               
target.add(RatingPanel.this.get("rater"));
-                                       }
+                                       targetOptional.ifPresent(target -> 
target.add(RatingPanel.this.get("rater")));
+
                                }
 
                                @Override
@@ -427,11 +427,9 @@ public abstract class RatingPanel extends Panel
         * Notification of a click on a rating star. Add your own components to 
the request target when
         * you want to have them updated in the Ajax request. 
<strong>NB</strong> the target may be null
         * when the click isn't handled using AJAX, but using a fallback 
scenario.
-        * 
-        * @param rating
+        *  @param rating
         *            the number of the star that is clicked, ranging from 1 to 
nrOfStars
         * @param target
-        *            the request target, null if the request is a regular, 
non-AJAX request.
         */
-       protected abstract void onRated(int rating, AjaxRequestTarget target);
+       protected abstract void onRated(int rating, Optional<AjaxRequestTarget> 
target);
 }

Reply via email to