added "blacklist" of attachment MIME types that won't be compressed; a couple

of other minor tweaks
This commit is contained in:
Eric J. Bowersox
2001-04-18 06:01:45 +00:00
parent 0a7aec5103
commit 17d9a58867
8 changed files with 192 additions and 57 deletions

View File

@@ -342,7 +342,7 @@ public class ServletMultipartHandler
*--------------------------------------------------------------------------------
*/
private static Category logger = Category.getInstance(ServletMultipartHandler.class.getName());
private static Category logger = Category.getInstance(ServletMultipartHandler.class);
/*--------------------------------------------------------------------------------
* Attributes
@@ -350,8 +350,8 @@ public class ServletMultipartHandler
*/
private MimeMultipart multipart; // holds all the multipart data
private Hashtable param_byname; // parameters by name
private Vector param_order; // parameters in order
private HashMap param_byname; // parameters by name
private ArrayList param_order; // parameters in order
/*--------------------------------------------------------------------------------
* Constructor
@@ -360,34 +360,29 @@ public class ServletMultipartHandler
public ServletMultipartHandler(ServletRequest request) throws ServletMultipartException
{
if (logger.isDebugEnabled())
logger.debug("creating new ServletMultipartHandler");
if (!canHandle(request))
{ // we can't handle ordinary requests, just multipart/form-data ones
logger.error("this request is not of type multipart/form-data");
throw new ServletMultipartException("not a multipart/form-data request");
} // end if
try
{ // build the MimeMultipart based on the ServletDataSource
logger.debug("about to create MimeMultipart");
multipart = new MimeMultipart(new ServletDataSource(request));
logger.debug("about to get request count");
int count = multipart.getCount();
if (logger.isDebugEnabled())
logger.debug("retrieved " + count + " parameter(s) from request");
// allocate the multipart parameters and slot them into our arrays
param_byname = new Hashtable();
param_order = new Vector();
param_byname = new HashMap();
param_order = new ArrayList();
for (int i=0; i<count; i++)
{ // create the MultipartParameter structures and stash them for later use
MultipartParameter parm = new MultipartParameter((MimeBodyPart)(multipart.getBodyPart(i)));
param_byname.put(parm.getName(),parm);
param_order.addElement(parm);
param_order.add(parm);
} // end count
if (logger.isDebugEnabled())
logger.debug("ServletMultipartHandler created, " + param_order.size() + " params defined");
} // end try
catch (MessagingException me)
{ // translate a MessagingException into the nicer ServletMultipartException
@@ -425,19 +420,34 @@ public class ServletMultipartHandler
public Enumeration getNames()
{
Vector tmp_vector = new Vector();
Enumeration enum = param_order.elements();
while (enum.hasMoreElements())
ArrayList tmp_v = new ArrayList();
Iterator it = param_order.iterator();
while (it.hasNext())
{ // add each name to the temporary vector
MultipartParameter parm = (MultipartParameter)(enum.nextElement());
tmp_vector.addElement(parm.getName());
MultipartParameter parm = (MultipartParameter)(it.next());
tmp_v.add(parm.getName());
} // end while
return tmp_vector.elements(); // and enumerate it
return Collections.enumeration(tmp_v); // and enumerate it
} // end getNames
public Iterator getParamNames()
{
ArrayList tmp_v = new ArrayList();
Iterator it = param_order.iterator();
while (it.hasNext())
{ // add each name to the temporary vector
MultipartParameter parm = (MultipartParameter)(it.next());
tmp_v.add(parm.getName());
} // end while
return Collections.unmodifiableList(tmp_v).iterator();
} // end getParamNames
public boolean isFileParam(String name)
{
MultipartParameter parm = (MultipartParameter)(param_byname.get(name));

View File

@@ -14,6 +14,7 @@ public class FormDataTest extends HttpServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Form Test</TITLE></HEAD><BODY>");
out.println("<H1>Form Test</H1>");
@@ -103,6 +104,7 @@ public class FormDataTest extends HttpServlet
} // end catch
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Form Test Results</TITLE></HEAD><BODY>");
out.println("<H1>Form Test Results</H1>");