Author: mgrigorov Date: Mon Dec 27 14:04:27 2010 New Revision: 1053071 URL: http://svn.apache.org/viewvc?rev=1053071&view=rev Log: WICKET-1721 FormTester doesnt support onSelectionChanged for RadioChoice WICKET-1732 FormTester's DropDownChoice onSelectionChanged() behaviour doesn't reload page
Call #selectionChanged() for all form components which have #wantOnSelectionChangedNotifications() Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java?rev=1053071&r1=1053070&r2=1053071&view=diff ============================================================================== --- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java (original) +++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/FormTester.java Mon Dec 27 14:04:27 2010 @@ -35,6 +35,7 @@ import org.apache.wicket.markup.html.for import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.IChoiceRenderer; import org.apache.wicket.markup.html.form.IFormSubmittingComponent; +import org.apache.wicket.markup.html.form.IOnChangeListener; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.markup.html.form.Radio; import org.apache.wicket.markup.html.form.RadioChoice; @@ -79,7 +80,8 @@ public class FormTester } /** - * @see org.apache.wicket.util.visit.IVisitor#component(Object, org.apache.wicket.util.visit.IVisit) + * @see org.apache.wicket.util.visit.IVisitor#component(Object, + * org.apache.wicket.util.visit.IVisit) */ public void component(final Component component, final IVisit<Component> visit) { @@ -302,7 +304,8 @@ public class FormTester } else { - fail("Selecting on the component:'" + formComponent.getPath() + "' is not supported."); + fail("Selecting on the component:'" + formComponent.getPath() + + "' is not supported."); return null; } } @@ -535,22 +538,30 @@ public class FormTester ChoiceSelector choiceSelector = choiceSelectorFactory.create(component); choiceSelector.doSelect(index); - if (component instanceof DropDownChoice) + + try { + Method wantOnSelectionChangedNotificationsMethod = component.getClass() + .getDeclaredMethod("wantOnSelectionChangedNotifications"); + try { - Method wantOnSelectionChangedNotificationsMethod = DropDownChoice.class.getDeclaredMethod("wantOnSelectionChangedNotifications"); wantOnSelectionChangedNotificationsMethod.setAccessible(true); boolean wantOnSelectionChangedNotifications = (Boolean)wantOnSelectionChangedNotificationsMethod.invoke(component); if (wantOnSelectionChangedNotifications) { - ((DropDownChoice<?>)component).onSelectionChanged(); + tester.executeListener(component, IOnChangeListener.INTERFACE); } } - catch (Exception e) + catch (final Exception x) { - throw new RuntimeException(e); + throw new RuntimeException(x); } + + } + catch (final NoSuchMethodException ignored) + { + // this form component has no auto page reload mechanism } }