Author: gseitz
Date: Fri Dec 28 13:57:10 2007
New Revision: 607342
URL: http://svn.apache.org/viewvc?rev=607342&view=rev
Log:
IFormSubmitComponents can now be used to submit a form
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java?rev=607342&r1=607341&r2=607342&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
Fri Dec 28 13:57:10 2007
@@ -37,6 +37,7 @@
import org.apache.wicket.markup.html.form.Form;
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.ListMultipleChoice;
import org.apache.wicket.markup.html.form.Radio;
import org.apache.wicket.markup.html.form.RadioChoice;
@@ -129,7 +130,7 @@
if (formComponent instanceof RadioGroup)
{
Radio foundRadio =
(Radio)formComponent.visitChildren(Radio.class,
- new
SearchOptionByIndexVisitor(index));
+ new SearchOptionByIndexVisitor(index));
if (foundRadio == null)
{
fail("RadioGroup " +
formComponent.getPath() + " does not have index:" + index);
@@ -139,7 +140,7 @@
else if (formComponent instanceof CheckGroup)
{
Check foundCheck =
(Check)formComponent.visitChildren(Check.class,
- new
SearchOptionByIndexVisitor(index));
+ new SearchOptionByIndexVisitor(index));
if (foundCheck == null)
{
fail("CheckGroup " +
formComponent.getPath() + " does not have index:" + index);
@@ -175,15 +176,15 @@
try
{
Method getChoicesMethod =
formComponent.getClass().getMethod("getChoices",
- (Class[])null);
+ (Class[])null);
getChoicesMethod.setAccessible(true);
List choices =
(List)getChoicesMethod.invoke(formComponent, (Object[])null);
Method getChoiceRendererMethod =
formComponent.getClass().getMethod(
- "getChoiceRenderer",
(Class[])null);
+ "getChoiceRenderer", (Class[])null);
getChoiceRendererMethod.setAccessible(true);
IChoiceRenderer choiceRenderer =
(IChoiceRenderer)getChoiceRendererMethod.invoke(
- formComponent, (Object[])null);
+ formComponent, (Object[])null);
return
choiceRenderer.getIdValue(choices.get(index), index);
}
@@ -231,7 +232,7 @@
if (!allowMultipleChoice(formComponent))
{
fail("Component:'" +
formComponent.getPath() +
- "' Does not support
multiple selection.");
+ "' Does not support multiple
selection.");
}
}
@@ -289,7 +290,7 @@
}
if (formComponent instanceof RadioGroup ||
formComponent instanceof DropDownChoice ||
- formComponent instanceof RadioChoice)
+ formComponent instanceof RadioChoice)
{
return new SingleChoiceSelector(formComponent);
}
@@ -300,7 +301,7 @@
else
{
fail("Selecting on the component:'" +
formComponent.getPath() +
- "' is not supported.");
+ "' is not supported.");
return null;
}
}
@@ -327,7 +328,7 @@
private boolean allowMultipleChoice(FormComponent formComponent)
{
return formComponent instanceof CheckGroup ||
- formComponent instanceof
ListMultipleChoice;
+ formComponent instanceof ListMultipleChoice;
}
}
@@ -362,7 +363,7 @@
* <code>String</code>s
*/
protected FormTester(final String path, final Form workingForm,
- final BaseWicketTester wicketTester, final boolean
fillBlankString)
+ final BaseWicketTester wicketTester, final boolean
fillBlankString)
{
this.path = path;
this.workingForm = workingForm;
@@ -397,15 +398,14 @@
}
}
else if ((formComponent instanceof
DropDownChoice) ||
- (formComponent instanceof
RadioChoice) ||
- (formComponent instanceof
CheckBox))
+ (formComponent instanceof RadioChoice)
|| (formComponent instanceof CheckBox))
{
setFormComponentValue(formComponent,
formComponent.getValue());
}
else if (formComponent instanceof
ListMultipleChoice)
{
final String[] modelValues =
formComponent.getValue().split(
-
FormComponent.VALUE_SEPARATOR);
+ FormComponent.VALUE_SEPARATOR);
for (int i = 0; i < modelValues.length;
i++)
{
addFormComponentValue(formComponent, modelValues[i]);
@@ -483,11 +483,11 @@
{
try
{
- Method
wantOnSelectionChangedNotificationsMethod = DropDownChoice.class
-
.getDeclaredMethod("wantOnSelectionChangedNotifications", new Class[0]);
+ Method
wantOnSelectionChangedNotificationsMethod =
DropDownChoice.class.getDeclaredMethod(
+ "wantOnSelectionChangedNotifications",
new Class[0]);
wantOnSelectionChangedNotificationsMethod.setAccessible(true);
- boolean wantOnSelectionChangedNotifications =
((Boolean)wantOnSelectionChangedNotificationsMethod
- .invoke(component, new
Object[0])).booleanValue();
+ boolean wantOnSelectionChangedNotifications =
((Boolean)wantOnSelectionChangedNotificationsMethod.invoke(
+ component, new
Object[0])).booleanValue();
if (wantOnSelectionChangedNotifications)
{
((DropDownChoice)component).onSelectionChanged();
@@ -516,8 +516,7 @@
{
checkClosed();
- ChoiceSelector choiceSelector = choiceSelectorFactory
-
.createForMultiple((FormComponent)workingForm.get(formComponentId));
+ ChoiceSelector choiceSelector =
choiceSelectorFactory.createForMultiple((FormComponent)workingForm.get(formComponentId));
for (int i = 0; i < indexes.length; i++)
{
@@ -530,7 +529,7 @@
*
* @param formComponentId
* relative path (from <code>Form</code>) to the selectable
- * <code>FormComponent</code>
+ * <code>FormComponent</code> or
<code>IFormSubmittingComponent</code>
* @param value
* the field value
*/
@@ -538,8 +537,15 @@
{
checkClosed();
- FormComponent formComponent =
(FormComponent)workingForm.get(formComponentId);
- setFormComponentValue(formComponent, value);
+ Component component = workingForm.get(formComponentId);
+ if (component instanceof IFormSubmittingComponent)
+ {
+
setFormSubmittingComponentValue((IFormSubmittingComponent)component, value);
+ }
+ else if (component instanceof FormComponent)
+ {
+ setFormComponentValue((FormComponent)component, value);
+ }
}
/**
@@ -563,8 +569,8 @@
if (formComponent instanceof FileUploadField == false)
{
throw new IllegalArgumentException("'" +
formComponentId + "' is not " +
- "a FileUploadField. You can only attach
a file to form " +
- "component of this type.");
+ "a FileUploadField. You can only attach a file
to form " +
+ "component of this type.");
}
MockHttpServletRequest servletRequest =
baseWicketTester.getServletRequest();
@@ -649,7 +655,7 @@
if (parameterExist(formComponent))
{
String[] values =
baseWicketTester.getServletRequest().getParameterValues(
- formComponent.getInputName());
+ formComponent.getInputName());
// remove duplicated
HashSet all = new HashSet(Arrays.asList(values));
all.add(value);
@@ -672,7 +678,7 @@
if (closed)
{
throw new IllegalStateException("'" + path +
- "' already sumbitted. Note that
FormTester " + "is allowed to submit only once");
+ "' already sumbitted. Note that FormTester " +
"is allowed to submit only once");
}
}
@@ -686,7 +692,7 @@
private boolean parameterExist(FormComponent formComponent)
{
String parameter =
baseWicketTester.getServletRequest().getParameter(
- formComponent.getInputName());
+ formComponent.getInputName());
return parameter != null && parameter.trim().length() > 0;
}
@@ -703,6 +709,18 @@
baseWicketTester.getServletRequest().setParameter(formComponent.getInputName(),
value);
}
+ /**
+ * Set component's value into request parameter, this method overwrites
existing parameters.
+ *
+ * @param component
+ * an [EMAIL PROTECTED] IFormSubmittingComponent}
+ * @param value
+ * a value to add
+ */
+ private void setFormSubmittingComponentValue(IFormSubmittingComponent
component, String value)
+ {
+
baseWicketTester.getServletRequest().setParameter(component.getInputName(),
value);
+ }
private void fail(String message)
{