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