Author: jbq
Date: Tue Aug 21 09:06:39 2007
New Revision: 568182
URL: http://svn.apache.org/viewvc?rev=568182&view=rev
Log:
WICKET-728 WicketTester could not handle Multipart form without upload
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=568182&r1=568181&r2=568182&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
Tue Aug 21 09:06:39 2007
@@ -178,6 +178,8 @@
private Map/* <String, UploadedFile> */uploadedFiles;
+ private boolean useMultiPartContentType;
+
/**
* Create the request using the supplied session object.
*
@@ -313,16 +315,27 @@
}
/**
- * Return the length of the content. This is always -1 except if there
has
- * been added uploaded files. Then the length will be the length of the
- * generated request.
+ * true will force Request genarate multiPart ContentType and
ContentLength
+ *
+ * @param useMultiPartContentType
+ */
+ public void setUseMultiPartContentType(boolean useMultiPartContentType)
+ {
+ this.useMultiPartContentType = useMultiPartContentType;
+ }
+
+
+ /**
+ * Return the length of the content. This is always -1 except if
+ * useMultiPartContentType set as true. Then the length will be the
length
+ * of the generated request.
*
- * @return -1 if no uploaded files has been added. Else the length of
the
+ * @return -1 if useMultiPartContentType is false. Else the length of
the
* generated request.
*/
public int getContentLength()
{
- if (uploadedFiles != null && uploadedFiles.size() > 0)
+ if (useMultiPartContentType)
{
String request = buildRequest();
return request.length();
@@ -332,14 +345,14 @@
}
/**
- * If there has been added uploaded files return the correct
content-type.
+ * If useMultiPartContentType set as true return the correct
content-type.
*
- * @return The correct multipart content-type if there has been added
- * uploaded files. Else null.
+ * @return The correct multipart content-type if
useMultiPartContentType is
+ * true. Else null.
*/
public String getContentType()
{
- if (uploadedFiles != null && uploadedFiles.size() > 0)
+ if (useMultiPartContentType)
{
return FileUploadBase.MULTIPART_FORM_DATA + ";
boundary=abcdefgABCDEFG";
}
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=568182&r1=568181&r2=568182&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
Tue Aug 21 09:06:39 2007
@@ -16,6 +16,7 @@
*/
package org.apache.wicket.util.tester;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -43,10 +44,8 @@
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.protocol.http.MockHttpServletRequest;
import org.apache.wicket.protocol.http.WebRequestCycle;
-import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest;
import org.apache.wicket.util.file.File;
import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.upload.FileUploadException;
/**
@@ -556,24 +555,38 @@
try
{
MockHttpServletRequest servletRequest =
baseWicketTester.getServletRequest();
+
WebRequestCycle requestCycle =
baseWicketTester.createRequestCycle();
servletRequest.setRequestToComponent(workingForm);
- if (servletRequest.hasUploadedFiles())
- {
- requestCycle.setRequest(new
MultipartServletWebRequest(servletRequest, workingForm
- .getMaxSize()));
- }
-
+
servletRequest.setUseMultiPartContentType(isMultiPart());
baseWicketTester.processRequestCycle(requestCycle);
}
- catch (FileUploadException e)
- {
- throw new WicketRuntimeException(e);
- }
finally
{
closed = true;
+ }
+ }
+
+ private boolean isMultiPart()
+ {
+ try
+ {
+ Field multiPart =
Form.class.getDeclaredField("multiPart");
+ multiPart.setAccessible(true);
+ return multiPart.getBoolean(workingForm);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (NoSuchFieldException e)
+ {
+ throw new RuntimeException(e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException(e);
}
}
Modified:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java?rev=568182&r1=568181&r2=568182&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java
Tue Aug 21 09:06:39 2007
@@ -107,7 +107,7 @@
* Test that formTester deal with Multipart form correctly when no
actual
* upload
*/
- public void bugTestSubmitWithoutUploadFile()
+ public void testSubmitWithoutUploadFile()
{
tester.startPage(MockFormFileUploadPage.class);
MockFormFileUploadPage page =
(MockFormFileUploadPage)tester.getLastRenderedPage();
Modified:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java?rev=568182&r1=568181&r2=568182&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java
Tue Aug 21 09:06:39 2007
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.util.tester;
+import java.io.Serializable;
+
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
@@ -38,8 +40,10 @@
*
* @author frankbille
*/
- public static class MockDomainObjectFileUpload
+ public static class MockDomainObjectFileUpload implements Serializable
{
+ private static final long serialVersionUID = 1L;
+
private String text;
/**
@@ -85,6 +89,7 @@
form.setMaxSize(Bytes.kilobytes(100));
form.add(new TextField("text"));
fileUploadField = new FileUploadField("file");
+ fileUploadField.setRequired(true);
form.add(fileUploadField);
}
Modified:
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java?rev=568182&r1=568181&r2=568182&view=diff
==============================================================================
---
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java
(original)
+++
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java
Tue Aug 21 09:06:39 2007
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.util.tester;
+import java.io.Serializable;
+
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.CheckBox;
@@ -36,8 +38,10 @@
/**
* Domain object
*/
- public class MockDomainObject
+ public class MockDomainObject implements Serializable
{
+ private static final long serialVersionUID = 1L;
+
private String text;
private boolean checkbox;
private String textarea;