quintonm 2003/03/08 20:30:33
Modified: src/java/org/apache/turbine/util/parser
DefaultParameterParser.java
Log:
The getFileItem() and getFileItems() methods will now write a log message
if the named parameter is not an instance of FileItem.
A new hashtable is being used for the storage of FileItems. Previously,
FileItem instances were stored in the parameters hashtable of the superclass.
This was a mistake because that HashTable only stores String objects. Any attempt
to call one of the getXXX() methods when the parameter was a FileItem would result
in a ClassCastException.
Thanks to Will Holcomb for pointing out this problem and suppling a patch!
Revision Changes Path
1.11 +15 -8
jakarta-turbine-2/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
Index: DefaultParameterParser.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DefaultParameterParser.java 9 Mar 2003 03:15:49 -0000 1.10
+++ DefaultParameterParser.java 9 Mar 2003 04:30:32 -0000 1.11
@@ -57,6 +57,7 @@
import java.net.URLDecoder;
import java.util.Enumeration;
import java.util.StringTokenizer;
+import java.util.Hashtable;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
@@ -95,8 +96,7 @@
*/
public class DefaultParameterParser
extends BaseValueParser
- implements ParameterParser,
- Recyclable
+ implements ParameterParser, Recyclable
{
/** Logging */
private static Log log = LogFactory.getLog(DefaultParameterParser.class);
@@ -107,6 +107,9 @@
/** The raw data of a file upload. */
private byte[] uploadData = null;
+ /** Map of request parameters to FileItem[]'s */
+ private Hashtable fileParameters = new Hashtable();
+
/** Turbine Upload Service reference */
private static UploadService uploadService = null;
@@ -225,7 +228,7 @@
while (names.hasMoreElements())
{
tmp = (String) names.nextElement();
- parameters.put(convert(tmp), req.getParameterValues(tmp));
+ fileParameters.put(convert(tmp), req.getParameterValues(tmp));
}
}
@@ -301,14 +304,14 @@
{
items = new FileItem[1];
items[0] = value;
- parameters.put(convert(name), items);
+ fileParameters.put(convert(name), items);
}
else
{
FileItem[] newItems = new FileItem[items.length + 1];
System.arraycopy(items, 0, newItems, 0, items.length);
newItems[items.length] = value;
- parameters.put(convert(name), newItems);
+ fileParameters.put(convert(name), newItems);
}
}
@@ -324,7 +327,7 @@
try
{
FileItem value = null;
- Object object = parameters.get(convert(name));
+ Object object = fileParameters.get(convert(name));
if (object != null)
{
value = ((FileItem[]) object)[0];
@@ -333,6 +336,8 @@
}
catch (ClassCastException e)
{
+ log.error("Parameter ("
+ + name + ") is not an instance of FileItem", e);
return null;
}
}
@@ -349,10 +354,12 @@
{
try
{
- return (FileItem[]) parameters.get(convert(name));
+ return (FileItem[]) fileParameters.get(convert(name));
}
catch (ClassCastException e)
{
+ log.error("Parameter ("
+ + name + ") is not an instance of FileItem[]", e);
return null;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]