You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2011/07/05 22:58:50 UTC
svn commit: r1143201 - in /wicket/branches/wicket-1.4.x/wicket/src:
main/java/org/apache/wicket/markup/html/form/
test/java/org/apache/wicket/markup/html/form/
Author: ivaynberg
Date: Tue Jul 5 20:58:49 2011
New Revision: 1143201
URL: http://svn.apache.org/viewvc?rev=1143201&view=rev
Log:
Issue: WICKET-3873
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormComponentTest.java
wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormTest.java
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java?rev=1143201&r1=1143200&r2=1143201&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/Form.java Tue Jul 5 20:58:49 2011
@@ -44,6 +44,7 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.form.persistence.IValuePersister;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.form.validation.IFormValidator;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.protocol.http.RequestUtils;
@@ -2053,6 +2054,14 @@ public class Form<T> extends WebMarkupCo
super.internalOnDetach();
setFlag(FLAG_SUBMITTED, false);
+ for (IFormValidator validator : getFormValidators())
+ {
+ if (validator != null && (validator instanceof IDetachable))
+ {
+ ((IDetachable)validator).detach();
+ }
+ }
+
super.onDetach();
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java?rev=1143201&r1=1143200&r2=1143201&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/markup/html/form/FormComponent.java Tue Jul 5 20:58:49 2011
@@ -35,6 +35,7 @@ import org.apache.wicket.Localizer;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.WicketRuntimeException;
import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.IPropertyReflectionAwareModel;
import org.apache.wicket.util.convert.ConversionException;
@@ -1505,6 +1506,15 @@ public abstract class FormComponent<T> e
protected void onDetach()
{
super.onDetach();
+
+ for (IValidator<?> validator : getValidators())
+ {
+ if (validator != null && (validator instanceof IDetachable))
+ {
+ ((IDetachable)validator).detach();
+ }
+ }
+
convertedInput = null;
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormComponentTest.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormComponentTest.java?rev=1143201&r1=1143200&r2=1143201&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormComponentTest.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormComponentTest.java Tue Jul 5 20:58:49 2011
@@ -22,9 +22,13 @@ import junit.framework.TestCase;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.model.IDetachable;
+import org.apache.wicket.model.Model;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.apache.wicket.util.tester.WicketTester;
+import org.apache.wicket.validation.IValidatable;
+import org.apache.wicket.validation.IValidator;
/**
*
@@ -69,6 +73,31 @@ public class FormComponentTest extends T
assertEquals("field2", page.field2.getDefaultLabel());
}
+ public void testValidatorsDetach()
+ {
+ class TestValidator<T> implements IValidator<T>, IDetachable
+ {
+ boolean detached = false;
+
+ public void detach()
+ {
+ detached = true;
+ }
+
+ public void validate(IValidatable<T> validatable)
+ {
+ }
+ }
+
+ TextField<String> field = new TextField<String>("s", Model.of(""));
+ TestValidator<String> v1 = new TestValidator();
+ TestValidator<String> v2 = new TestValidator();
+ field.add(v1).add(v2);
+ field.detach();
+ assertTrue(v1.detached);
+ assertTrue(v2.detached);
+ }
+
@Override
protected void tearDown() throws Exception
{
@@ -95,7 +124,5 @@ public class FormComponentTest extends T
return new StringResourceStream(
"<html><body><form wicket:id='form'><input wicket:id='field1' type='text'/><input wicket:id='field2' type='text'/></form></body></html>");
}
-
-
}
}
Modified: wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormTest.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormTest.java?rev=1143201&r1=1143200&r2=1143201&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormTest.java (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/test/java/org/apache/wicket/markup/html/form/FormTest.java Tue Jul 5 20:58:49 2011
@@ -22,6 +22,8 @@ import org.apache.wicket.PageParameters;
import org.apache.wicket.WicketTestCase;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.form.validation.IFormValidator;
+import org.apache.wicket.model.IDetachable;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
@@ -102,6 +104,37 @@ public class FormTest extends WicketTest
tester.assertRenderedPage(TestPage.class);
}
+ public void testValidatorsDetach()
+ {
+ class TestValidator implements IFormValidator, IDetachable
+ {
+ boolean detached = false;
+
+ public void detach()
+ {
+ detached = true;
+ }
+
+ public FormComponent<?>[] getDependentFormComponents()
+ {
+ return new FormComponent[] { };
+ }
+
+ public void validate(Form<?> form)
+ {
+ }
+ }
+
+ Form<?> form = new Form<Void>("form");
+ TestValidator v1 = new TestValidator();
+ TestValidator v2 = new TestValidator();
+ form.add(v1);
+ form.add(v2);
+ form.detach();
+ assertTrue(v1.detached);
+ assertTrue(v2.detached);
+ }
+
/** */
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{