webwork/src/main/webwork/multipart CosMultiPartRequest.java,NONE,1.1 MultiPartFilter.java,NONE,1.1 MultiPartRequest.java,NONE,1.1 MultiPartRequestWrapper.java,NONE,1.1 PellMultiPartRequest.java,NONE,1.1

[email protected] Sat, 18 May 2002 11:29:19 -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-serv24899

Added Files:
	CosMultiPartRequest.java MultiPartFilter.java 
	MultiPartRequest.java MultiPartRequestWrapper.java 
	PellMultiPartRequest.java 
Log Message:
new

--- NEW FILE: CosMultiPartRequest.java ---
/*
 * WebWork, Web Application Framework
 *
 * Distributable under Apache license.
 * See terms of license at opensource.org
 */
package webwork.multipart;

import org.apache.log4j.Category;
import webwork.config.Configuration;
import com.oreilly.servlet.MultipartRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;

/* ------------------------------------------------------------ */

/**
 * Multipart Form Data request adapter for Jason Hunter's multipart
 * utils. You need to watch his license. He requires you to own his
 * book.
 *
 * @version $Id: CosMultiPartRequest.java,v 1.1 2002/05/18 18:29:17 baldree Exp $
 * @author  Matt Baldree ([email protected]) modified for WW's use
 */
public class CosMultiPartRequest extends MultiPartRequest
{
   /* ------------------------------------------------------------ */
   private MultipartRequest multi;

   /**
    * @param maxSize maximum size post allowed
    * @param saveDir the directory to save off the file
    * @param servletRequest the request containing the multipart
    */
   public CosMultiPartRequest(HttpServletRequest servletRequest, String saveDir, int maxSize)
         throws IOException
   {
      multi = new MultipartRequest(servletRequest, saveDir, maxSize);
   }

   public Enumeration getParameterNames()
   {
      return multi.getParameterNames();
   }

   public String getParameter(String name)
   {
      return multi.getParameter(name);
   }

   public String[] getParameterValues(String name)
   {
      return multi.getParameterValues(name);
   }

   // Methods only in MultipartRequest
   public Enumeration getFileNames()
   {
      return multi.getFileNames();
   }

   public String getFilesystemName(String name)
   {
      return multi.getFilesystemName(name);
   }

   public String getContentType(String name)
   {
      return multi.getContentType(name);
   }

   public File getFile(String name)
   {
      return multi.getFile(name);
   }
}

--- NEW FILE: MultiPartFilter.java ---
/**
 * @(#)$Id: MultiPartFilter.java,v 1.1 2002/05/18 18:29:17 baldree Exp $
 *
 * Copyright (c) 2002
 * Sprint PCS
 * All Rights Reserved.
 *
 * This document contains proprietary and confidential information,
 * and shall not be reproduced, transferred, or disclosed to others,
 * without the prior written consent of Sprint PCS. 
 */
package webwork.multipart;

import org.apache.log4j.Category;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.File;

import webwork.action.Action;
import webwork.action.ResultException;

/**
 * <code>MultiPartFilter</code> 
 *
 * @author Matt Baldree
 * @date $Date: 2002/05/18 18:29:17 $
 * @version $Revision: 1.1 $
 */
public class MultiPartFilter implements Filter
{
   private FilterConfig config;
   private String saveDir;
   private Integer maxSize;
   private static Category log = Category.getInstance(MultiPartFilter.class);

   public void destroy()
   {
      config = null;
      saveDir = null;
      maxSize = null;
   }


   /**
    * Retrieve the init parameters from web.xml
    */
   public void init(FilterConfig config) throws ServletException
   {
      this.config = config;

      //saveDir
      saveDir = config.getInitParameter("saveDir");
      if (saveDir == null) {
         File tempdir = (File) config.getServletContext().getAttribute("javax.servlet.context.tempdir");
         if (tempdir != null) {
           saveDir = tempdir.toString();
         }
         else {
           throw new ServletException(
             "MultipartFilter: No upload directory found: set an saveDir " +
             "init parameter or ensure the javax.servlet.context.tempdir " +
             "directory is valid");
         }
       }

      //maxSize
      String maxSizeStr = config.getInitParameter("maxSize");
      if (maxSizeStr!=null) {
         try {
            maxSize = new Integer(maxSizeStr);
         } catch (NumberFormatException e) {
            throw new ServletException("MultipartFilter: Unable to parse maximum size for upload.");
         }
      } else {
         maxSize = new Integer(-1);
      }
   }

   /**
    * Wrap the request if the request is a multipart type. If there is an IOException
    * caused by the multipart parser, then a ResultException with ERROR as the result
    * and the IOException message as the message will be store in the request
    * for later use by the action if it extends ActionSupport.
    */
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
         throws IOException, ServletException
   {
      if (MultiPartRequest.isMultiPart((HttpServletRequest)request)) {
         MultiPartRequestWrapper wrapper = null;
         try {
            wrapper = new MultiPartRequestWrapper((HttpServletRequest)request,
                           saveDir, maxSize);
            chain.doFilter(wrapper, response);
         } catch (IOException e) {
            request.setAttribute("webwork.result.exception",
                  new ResultException(Action.ERROR, e.getLocalizedMessage()));
            //pass the normal chain on
            chain.doFilter(request, response);
         }
      } else {
         chain.doFilter(request, response);
      }
   }
}

--- NEW FILE: MultiPartRequest.java ---
/*
 * WebWork, Web Application Framework
 *
 * Distributable under Apache license.
 * See terms of license at opensource.org
 */
