You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by Brian Lawler <br...@tribenetwork.com> on 2004/04/01 09:11:42 UTC

DefaultParameterParser handling fileItems just like simple parameters...

Hello all-

My Turbine 2.2 application relied on the fact that  
ParameterParser.keys() (now .keySet()) would hand back all of the keys  
in the parameter parser, not just the simple ones added in the  
BaseValueParser.  Now that the parameters field is private in the base  
class and fileParameters is private in the DefaultParameterParser  
extension, the child class needs to wrap the keySet(), getObject(), and  
getObjects() functionality so that calling classes don't need to make  
the distinction between whether we are retrieving a FileItem or not.

The following patch implements this behavior.


Index:  
src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
===================================================================
RCS file:  
/home/cvspublic/jakarta-turbine-2/src/java/org/apache/turbine/util/ 
parser/DefaultParameterParser.java,v
retrieving revision 1.20.2.1
diff -u -r1.20.2.1 DefaultParameterParser.java
--- src/java/org/apache/turbine/util/parser/DefaultParameterParser.java  
27 Feb 2004 10:34:24 -0000      1.20.2.1
+++ src/java/org/apache/turbine/util/parser/DefaultParameterParser.java  
1 Apr 2004 07:11:13 -0000
@@ -20,8 +20,10 @@

  import java.util.Enumeration;
  import java.util.HashMap;
+import java.util.HashSet;
  import java.util.Iterator;
  import java.util.Map;
+import java.util.Set;
  import java.util.StringTokenizer;

  import javax.servlet.http.HttpServletRequest;
@@ -337,5 +339,63 @@
                      + name + ") is not an instance of FileItem[]", e);
              return null;
          }
+    }
+
+   /**
+    * Return the set of keys contained within this parameter parser,  
both from
+    * the Map of simple parameters and from the Map of FileItems built  
during
+    * the initial parse of the inbound request.
+    *
+    * @return Set containing all of the keys.
+    */
+    public Set keySet()
+    {
+        Set result = new HashSet(super.keySet());
+        Set fileKeys = fileParameters.keySet();
+        if(result == null)
+        {
+            result = fileKeys;
+        }
+        else if(fileKeys != null)
+        {
+            result.addAll(fileKeys);
+        }
+        return result;
+    }
+
+   /**
+    * Wrapper for the super class getObject() method that will try to  
obtain
+    * the result from the superclass, and finding none will try to  
obtain a
+    * parameter value from the parameter map contained in this object.
+    *
+    * @param name The name of the input parameter to retrieve.
+    * @return The Object corresponding to that value, or null if there  
is none.
+    */
+    public Object getObject(String name)
+    {
+        Object result = super.getObject(name);
+        if(result == null)
+        {
+            result = getFileItem(name);
+        }
+        return result;
+    }
+
+   /**
+    * Wrapper for the super class getObjects() method that will try to  
obtain
+    * the result from the superclass, and finding none will try to  
obtain a
+    * parameter value from the parameter map contained in this object.
+    *
+    * @param name The name of the input parameter to retrieve.
+    * @return The Object corresponding to that value, or null if there  
is none.
+    */
+    public Object[] getObjects(String name)
+    {
+        Object[] result = super.getObjects(name);
+        if(result == null)
+        {
+            result = getFileItems(name);
+        }
+        return result;
      }
  }


---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org


Re: DefaultParameterParser handling fileItems just like simple parameters...

Posted by Brian Lawler <br...@tribenetwork.com>.
Yup, that's it.  I need to iterate over all the parameters passed up 
from a form, as the 2.2 ParameterParser used to do.

On Apr 1, 2004, at 2:37 AM, Eric Pugh wrote:

