webwork/src/main/webwork/multipart MultiPartRequestWrapper.java,1.1,1.2

[email protected] Mon, 15 Jul 2002 12:47:44 -0700
Newsgroups gmane.comp.java.webwork.cvs
Message-ID <[email protected]>
Update of /cvsroot/webwork/webwork/src/main/webwork/multipart
In directory usw-pr-cvs1:/tmp/cvs-serv10981

Modified Files:
	MultiPartRequestWrapper.java 
Log Message:
updated to include parameters from previous requests
- patch submitted by Christoph Kiehl [[email protected]]

Index: MultiPartRequestWrapper.java
===================================================================
RCS file: /cvsroot/webwork/webwork/src/main/webwork/multipart/MultiPartRequestWrapper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- MultiPartRequestWrapper.java	18 May 2002 18:29:17 -0000	1.1
+++ MultiPartRequestWrapper.java	15 Jul 2002 19:47:41 -0000	1.2
@@ -20,6 +20,7 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Vector;
 
 /**
  * <code>MultiPartRequestWrapper</code> will parse a multipart request and
@@ -39,30 +40,34 @@
          throws IOException
    {
       super(request);
-      String parser = Configuration.getString("webwork.multipart.parser");
-      if ("cos".equals(parser)) {
-         multi = new CosMultiPartRequest(request, saveDir, maxSize.intValue());
-      } else
-      if ("pell".equals(parser)) {
-         multi = new PellMultiPartRequest(request, saveDir, maxSize.intValue());
+      if (request instanceof MultiPartRequest) {
+         multi = (MultiPartRequest)request;
       } else {
-         throw new IOException("Not multipart parse specified in webwork.properties.");
+         String parser = Configuration.getString("webwork.multipart.parser");
+         if ("cos".equals(parser)) {
+            multi = new CosMultiPartRequest(request, saveDir, maxSize.intValue());
+         } else
+         if ("pell".equals(parser)) {
+            multi = new PellMultiPartRequest(request, saveDir, maxSize.intValue());
+         } else {
+            throw new IOException("Not multipart parse specified in webwork.properties.");
+         }
       }
    }
 
    public Enumeration getParameterNames()
    {
-      return multi.getParameterNames();
+      return mergeParams(multi.getParameterNames(), super.getParameterNames());
    }
 
    public String getParameter(String name)
    {
-      return multi.getParameter(name);
+      return (multi.getParameter(name)==null) ? super.getParameter(name) : multi.getParameter(name);
    }
 
    public String[] getParameterValues(String name)
    {
-      return multi.getParameterValues(name);
+      return (multi.getParameterValues(name)==null) ? super.getParameterValues(name) : multi.getParameterValues(name);
    }
 
    public Map getParameterMap()
@@ -71,7 +76,7 @@
       Enumeration enum = getParameterNames();
       while (enum.hasMoreElements()) {
          String name = (String) enum.nextElement();
-         map.put(name, multi.getParameterValues(name));
+         map.put(name, this.getParameterValues(name));
       }
       return map;
    }
@@ -95,5 +100,15 @@
    public File getFile(String name)
    {
       return multi.getFile(name);
+   }
+
+   //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();
    }
 }




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf