Repository: wicket
Updated Branches:
  refs/heads/master d71d384a0 -> 1d8a9c780


WICKET-6324 optional for all callbacks


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

Branch: refs/heads/master
Commit: 1d8a9c780756130fad77135aa54717552bdd41c9
Parents: d71d384
Author: Sven Meier <svenme...@apache.org>
Authored: Thu Feb 23 12:39:54 2017 +0100
Committer: Sven Meier <svenme...@apache.org>
Committed: Thu Feb 23 12:39:54 2017 +0100

----------------------------------------------------------------------
 .../markup/html/form/AjaxFallbackButton.java    | 14 ++--
 .../java/org/apache/wicket/ajax/HomePage.java   |  5 --
 .../wicket/ajax/form/AjaxFormSubmitTest.java    | 76 ++++++++++++++++----
 .../ajax/form/AjaxFormSubmitTestPage.java       | 50 +++++++++----
 .../form/AjaxFormSubmitTestPage_expected.html   | 14 ++--
 .../html/form/FormWithMultipleButtonsTest.java  |  5 --
 .../devutils/inspector/EnhancedPageView.java    |  7 +-
 7 files changed, 115 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/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 8fd7ad8..f24dd22 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
@@ -73,19 +73,19 @@ public abstract class AjaxFallbackButton extends Button
                        @Override
                        protected void onSubmit(AjaxRequestTarget target)
                        {
-                               
AjaxFallbackButton.this.onSubmit(Optional.ofNullable(target));
+                               
AjaxFallbackButton.this.onSubmit(Optional.of(target));
                        }
 
                        @Override
                        protected void onAfterSubmit(AjaxRequestTarget target)
                        {
-                               AjaxFallbackButton.this.onAfterSubmit(target);
+                               
AjaxFallbackButton.this.onAfterSubmit(Optional.of(target));
                        }
 
                        @Override
                        protected void onError(AjaxRequestTarget target)
                        {
-                               AjaxFallbackButton.this.onError(target);
+                               
AjaxFallbackButton.this.onError(Optional.of(target));
                        }
 
                        @Override
@@ -119,7 +119,7 @@ public abstract class AjaxFallbackButton extends Button
         * @param target
         * @param form
         */
-       protected void onError(AjaxRequestTarget target)
+       protected void onError(Optional<AjaxRequestTarget> target)
        {
        }
 
@@ -128,7 +128,7 @@ public abstract class AjaxFallbackButton extends Button
        {
                if (getRequestCycle().find(AjaxRequestTarget.class).isPresent() 
== false)
                {
-                       onError(null);
+                       onError(Optional.empty());
                }
        }
 
@@ -152,7 +152,7 @@ public abstract class AjaxFallbackButton extends Button
        {
                if (getRequestCycle().find(AjaxRequestTarget.class).isPresent() 
== false)
                {
-                       onAfterSubmit(null);
+                       onAfterSubmit(Optional.empty());
                }
        }
 
@@ -188,7 +188,7 @@ public abstract class AjaxFallbackButton extends Button
         *            ajax target if this linked was invoked using ajax, null 
otherwise
         * @param form
         */
-       protected void onAfterSubmit(final AjaxRequestTarget target)
+       protected void onAfterSubmit(final Optional<AjaxRequestTarget> target)
        {
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/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 d8ed36b..bc0b5cb 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
@@ -104,11 +104,6 @@ public class HomePage extends WebPage
                                listView.removeAll();
                                targetOptional.ifPresent(target -> 
target.add(listViewContainer));
                        }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target)