> Scott,
>
> Would yo mind looking at this as well..   Correct me if I am wrong 
> Brian,
> but what this boils down to right now is that when you do .keySet() you
> don't get back the fileitmes.   And you want to get them back as 
> well..?
>
> Eric
>
>> -----Original Message-----
>> From: Brian Lawler [mailto:brian@tribenetwork.com]
>> Sent: Thursday, April 01, 2004 9:12 AM
>> To: Turbine Developers List
>> Subject: DefaultParameterParser handling fileItems just like simple
>> parameters...
>>
>>
>> Hello all-
>>
>> My Turbine 2.2 application relied on the fact that
>> ParameterParser.keys() (now .keySet()) would hand back all of the keys
>> in the parameter parser, not just the simple ones added in the
>> BaseValueParser.  Now that the parameters field is private in the base
>> class and fileParameters is private in the DefaultParameterParser
>> extension, the child class needs to wrap the keySet(), getObject(), 
>> and
>> getObjects() functionality so that calling classes don't need to make
>> the distinction between whether we are retrieving a FileItem or not.
>>
>> The following patch implements this behavior.
>>
>>
>> Index:
>> src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
>> ===================================================================
>> RCS file:
>> /home/cvspublic/jakarta-turbine-2/src/java/org/apache/turbine/util/
>> parser/DefaultParameterParser.java,v
>> retrieving revision 1.20.2.1
>> diff -u -r1.20.2.1 DefaultParameterParser.java
>> --- 
>> src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
>> 27 Feb 2004 10:34:24 -0000      1.20.2.1
>> +++ 
>> src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
>> 1 Apr 2004 07:11:13 -0000
>> @@ -20,8 +20,10 @@
>>
>>   import java.util.Enumeration;
>>   import java.util.HashMap;
>> +import java.util.HashSet;
>>   import java.util.Iterator;
>>   import java.util.Map;
>> +import java.util.Set;
>>   import java.util.StringTokenizer;
>>
>>   import javax.servlet.http.HttpServletRequest;
>> @@ -337,5 +339,63 @@
>>                       + name + ") is not an instance of FileItem[]", 
>> e);
>>               return null;
>>           }
>> +    }
>> +
>> +   /**
>> +    * Return the set of keys contained within this parameter parser,
>> both from
>> +    * the Map of simple parameters and from the Map of FileItems 
>> built
>> during
>> +    * the initial parse of the inbound request.
>> +    *
>> +    * @return Set containing all of the keys.
>> +    */
>> +    public Set keySet()
>> +    {
>> +        Set result = new HashSet(super.keySet());
>> +        Set fileKeys = fileParameters.keySet();
>> +        if(result == null)
>> +        {
>> +            result = fileKeys;
>> +        }
>> +        else if(fileKeys != null)
>> +        {
>> +            result.addAll(fileKeys);
>> +        }
>> +        return result;
>> +    }
>> +
>> +   /**
>> +    * Wrapper for the super class getObject() method that will try to
>> obtain
>> +    * the result from the superclass, and finding none will try to
>> obtain a
>> +    * parameter value from the parameter map contained in this 
>> object.
>> +    *
>> +    * @param name The name of the input parameter to retrieve.
>> +    * @return The Object corresponding to that value, or null if 
>> there
>> is none.
>> +    */
>> +    public Object getObject(String name)
>> +    {
>> +        Object result = super.getObject(name);
>> +        if(result == null)
>> +        {
>> +            result = getFileItem(name);
>> +        }
>> +        return result;
>> +    }
>> +
>> +   /**
>> +    * Wrapper for the super class getObjects() method that will try 
>> to
>> obtain
>> +    * the result from the superclass, and finding none will try to
>> obtain a
>> +    * parameter value from the parameter map contained in this 
>> object.
>> +    *
>> +    * @param name The name of the input parameter to retrieve.
>> +    * @return The Object corresponding to that value, or null if 
>> there
>> is none.
>> +    */
>> +    public Object[] getObjects(String name)
>> +    {
>> +        Object[] result = super.getObjects(name);
>> +        if(result == null)
>> +        {
>> +            result = getFileItems(name);
>> +        }
>> +        return result;
>>       }
>>   }
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: turbine-dev-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-dev-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org


