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]

Reply via email to