-                       {
-                       }
                }.setDefaultFormProcessing(false));
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTest.java 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTest.java
index 90bff48..0569f7f 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTest.java
@@ -22,34 +22,56 @@ import org.apache.wicket.util.tester.WicketTestCase;
 import org.junit.Test;
 
 /**
- * Test case for WICKET-1291
- * 
- * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-1291";>WICKET-1291</a>
  * @author marrink
  */
 public class AjaxFormSubmitTest extends WicketTestCase
 {
+       @Test
+       public void submit()
+       {
+               AjaxFormSubmitTestPage page = new AjaxFormSubmitTestPage(true);
+
+               tester.startPage(page);
+               tester.assertRenderedPage(page.getClass());
+               FormTester form = tester.newFormTester("form");
+               form.setValue("txt1", "txt1");
+               form.setValue("txt2", "txt2");
+               // mark the button as the one being pressed. there is a 'p::' 
infront of name because wicket
+               // escapes "submit" input names as they break browsers
+               
tester.getRequest().getPostParameters().setParameterValue("p::submit", "x");
+               tester.submitForm(form.getForm());
+               tester.assertRenderedPage(page.getClass());
+               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_SUBMIT) > 0);
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_ERROR) > 0);
+               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_SUBMIT) > 0);
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_ERROR) > 0);
+               assertEquals("txt1", 
tester.getComponentFromLastRenderedPage("form:txt1")
+                       .getDefaultModelObject());
+               assertEquals("txt2", 
tester.getComponentFromLastRenderedPage("form:txt2")
+                       .getDefaultModelObject());
+       }
+       
        /**
         * Test ajax form submit without default form processing.
+        * 
+        * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-1291";>WICKET-1291</a>
         */
        @Test
        public void submitNoDefProcessing()
        {
-               Class<? extends Page> pageClass = AjaxFormSubmitTestPage.class;
-               System.out.println("=== " + pageClass.getName() + " ===");
+               AjaxFormSubmitTestPage page = new AjaxFormSubmitTestPage(false);
 
-               tester.startPage(pageClass);
-               tester.assertRenderedPage(pageClass);
+               tester.startPage(page);
+               tester.assertRenderedPage(page.getClass());
                FormTester form = tester.newFormTester("form");
                form.setValue("txt1", "txt1");
                form.setValue("txt2", "txt2");
-               // mark the button as the one being pressed. there is a ':' 
infront of name because wicket
-               // escapes "submit" input names as they break browsers
-               
tester.getRequest().getPostParameters().setParameterValue(":submit", "x");
                tester.executeAjaxEvent("form:submit", "click");
-               AjaxFormSubmitTestPage page = 
(AjaxFormSubmitTestPage)tester.getLastRenderedPage();
-               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM) == AjaxFormSubmitTestPage.FORM);
-               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON) == AjaxFormSubmitTestPage.BUTTON);
+               tester.assertRenderedPage(page.getClass());
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_SUBMIT) > 0);
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_ERROR) > 0);
+               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_SUBMIT) > 0);
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_ERROR) > 0);
                assertEquals("foo", 
tester.getComponentFromLastRenderedPage("form:txt1")
                        .getDefaultModelObject());
                assertEquals("bar", 
tester.getComponentFromLastRenderedPage("form:txt2")
@@ -57,6 +79,32 @@ public class AjaxFormSubmitTest extends WicketTestCase
        }
 
        /**
+        * Test ajax fallback with errors.
+        * 
+        * @see <a 
href="https://issues.apache.org/jira/browse/WICKET-6324";>WICKET-6324</a>
+        */
+       @Test
+       public void submitFallbackErrors()
+       {
+               AjaxFormSubmitTestPage page = new AjaxFormSubmitTestPage(true);
+
+               tester.startPage(page);
+               tester.assertRenderedPage(page.getClass());
+               FormTester form = tester.newFormTester("form");
+               form.setValue("txt1", "");
+               form.setValue("txt2", "");
+               // mark the button as the one being pressed. there is a 'p::' 
infront of name because wicket
+               // escapes "submit" input names as they break browsers
+               
tester.getRequest().getPostParameters().setParameterValue("p::submit", "x");
+               tester.submitForm(form.getForm());
+               tester.assertRenderedPage(page.getClass());
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_SUBMIT) > 0);
+               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.FORM_ERROR) > 0);
+               assertFalse((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_SUBMIT) > 0);
+               assertTrue((page.getFormSubmitted() & 
AjaxFormSubmitTestPage.BUTTON_ERROR) > 0);
+       }
+
+       /**
         * Test that onclick handler is generated with the proper XHTML 
entities for special characters,
         * notably ampersand. See WICKET-2033.
         * 
@@ -65,7 +113,7 @@ public class AjaxFormSubmitTest extends WicketTestCase
        @Test
        public void eventJavaScriptEscaped() throws Exception
        {
-               tester.startPage(AjaxFormSubmitTestPage.class);
+               tester.startPage(new AjaxFormSubmitTestPage(false));
                tester.assertResultPage(AjaxFormSubmitTestPage.class,
                        "AjaxFormSubmitTestPage_expected.html");
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/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 b90ba7c..2f799b3 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 static org.junit.Assert.assertEquals;
+
 import java.util.Optional;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -36,11 +38,22 @@ public class AjaxFormSubmitTestPage extends WebPage
        /**
         * Indicates form handled submit.
         */
-       public static final int FORM = 2;
+       public static final int FORM_SUBMIT = 1;
+
+       /**
+        * Indicates form handled error.
+        */
+       public static final int FORM_ERROR = 2;
+
        /**
         * Indicates button handled submit.
         */
-       public static final int BUTTON = 4;
+       public static final int BUTTON_SUBMIT = 4;
+       
+       /**
+        * Indicates button handled error.
+        */
+       public static final int BUTTON_ERROR = 8;
 
        private int formSubmitted;
 
@@ -57,7 +70,7 @@ public class AjaxFormSubmitTestPage extends WebPage
        /**
         * Construct.
         */
-       public AjaxFormSubmitTestPage()
+       public AjaxFormSubmitTestPage(boolean defaultProcessing)
        {
                super(new CompoundPropertyModel<ValueMap>(new 
ValueMap("txt1=foo,txt2=bar")));
                Form<?> form = new Form<Void>("form")
@@ -67,12 +80,18 @@ public class AjaxFormSubmitTestPage extends WebPage
                        @Override
                        protected void onSubmit()
                        {
-                               formSubmitted = formSubmitted | FORM;
+                               formSubmitted = formSubmitted | FORM_SUBMIT;
+                       }
+                       
+                       @Override
+                       protected void onError()
+                       {
+                               formSubmitted = formSubmitted | FORM_ERROR;
                        }
                };
                add(form);