RE: DefaultParameterParser handling fileItems just like simple parameters...

Posted by Eric Pugh <ep...@upstate.com>.
Scott,

Would yo mind looking at this as well..   Correct me if I am wrong Brian,
but what this boils down to right now is that when you do .keySet() you
don't get back the fileitmes.   And you want to get them back as well..?

Eric

> -----Original Message-----
> From: Brian Lawler [mailto:brian@tribenetwork.com]
> Sent: Thursday, April 01, 2004 9:12 AM
> To: Turbine Developers List
> Subject: DefaultParameterParser handling fileItems just like simple
> parameters...
>
>
> Hello all-
>
> My Turbine 2.2 application relied on the fact that
> ParameterParser.keys() (now .keySet()) would hand back all of the keys
> in the parameter parser, not just the simple ones added in the
> BaseValueParser.  Now that the parameters field is private in the base
> class and fileParameters is private in the DefaultParameterParser
> extension, the child class needs to wrap the keySet(), getObject(), and
> getObjects() functionality so that calling classes don't need to make
> the distinction between whether we are retrieving a FileItem or not.
>
> The following patch implements this behavior.
>
>
> Index:
> src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
> ===================================================================
> RCS file:
> /home/cvspublic/jakarta-turbine-2/src/java/org/apache/turbine/util/
> parser/DefaultParameterParser.java,v
> retrieving revision 1.20.2.1
> diff -u -r1.20.2.1 DefaultParameterParser.java
> --- src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
> 27 Feb 2004 10:34:24 -0000      1.20.2.1
> +++ src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
> 1 Apr 2004 07:11:13 -0000
> @@ -20,8 +20,10 @@
>
>   import java.util.Enumeration;
>   import java.util.HashMap;
> +import java.util.HashSet;
>   import java.util.Iterator;
>   import java.util.Map;
> +import java.util.Set;
>   import java.util.StringTokenizer;
>
>   import javax.servlet.http.HttpServletRequest;
> @@ -337,5 +339,63 @@
>                       + name + ") is not an instance of FileItem[]", e);
>               return null;
>           }
> +    }
> +
> +   /**
> +    * Return the set of keys contained within this parameter parser,
> both from
> +    * the Map of simple parameters and from the Map of FileItems built
> during
> +    * the initial parse of the inbound request.
> +    *
> +    * @return Set containing all of the keys.
> +    */
> +    public Set keySet()
> +    {
> +        Set result = new HashSet(super.keySet());
> +        Set fileKeys = fileParameters.keySet();
> +        if(result == null)
> +        {
> +            result = fileKeys;
> +        }
> +        else if(fileKeys != null)
> +        {
> +            result.addAll(fileKeys);
> +        }
> +        return result;
> +    }
> +
> +   /**
> +    * Wrapper for the super class getObject() method that will try to
> obtain
> +    * the result from the superclass, and finding none will try to
> obtain a
> +    * parameter value from the parameter map contained in this object.
> +    *
> +    * @param name The name of the input parameter to retrieve.
> +    * @return The Object corresponding to that value, or null if there
> is none.
> +    */
> +    public Object getObject(String name)
> +    {
> +        Object result = super.getObject(name);
> +        if(result == null)
> +        {
> +            result = getFileItem(name);
> +        }
> +        return result;
> +    }
> +
> +   /**
> +    * Wrapper for the super class getObjects() method that will try to
> obtain
> +    * the result from the superclass, and finding none will try to
> obtain a
> +    * parameter value from the parameter map contained in this object.
> +    *
> +    * @param name The name of the input parameter to retrieve.
> +    * @return The Object corresponding to that value, or null if there
> is none.
> +    */
> +    public Object[] getObjects(String name)
> +    {
> +        Object[] result = super.getObjects(name);
> +        if(result == null)
> +        {
> +            result = getFileItems(name);
> +        }
> +        return result;
>       }
>   }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: turbine-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: turbine-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: turbine-dev-help@jakarta.apache.org