You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2016/12/06 13:30:08 UTC

wicket git commit: WICKET-6292 revert WICKET-6041 - should not access parameters before handling multipart

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 <sv...@apache.org>
Authored: Tue Dec 6 12:46:17 2016 +0100
Committer: Sven Meier <sv...@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
 	{