You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by tv...@apache.org on 2007/04/16 21:09:33 UTC

svn commit: r529364 - in /jakarta/turbine/fulcrum/trunk/parser: project.xml src/java/org/apache/fulcrum/parser/DefaultParameterParser.java src/java/org/apache/fulcrum/parser/StringValueParser.java

Author: tv
Date: Mon Apr 16 12:09:32 2007
New Revision: 529364

URL: http://svn.apache.org/viewvc?view=rev&rev=529364
Log:
Use new fulcrum-fileupload
- Implement file item handling (ported from Turbine 2.3)
- Fixed deprecation issues

Modified:
    jakarta/turbine/fulcrum/trunk/parser/project.xml
    jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java
    jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/StringValueParser.java

Modified: jakarta/turbine/fulcrum/trunk/parser/project.xml
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/parser/project.xml?view=diff&rev=529364&r1=529363&r2=529364
==============================================================================
--- jakarta/turbine/fulcrum/trunk/parser/project.xml (original)
+++ jakarta/turbine/fulcrum/trunk/parser/project.xml Mon Apr 16 12:09:32 2007
@@ -9,13 +9,19 @@
     <dependency>
       <groupId>fulcrum</groupId>
       <artifactId>fulcrum-upload</artifactId>
-      <version>1.0.3</version>
+      <version>1.0.4-dev</version>
     </dependency>  
     <dependency>
       <groupId>commons-fileupload</groupId>
       <artifactId>commons-fileupload</artifactId>
-      <version>1.1</version>
+      <version>1.2</version>
       <url>http://jakarta.apache.org/commons/fileupload/index.html</url>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.3.1</version>
+      <url>http://jakarta.apache.org/commons/io/index.html</url>
     </dependency>
     <dependency>
       <groupId>commons-collections</groupId>

Modified: jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java?view=diff&rev=529364&r1=529363&r2=529364
==============================================================================
--- jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java (original)
+++ jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/DefaultParameterParser.java Mon Apr 16 12:09:32 2007
@@ -18,9 +18,11 @@
  */
 
 
+import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Enumeration;
 import java.util.Iterator;
+import java.util.List;
 import java.util.StringTokenizer;
 
 import javax.servlet.http.HttpServletRequest;
@@ -29,6 +31,7 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.fulcrum.upload.UploadService;
 
 /**
@@ -157,12 +160,45 @@
         {
             if (getLogger().isDebugEnabled())
             {
-                getLogger().debug("Running the Turbine Upload Service");
+                getLogger().debug("Running the Fulcrum Upload Service");
             }
 
             try
             {
-                uploadService.parseRequest(request, uploadService.getRepository());
+                List fileItems = uploadService.parseRequest(request);
+                
+                if (fileItems != null)
+                {
+                    for (Iterator it = fileItems.iterator(); it.hasNext();)
+                    {
+                        FileItem fi = (FileItem) it.next();
+                        if (fi.isFormField())
+                        {
+                            getLogger().debug("Found an simple form field: " + fi.getFieldName() +", adding value " + fi.getString());
+
+                            String value = null;
+                            try
+                            {
+                                value = fi.getString(getCharacterEncoding());
+                            }
+                            catch (UnsupportedEncodingException e)
+                            {
+                                getLogger().error(getCharacterEncoding()
+                                        + " encoding is not supported."
+                                        + "Used the default when reading form data.");
+                                value = fi.getString();
+                            }
+                            add(fi.getFieldName(), value);
+                        }
+                        else
+                        {
+                            getLogger().debug("Found an uploaded file: " + fi.getFieldName());
+                            getLogger().debug("It has " + fi.getSize() + " Bytes and is " + (fi.isInMemory() ? "" : "not ") + "in Memory");
+                            getLogger().debug("Adding FileItem as " + fi.getFieldName() + " to the params");
+                            add(fi.getFieldName(), fi);
+                        }
+                    }
+                }
             }
             catch (ServiceException e)
             {
@@ -192,12 +228,12 @@
             {
                 if (isNameTok)
                 {
-                    paramName = URLDecoder.decode(st.nextToken());
+                    paramName = URLDecoder.decode(st.nextToken(), getCharacterEncoding());
                     isNameTok = false;
                 }
                 else
                 {
-                    paramValue = URLDecoder.decode(st.nextToken());
+                    paramValue = URLDecoder.decode(st.nextToken(), getCharacterEncoding());
                     if (paramName.length() > 0)
                     {
                         add(paramName, paramValue);
@@ -256,24 +292,28 @@
      *
      * @param name A String with the name.
      * @param value A FileItem with the value.
+     * @deprecated Use add(String name, FileItem item)
      */
-    public void append( String name,
-                        FileItem value )
+    public void append(String name, FileItem value)
+    {
+        add(name, value);
+    }
+
+
+    /**
+     * Add a FileItem object as a parameters.  If there are any
+     * FileItems already associated with the name, append to the
+     * array.  The reason for this is that RFC 1867 allows multiple
+     * files to be associated with single HTML input element.
+     *
+     * @param name A String with the name.
+     * @param value A FileItem with the value.
+     */
+    public void add(String name, FileItem value)
     {
         FileItem[] items = this.getFileItems(name);
-        if(items == null)
-        {
-            items = new FileItem[1];
-            items[0] = value;
-            parameters.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 );
-        }
+        items = (FileItem []) ArrayUtils.add(items, value);
+        parameters.put(convert(name), items);
     }
 
 

Modified: jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/StringValueParser.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/StringValueParser.java?view=diff&rev=529364&r1=529363&r2=529364
==============================================================================
--- jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/StringValueParser.java (original)
+++ jakarta/turbine/fulcrum/trunk/parser/src/java/org/apache/fulcrum/parser/StringValueParser.java Mon Apr 16 12:09:32 2007
@@ -53,7 +53,7 @@
             String tok = st.nextToken();
             if ( urlDecode ) 
             {
-                tok = URLDecoder.decode(tok);
+                tok = URLDecoder.decode(tok, getCharacterEncoding());
             }
             
             if (isNameTok)
@@ -95,8 +95,8 @@
                 
                 if ( urlDecode ) 
                 {
-                    name = URLDecoder.decode(name);
-                    value = URLDecoder.decode(value);
+                    name = URLDecoder.decode(name, getCharacterEncoding());
+                    value = URLDecoder.decode(value, getCharacterEncoding());
                 }
             
                 if (name.length() > 0)



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