-               form.add(new TextField<String>("txt1"));
-               form.add(new TextField<String>("txt2"));
+               form.add(new TextField<String>("txt1").setRequired(true));
+               form.add(new TextField<String>("txt2").setRequired(true));
                form.add(new AjaxFallbackButton("submit", form)
                {
                        private static final long serialVersionUID = 1L;
@@ -80,15 +99,20 @@ public class AjaxFormSubmitTestPage extends WebPage
                        @Override
                        protected void onSubmit(Optional<AjaxRequestTarget> 
target)
                        {
-                               formSubmitted = formSubmitted | BUTTON;
+                               assertEquals(target.isPresent(), 
getRequestCycle().find(AjaxRequestTarget.class).isPresent());
+                               formSubmitted = formSubmitted | BUTTON_SUBMIT;
                        }
-
-                       @Override
-                       protected void onError(AjaxRequestTarget target)
-                       {
+                       
+                       protected void onError(Optional<AjaxRequestTarget> 
target) {
+                               assertEquals(target.isPresent(), 
getRequestCycle().find(AjaxRequestTarget.class).isPresent());
+                               
+                               formSubmitted = formSubmitted | BUTTON_ERROR;
                        }
-
-               }.setDefaultFormProcessing(false));
+                       
+                       protected void 
onAfterSubmit(Optional<AjaxRequestTarget> target) {
+                               assertEquals(target.isPresent(), 
getRequestCycle().find(AjaxRequestTarget.class).isPresent());
+                       }
+               }.setDefaultFormProcessing(defaultProcessing));
        }
 
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
index 7f12beb..c5b441e 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/form/AjaxFormSubmitTestPage_expected.html
@@ -1,8 +1,8 @@
 <html>
-       <head><script type="text/javascript" 
src="../resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-1.12.4.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-event-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
-<script type="text/javascript" 
src="../resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
+       <head><script type="text/javascript" 
src="./resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-1.12.4.js"></script>
+<script type="text/javascript" 
src="./resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-event-jquery.js"></script>
+<script type="text/javascript" 
src="./resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery.js"></script>
+<script type="text/javascript" 
src="./resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-ajax-jquery-debug.js"></script>
 <script type="text/javascript" id="wicket-ajax-debug-enable">
 /*<![CDATA[*/
 Wicket.Ajax.DebugWindow.enabled=true;
@@ -10,19 +10,19 @@ Wicket.Ajax.DebugWindow.enabled=true;
 </script>
 <script type="text/javascript" id="wicket-ajax-base-url">
 /*<![CDATA[*/
-Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.ajax.form.AjaxFormSubmitTestPage?0";
+Wicket.Ajax.baseUrl="wicket/page?0";
 /*]]>*/
 </script>
 <script type="text/javascript" >
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Ajax.ajax({"u":"./org.apache.wicket.ajax.form.AjaxFormSubmitTestPage?0-1.0-form-submit","m":"POST","c":"submit2","f":"form1","sc":"p::submit","e":"click","pd":true});;
+Wicket.Ajax.ajax({"u":"./page?0-1.0-form-submit","m":"POST","c":"submit2","f":"form1","sc":"p::submit","e":"click","pd":true});;
 Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);
 ;});
 /*]]>*/
 </script>
 </head><body>
-               <form wicket:id="form" id="form1" method="post" 
action="./org.apache.wicket.ajax.form.AjaxFormSubmitTestPage?0-1.-form"><div 
style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden"><input
 type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
+               <form wicket:id="form" id="form1" method="post" 
action="./page?0-1.-form"><div 
style="width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden"><input
 type="hidden" name="form1_hf_0" id="form1_hf_0" /></div>
                        <input type="text" wicket:id="txt1" value="foo" 
name="txt1"/>
                        <input type="text" wicket:id="txt2" value="bar" 
name="txt2"/>
                        <input type="submit" value="Submit" wicket:id="submit" 
name="p::submit" id="submit2"/>

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/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 448d1ff..9a66640 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
@@ -124,11 +124,6 @@ public class FormWithMultipleButtonsTest extends 
WicketTestCase
                                {
                                        submitSequence.add(this);
                                }
-
-                               @Override
-                               protected void onError(AjaxRequestTarget target)
-                               {
-                               }
                        });
                }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/1d8a9c78/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 501347b..50856ed 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
@@ -294,12 +294,9 @@ public final class EnhancedPageView extends 
GenericPanel<Page>
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onAfterSubmit(AjaxRequestTarget target)
+                       protected void 
onAfterSubmit(Optional<AjaxRequestTarget> target)
                        {
-                               if (target != null)
-                               {
-                                       target.add(componentTree);
-                               }
+                               target.ifPresent(t -> t.add(componentTree));
                        }
                });
 

Reply via email to