package webwork.multipart;

import org.apache.log4j.Category;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;

/* ------------------------------------------------------------ */

/**
 * Multipart Form Data request.
 * <p>
 * This class decodes the multipart/form-data stream sent by
 * a HTML form that uses a file input item.
 *
 * @version $Id: MultiPartRequest.java,v 1.1 2002/05/18 18:29:17 baldree Exp $
 * @author  Matt Baldree ([email protected]) modified for WW's use
 */
public abstract class MultiPartRequest
{
   protected static Category log = Category.getInstance(CosMultiPartRequest.class);

   /**
    * Is request a multipart request
    */
   public static boolean isMultiPart(HttpServletRequest request)
   {
      String content_type = request.getHeader("Content-Type");
      return (content_type == null || !content_type.startsWith("multipart/form-data")) ?
            false : true;
   }

   public abstract Enumeration getParameterNames();

   public abstract String getParameter(String name);

   public abstract String[] getParameterValues(String name);

   // Methods only in MultipartRequest
   public abstract Enumeration getFileNames();

   public abstract String getFilesystemName(String name);

   public abstract String getContentType(String name);

   public abstract File getFile(String name);
}

--- NEW FILE: MultiPartRequestWrapper.java ---
/**
 * @(#)$Id: MultiPartRequestWrapper.java,v 1.1 2002/05/18 18:29:17 baldree Exp $
 *
 * Copyright (c) 2002
 * Sprint PCS
 * All Rights Reserved.
 *
 * This document contains proprietary and confidential information,
 * and shall not be reproduced, transferred, or disclosed to others,
 * without the prior written consent of Sprint PCS.
 */
package webwork.multipart;

import webwork.config.Configuration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

/**
 * <code>MultiPartRequestWrapper</code> will parse a multipart request and
 * provide a wrapper around the request. The parse it uses depends on
 * the "webwork.multipart.parser" setting. The present choices are
 * "pell" for Jason Pell and "cos" for Jason Hunter.
 *
 * @author Matt Baldree
 * @date $Date: 2002/05/18 18:29:17 $
 * @version $Revision: 1.1 $
 */
public class MultiPartRequestWrapper extends HttpServletRequestWrapper
{
   MultiPartRequest multi;

   public MultiPartRequestWrapper(HttpServletRequest request, String saveDir, Integer maxSize)
         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());
      } else {
         throw new IOException("Not multipart parse specified in webwork.properties.");
      }
   }

   public Enumeration getParameterNames()
   {
      return multi.getParameterNames();
   }

   public String getParameter(String name)
   {
      return multi.getParameter(name);
   }

   public String[] getParameterValues(String name)
   {
      return multi.getParameterValues(name);
   }

   public Map getParameterMap()
   {
      Map map = new HashMap();
      Enumeration enum = getParameterNames();
      while (enum.hasMoreElements()) {
         String name = (String) enum.nextElement();
         map.put(name, multi.getParameterValues(name));
      }
      return map;
   }

   // Methods only in MultipartRequest
   public Enumeration getFileNames()
   {
      return multi.getFileNames();
   }

   public String getFilesystemName(String name)
   {
      return multi.getFilesystemName(name);
   }

   public String getContentType(String name)
   {
      return multi.getContentType(name);
   }

   public File getFile(String name)
   {
      return multi.getFile(name);
   }
}

--- NEW FILE: PellMultiPartRequest.java ---
/*
 * WebWork, Web Application Framework
 *
 * Distributable under Apache license.
 * See terms of license at opensource.org
 */
package webwork.multipart;

import org.apache.log4j.Category;
import webwork.config.Configuration;
import http.utils.multipartrequest.ServletMultipartRequest;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.ArrayList;
import java.util.List;

/* ------------------------------------------------------------ */

/**
 * Multipart Form Data request adapter for Jason Pell's multipart utils
 *
 * @version $Id: PellMultiPartRequest.java,v 1.1 2002/05/18 18:29:17 baldree Exp $
 * @author  Matt Baldree ([email protected]) modified for WW's use
 */
public class PellMultiPartRequest extends MultiPartRequest
{
   /* ------------------------------------------------------------ */
   private ServletMultipartRequest multi;

   /**
    * @param maxSize maximum size post allowed
    * @param saveDir the directory to save off the file
    * @param servletRequest the request containing the multipart
    */
   public PellMultiPartRequest(HttpServletRequest servletRequest, String saveDir, int maxSize)
         throws IOException
   {
      multi = new ServletMultipartRequest(servletRequest, saveDir, maxSize);
   }

   public Enumeration getParameterNames()
   {
      return multi.getParameterNames();
   }

   public String getParameter(String name)
   {
      return multi.getURLParameter(name);
   }

   public String[] getParameterValues(String name)
   {
      Enumeration enum = multi.getURLParameters(name);
      if (!enum.hasMoreElements()) {
         return null;
      }

      List values = new ArrayList();
      while (enum.hasMoreElements()) {
         values.add(enum.nextElement());
      }
      return (String[])values.toArray(new String[values.size()]);
   }

   // Methods only in MultipartRequest
   public Enumeration getFileNames()
   {
      return multi.getFileParameterNames();
   }

   public String getFilesystemName(String name)
   {
      return multi.getFileSystemName(name);
   }

   public String getContentType(String name)
   {
      return multi.getContentType(name);
   }

   public File getFile(String name)
   {
      return multi.getFile(name);
   }
}



_______________________________________________________________
Hundreds of nodes, one monster rendering program.
Now that's a super model! Visit http://clustering.foundries.sf.net/