Repository: wicket
Updated Branches:
  refs/heads/master b8e1d5ce8 -> 3824853be


WICKET-6292 revert WICKET-6041 - should not access parameters before handling 
multipart

This reverts commit ba393ffa2bf6480d4981e4b48c7aa6a19bd5b9c6.
This reverts commit ece7575f5ea74ec27f88618fd287e4348aa9cc35.


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

Branch: refs/heads/master
Commit: 3824853be87af927dcde0b9cc6761f59738051a9
Parents: b8e1d5c
Author: Sven Meier <svenme...@apache.org>
Authored: Tue Dec 6 12:46:17 2016 +0100
Committer: Sven Meier <svenme...@apache.org>
Committed: Tue Dec 6 14:29:21 2016 +0100

----------------------------------------------------------------------
 .../apache/wicket/markup/html/form/Form.java    | 91 +++++++++-----------
 .../markup/html/form/NestedFormsTest.java       | 79 -----------------
 2 files changed, 41 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/3824853b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index a197dd8..e8b61e7 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -24,6 +24,8 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
 import org.apache.commons.fileupload.FileUploadBase;
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.wicket.Component;
@@ -70,8 +72,6 @@ import org.apache.wicket.util.visit.Visits;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.servlet.http.HttpServletRequest;
-
 
 /**
  * Container for {@link FormComponent}s (such as {@link CheckBox}es, {@link 
ListChoice}s or
@@ -739,15 +739,10 @@ public class Form<T> extends WebMarkupContainer
         * 
         * @see Form#validate()
         */
-       public final void onFormSubmitted(final IFormSubmitter submitter)
+       public final void onFormSubmitted(IFormSubmitter submitter)
        {
-               final IFormSubmitter actualSubmitter =  submitter != null ? 
submitter :
-                       findActualSubmitter();
-               //find the actual form to process
-               final Form<?> formToProcess = 
findFormToProcess(actualSubmitter);
-               
-               formToProcess.markFormsSubmitted();
-               
+               markFormsSubmitted();
+
                if (handleMultiPart())
                {
                        // Tells FormComponents that a new user input has come
@@ -762,19 +757,49 @@ public class Form<T> extends WebMarkupContainer
                        }
                        else
                        {
+                               // First, see if the processing was triggered 
by a Wicket IFormSubmittingComponent
+                               if (submitter == null)
+                               {
+                                       submitter = findSubmittingButton();
+
+                                       if (submitter instanceof 
IFormSubmittingComponent)
+                                       {
+                                               IFormSubmittingComponent 
submittingComponent = (IFormSubmittingComponent)submitter;
+                                               Component component = 
(Component)submitter;
+
+                                               if 
(!component.isVisibleInHierarchy())
+                                               {
+                                                       throw new 
WicketRuntimeException("Submit Button " +
+                                                               
submittingComponent.getInputName() + " (path=" +
+                                                               
component.getPageRelativePath() + ") is not visible");
+                                               }
+
+                                               if 
(!component.isEnabledInHierarchy())
+                                               {
+                                                       throw new 
WicketRuntimeException("Submit Button " +
+                                                               
submittingComponent.getInputName() + " (path=" +
+                                                               
component.getPageRelativePath() + ") is not enabled");
+                                               }
+                                       }
+                               }
+
                                // When processing was triggered by a Wicket 
IFormSubmittingComponent and that
                                // component indicates it wants to be called 
immediately
                                // (without processing), call the 
IFormSubmittingComponent.onSubmit* methods right
                                // away.
-                               if (actualSubmitter != null && 
!actualSubmitter.getDefaultFormProcessing())
+                               if (submitter != null && 
!submitter.getDefaultFormProcessing())
                                {
-                                       actualSubmitter.onSubmit();
-                                       actualSubmitter.onAfterSubmit();
+                                       submitter.onSubmit();
+                                       submitter.onAfterSubmit();
                                }
                                else
                                {
+                                       // the submit request might be for one 
of the nested forms, so let's
+                                       // find the right one:
+                                       final Form<?> formToProcess = 
findFormToProcess(submitter);
+
                                        // process the form for this request
-                                       formToProcess.process(actualSubmitter);
+                                       formToProcess.process(submitter);
                                }
                        }
                }
@@ -782,7 +807,7 @@ public class Form<T> extends WebMarkupContainer
                // onError
                else if (hasError())
                {
-                       callOnError(actualSubmitter);
+                       callOnError(submitter);
                }
 
                // update auto labels if we are inside an ajax request
@@ -797,41 +822,6 @@ public class Form<T> extends WebMarkupContainer
                        });
                });
        }
