[jboss-cvs] jboss-seam/src/main/org/jboss/seam/servlet ...

Shane Bryzak Shane_Bryzak at symantec.com
Tue Jan 30 05:47:24 EST 2007


  User: sbryzak2
  Date: 07/01/30 05:47:23

  Modified:    src/main/org/jboss/seam/servlet  MultipartRequest.java
  Log:
  moved some security classes to org.jboss.seam.security package
  
  Revision  Changes    Path
  1.3       +46 -17    jboss-seam/src/main/org/jboss/seam/servlet/MultipartRequest.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: MultipartRequest.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/servlet/MultipartRequest.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -b -r1.2 -r1.3
  --- MultipartRequest.java	23 Jan 2007 05:19:36 -0000	1.2
  +++ MultipartRequest.java	30 Jan 2007 10:47:23 -0000	1.3
  @@ -3,9 +3,11 @@
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.UnsupportedEncodingException;
  +import java.util.ArrayList;
   import java.util.Collections;
   import java.util.Enumeration;
   import java.util.HashMap;
  +import java.util.List;
   import java.util.Map;
   import java.util.regex.Matcher;
   import java.util.regex.Pattern;
  @@ -24,17 +26,17 @@
      
      private class PartWrapper 
      {
  -      private Map<String,String> params;
  +      private Map<String,Object> params;
         private byte[] data;
         private String contentType;
         private String fileName;
         
         public PartWrapper()
         {
  -         params = new HashMap<String,String>();
  +         params = new HashMap<String,Object>();
         }
         
  -      public Map<String,String> getParams()
  +      public Map<String,Object> getParams()
         {
            return params;
         }
  @@ -146,15 +148,20 @@
            }         
         }
         
  +      // Extract the content type and filename
         for (String key : entry.getParams().keySet())
         {
  -         String val = entry.getParams().get(key);
  -         if (val != null)
  +         Object val = entry.getParams().get(key);
  +         if (val instanceof String)
  +         {
  +            String s = (String) entry.getParams().get(key);
  +            if (s != null)
            {        
               if (entry.getContentType() == null && FILE_CONTENT_TYPE.equalsIgnoreCase(key))
  -               entry.setContentType(val);
  +                  entry.setContentType(s);
               else if (entry.getFileName() == null && FILE_NAME.equalsIgnoreCase(key))
  -               entry.setFileName(val);
  +                  entry.setFileName(s);
  +            }
            }
         }
         
  @@ -163,7 +170,7 @@
         entry.setData(data);
         
         if (entry.getParams().containsKey("name"))
  -         parameters.put(entry.getParams().get("name"), entry);
  +         parameters.put((String) entry.getParams().get("name"), entry);
      }
      
      /**
  @@ -290,8 +297,8 @@
      
      private byte[] getBoundary(String contentType)
      {
  -      Map<String, String> params = parseParams(contentType, ";");
  -      String boundaryStr = params.get("boundary");
  +      Map<String, Object> params = parseParams(contentType, ";");
  +      String boundaryStr = (String) params.get("boundary");
   
         if (boundaryStr == null) return null;
   
  @@ -308,7 +315,7 @@
      private static final Pattern PARAM_VALUE_PATTERN = Pattern
               .compile("^\\s*([^\\s=]+)\\s*[=:]\\s*([^\\s]+)\\s*$");
   
  -   private void parseParams(String paramStr, String separator, Map<String,String> target)
  +   private void parseParams(String paramStr, String separator, Map<String,Object> target)
      {
         String[] parts = paramStr.split("[" + separator + "]");
   
  @@ -317,20 +324,42 @@
            Matcher m = PARAM_VALUE_PATTERN.matcher(part);
            if (m.matches())
            {
  +            String key = m.group(1);
               String value = m.group(2);
               
               // Strip double quotes
               if (value.startsWith("\"") && value.endsWith("\""))
                  value = value.substring(1, value.length() - 1);
               
  -            target.put(m.group(1), value);
  +            if (target.containsKey(key))
  +            {
  +               Object v = target.get(key);
  +               if (v instanceof List)
  +                  ((List) v).add(value);
  +               else if (v instanceof String)
  +               {
  +                  List<String> vals = new ArrayList<String>();
  +                  vals.add((String) v);
  +                  vals.add(value);
  +                  target.put(key, value);
  +               }
  +               else
  +               {
  +                  List vals = new ArrayList();
  +                  vals.add(v);
  +                  vals.add(value);
  +                  target.put(key, value);
  +               }
  +            }
  +            else
  +               target.put(key, value);
            }
         }      
      }
      
  -   private Map<String, String> parseParams(String paramStr, String separator)
  +   private Map<String, Object> parseParams(String paramStr, String separator)
      {
  -      Map<String, String> target = new HashMap<String, String>();
  +      Map<String, Object> target = new HashMap<String, Object>();
         parseParams(paramStr, separator, target);
         return target;      
      }
  
  
  



More information about the jboss-cvs-commits mailing list