webwork/src/main/webwork/multipart MultiPartRequestWrapper.java,1.12,1.13

[email protected] Wed, 03 Aug 2005 02:42:48 -0700
Newsgroups gmane.comp.java.open-symphony.cvs
Message-ID <[email protected]>
Update of /cvsroot/opensymphony/webwork/src/main/webwork/multipart
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15560/main/webwork/multipart

Modified Files:
	MultiPartRequestWrapper.java 
Log Message:
Allow specification of your own multipart request handling class
(WW-814)



Index: MultiPartRequestWrapper.java
===================================================================
RCS file: /cvsroot/opensymphony/webwork/src/main/webwork/multipart/MultiPartRequestWrapper.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- MultiPartRequestWrapper.java	19 Mar 2005 19:20:21 -0000	1.12
+++ MultiPartRequestWrapper.java	3 Aug 2005 09:42:46 -0000	1.13
@@ -6,19 +6,16 @@
  */
 package webwork.multipart;
 
+import org.apache.commons.logging.LogFactory;
 import webwork.config.Configuration;
+import webwork.util.ClassLoaderUtils;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Vector;
-
-import org.apache.commons.logging.LogFactory;
+import java.util.*;
 
 /**
  * <code>MultiPartRequestWrapper</code> will parse a multipart request and
@@ -61,6 +58,29 @@
              LogFactory.getLog(MultiPartRequestWrapper.class).error(error, ex);
              throw new IOException(error);
            }
+         } else
+         if("custom".equals(parser)) {  // allow specification of your own handler class - WW-814
+             String customHandler = Configuration.getString("webwork.multipart.parser.class");
+             try
+             {
+                 Class customHandlerClass = ClassLoaderUtils.loadClass(customHandler, this.getClass());
+                 // This is probably better if the dep ever moves to a newer version of common-beanutils
+                 // Object customHandlerObject = ConstructorUtils.invokeConstructor(customHandlerClass, new Object[]{request, saveDir, maxSize});
+                 Object customHandlerObject = customHandlerClass.getConstructor(new Class[]{HttpServletRequest.class, String.class, Integer.TYPE})
+                         .newInstance(new Object[]{request, saveDir, maxSize});
+                 if (customHandlerObject instanceof MultiPartRequest)
+                 {
+                     multi = (MultiPartRequest) customHandlerObject;
+                 }
+                 else
+                 {
+                     throw new IOException("The provided custom multipart parser class does not implement MultiPartRequest.");
+                 }
+             }
+             catch (Exception e)
+             {
+                 throw new IOException("Error instantiating webwork.multipart.parser.class: " + customHandler + "(original message: " + e.getMessage() + ")");
+             }
          } else {
             throw new IOException("Not multipart parse specified in webwork.properties.");
          }
@@ -89,9 +109,9 @@
    public Map getParameterMap()
    {
       Map map = new HashMap();
-      Enumeration e = getParameterNames();
-      while (e.hasMoreElements()) {
-         String name = (String) e.nextElement();
+      Enumeration enum = getParameterNames();
+      while (enum.hasMoreElements()) {
+         String name = (String) enum.nextElement();
          map.put(name, this.getParameterValues(name));
       }
       return map;
@@ -120,12 +140,12 @@
 
    //private
    protected Enumeration mergeParams(Enumeration params1, Enumeration params2) {
-   		Vector temp = new Vector();
-   		while(params1.hasMoreElements())
-   			temp.add(params1.nextElement());
-   		while(params2.hasMoreElements())
-   			temp.add(params2.nextElement());
-   		return temp.elements();
+           Vector temp = new Vector();
+           while(params1.hasMoreElements())
+               temp.add(params1.nextElement());
+           while(params2.hasMoreElements())
+               temp.add(params2.nextElement());
+           return temp.elements();
    }
 
   public InputStream getMemoryFileContents(String name) {



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click