-       
-       /**
-        * Find the actual submitter for this form. If such component
-        * is found but it's not enabled or visible, an exception is thrown.
-        * 
-        * @return the actual submitter
-        */
-       private IFormSubmitter findActualSubmitter() 
-       {
-               IFormSubmitter actualSubmitter = findSubmittingButton();
-
-               if (actualSubmitter instanceof IFormSubmittingComponent)
-               {
-                       IFormSubmittingComponent submittingComponent = 
(IFormSubmittingComponent)actualSubmitter;
-                       Component component = (Component)actualSubmitter;
-
-                       if (!component.isVisibleInHierarchy())
-                       {
-                               throw new WicketRuntimeException("Submit Button 
" +
-                                               
submittingComponent.getInputName() + " (" +
-                                               component.toString(true) +
-                                               ") is not visible");
-                       }
-
-                       if (!component.isEnabledInHierarchy())
-                       {
-                               throw new WicketRuntimeException("Submit Button 
" +
-                                               
submittingComponent.getInputName() + " (" +
-                                               component.toString(true) +
-                                               ") is not enabled");
-                       }
-               }
-               
-               return actualSubmitter;
-       }
 
        /**
         * This method finds the correct form that should be processed based on 
the submitting component
@@ -910,6 +900,7 @@ public class Form<T> extends WebMarkupContainer
         * 
         * @return Whether this form wants to be submitted too if a nested form 
is submitted.
         */
+       // TODO wicket-7 migration guide: changed from public to protected
        protected boolean wantSubmitOnNestedFormSubmit()
        {
                return false;

http://git-wip-us.apache.org/repos/asf/wicket/blob/3824853b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
index 5090e24..6b5b8c4 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NestedFormsTest.java
@@ -21,7 +21,6 @@ import java.util.List;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.util.resource.IResourceStream;
@@ -65,85 +64,7 @@ public class NestedFormsTest extends WicketTestCase
                assertEquals(0, 
testPage.submitSequence.indexOf(testPage.innerSubmit));
                assertEquals(1, 
testPage.submitSequence.indexOf(testPage.innerForm));
        }
-       
-       @SuppressWarnings("unchecked")
-       @Test
-       public void subitInnerFormWithAjaxBehavior()
-       {
-               tester.startPage(TestAjaxPage.class);
 
-               FormTester formTester = tester.newFormTester("formA");          
-               formTester.submit("formB:submit");
-               
-               TestAjaxPage testPage = 
(TestAjaxPage)tester.getLastRenderedPage();
-               
-               assertFalse(testPage.isFormAsubmitted());
-               assertTrue(testPage.isFormBsubmitted());
-       }
-
-       public static class TestAjaxPage extends WebPage implements 
IMarkupResourceStreamProvider
-       {
-               /**
-                * 
-                */
-               private static final long serialVersionUID = 1L;
-               private boolean formAsubmitted;
-               private boolean formBsubmitted;
-               
-               public TestAjaxPage() 
-               {
-                       final Form<Void> formA = new Form<Void>("formA")
-                       {
-                               @Override
-                               public void onDetach() 
-                               {
-                                       formAsubmitted = isSubmitted();
-                                       super.onDetach();
-                               }
-                       };
-                       final Form<Void> formB = new Form<Void>("formB")
-                       {
-                               @Override
-                               protected void onDetach() 
-                               {
-                                       formBsubmitted = isSubmitted();
-                                       super.onDetach();
-                               }
-                       };
-                       
-                       formB.add(new AjaxButton("submit") 
-                       {
-                               private static final long serialVersionUID = 1L;
-                       });
-                       
-                       formA.add(formB);
-                       add(formA);
-               }
-               
-               @Override
-               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
-                       Class<?> containerClass)
-               {
-                       return new StringResourceStream(
-                               "<head></head>" +
-                               "<form wicket:id=\"formA\">\r\n" + 
-                               "                               Form A\r\n" + 
-                               "                               <form 
wicket:id=\"formB\">\r\n" + 
-                               "                                       Form 
B\r\n" + 
-                               "                                       <button 
wicket:id=\"submit\">submit</button>\r\n" + 
-                               "                               </form>\r\n" + 
-                               "                       </form>");
-               }
-
-               public boolean isFormAsubmitted() {
-                       return formAsubmitted;
-               }
-
-               public boolean isFormBsubmitted() {
-                       return formBsubmitted;
-               }
-       }
-       
        /** */
        public static class TestPage extends WebPage implements 
IMarkupResourceStreamProvider
        {

Reply via email to