You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by he...@apache.org on 2005/09/07 23:20:08 UTC

svn commit: r279424 - in /jakarta/turbine/core/branches/TURBINE_2_3_BRANCH: src/java/org/apache/turbine/util/parser/ src/test/org/apache/turbine/util/parser/ xdocs/

Author: henning
Date: Wed Sep  7 14:19:59 2005
New Revision: 279424

URL: http://svn.apache.org/viewcvs?rev=279424&view=rev
Log:
Make DefaultParameterParser return all items in keySet() and also
check for fileitems in containsKey(). Add a unit test to verify.

Fixes TTWS58.


Added:
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java   (with props)
Modified:
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java
URL: http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java?rev=279424&r1=279423&r2=279424&view=diff
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/BaseValueParser.java Wed Sep  7 14:19:59 2005
@@ -310,7 +310,7 @@
      */
     public boolean containsKey(Object key)
     {
-        return parameters.containsKey(convert((String)key));
+        return parameters.containsKey(convert(String.valueOf(key)));
     }
 
     /**
@@ -349,7 +349,7 @@
      */
     public Enumeration keys()
     {
-        return Collections.enumeration(parameters.keySet());
+        return Collections.enumeration(keySet());
     }
 
     /**
@@ -369,7 +369,7 @@
      */
     public Object[] getKeys()
     {
-        return parameters.keySet().toArray();
+        return keySet().toArray();
     }
 
     /**

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java
URL: http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java?rev=279424&r1=279423&r2=279424&view=diff
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/util/parser/DefaultParameterParser.java Wed Sep  7 14:19:59 2005
@@ -22,10 +22,12 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.commons.collections.set.CompositeSet;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -294,6 +296,35 @@
             fileParameters.put(convert(name), newItems);
         }
     }
+
+    /**
+     * Gets the set of keys
+     *
+     * @return A <code>Set</code> of the keys.
+     */
+    public Set keySet()
+    {
+        return new CompositeSet(new Set[] { super.keySet(), fileParameters.keySet() } );
+    }
+
+    /**
+     * Determine whether a given key has been inserted.  All keys are
+     * stored in lowercase strings, so override method to account for
+     * this.
+     *
+     * @param key An Object with the key to search for.
+     * @return True if the object is found.
+     */
+    public boolean containsKey(Object key)
+    {
+        if (super.containsKey(key))
+        {
+            return true;
+        }
+
+        return fileParameters.containsKey(convert(String.valueOf(key)));
+    }
+
 
     /**
      * Return a FileItem object for the given name.  If the name does

Added: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java
URL: http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java?rev=279424&view=auto
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java (added)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java Wed Sep  7 14:19:59 2005
@@ -0,0 +1,81 @@
+package org.apache.turbine.util.parser;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Iterator;
+
+import org.apache.commons.fileupload.DefaultFileItemFactory;
+import org.apache.commons.fileupload.FileItem;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.turbine.test.BaseTurbineTest;
+
+/**
+ * test whether the Default parameter parser returns its uploaded file items
+ * in the keySet().
+ *
+ * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
+ * @version $Id$
+ */
+
+public class DefaultParameterParserTest
+        extends BaseTurbineTest
+{
+    public DefaultParameterParserTest(String name)
+            throws Exception
+    {
+        super(name, "conf/test/TurbineResources.properties");
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite(DefaultParameterParserTest.class);
+    }
+
+    public void testFileItemsInKeySet()
+    {
+        DefaultParameterParser dpp = new DefaultParameterParser();
+        DefaultFileItemFactory factory = new DefaultFileItemFactory(10240, null);
+
+        assertEquals("keySet() is not empty!", 0, dpp.keySet().size());
+
+        FileItem test = factory.createItem("upload-field", "application/octet-stream", false, null);
+        dpp.append("upload-field", test);
+
+        assertEquals("FileItem not found in keySet()!", 1, dpp.keySet().size());
+
+        Iterator it = dpp.keySet().iterator();
+        assertTrue(it.hasNext());
+
+        String name = (String) it.next();
+        assertEquals("Wrong name found", "upload-field", name);
+
+        assertFalse(it.hasNext());
+
+        dpp.append("other-field", "foo");
+
+        assertEquals("Wrong number of fields found ", 2, dpp.getKeys().length);
+
+        assertTrue(dpp.containsKey("upload-field"));
+        assertTrue(dpp.containsKey("other-field"));
+
+        assertFalse(dpp.containsKey("missing-field"));
+    }
+}
+

Propchange: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/util/parser/DefaultParameterParserTest.java
------------------------------------------------------------------------------
    svn:keywords = Id Author

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml?rev=279424&r1=279423&r2=279424&view=diff
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml Wed Sep  7 14:19:59 2005
@@ -25,6 +25,9 @@
 
 <body>
   <release version="2.3.2-dev" date="in CVS">
+    <action type="fix" dev="henning" issue="TTWS58">
+      file upload items should be listed in DefaultParameterParser.keySet().
+    </action>
     <action type="update" dev="henning">
       All serializable classes have explicit SerialVersionUID fields.
     </action>



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