001: /*
002: * Copyright (c) 2002-2003 by OpenSymphony
003: * All rights reserved.
004: */
005: package com.opensymphony.webwork.dispatcher.multipart;
006:
007: import org.apache.commons.logging.Log;
008: import org.apache.commons.logging.LogFactory;
009:
010: import javax.servlet.http.HttpServletRequest;
011: import java.io.File;
012: import java.util.Enumeration;
013: import java.util.List;
014:
015: /**
016: * Abstract wrapper class HTTP requests to handle multi-part data. <p>
017: *
018: * @author <a href="mailto:matt@smallleap.com">Matt Baldree</a>
019: * @author Patrick Lightbody
020: * @author Bill Lynch (docs)
021: */
022: public abstract class MultiPartRequest {
023:
024: protected static Log log = LogFactory
025: .getLog(MultiPartRequest.class);
026:
027: /**
028: * Returns <tt>true</tt> if the request is multipart form data, <tt>false</tt> otherwise.
029: *
030: * @param request the http servlet request.
031: * @return <tt>true</tt> if the request is multipart form data, <tt>false</tt> otherwise.
032: */
033: public static boolean isMultiPart(HttpServletRequest request) {
034: String content_type = request.getContentType();
035: return content_type != null
036: && content_type.indexOf("multipart/form-data") != -1;
037: }
038:
039: /**
040: * Returns an enumeration of the parameter names for uploaded files
041: *
042: * @return an enumeration of the parameter names for uploaded files
043: */
044: public abstract Enumeration getFileParameterNames();
045:
046: /**
047: * Returns the content type(s) of the file(s) associated with the specified field name
048: * (as supplied by the client browser), or <tt>null</tt> if no files are associated with the
049: * given field name.
050: *
051: * @param fieldName input field name
052: * @return an array of content encoding for the specified input field name or <tt>null</tt> if
053: * no content type was specified.
054: */
055: public abstract String[] getContentType(String fieldName);
056:
057: /**
058: * Returns a {@link java.io.File} object for the filename specified or <tt>null</tt> if no files
059: * are associated with the given field name.
060: *
061: * @param fieldName input field name
062: * @return a File[] object for files associated with the specified input field name
063: */
064: public abstract File[] getFile(String fieldName);
065:
066: /**
067: * Returns a String[] of file names for files associated with the specified input field name
068: *
069: * @param fieldName input field name
070: * @return a String[] of file names for files associated with the specified input field name
071: */
072: public abstract String[] getFileNames(String fieldName);
073:
074: /**
075: * Returns the file system name(s) of files associated with the given field name or
076: * <tt>null</tt> if no files are associated with the given field name.
077: *
078: * @param fieldName input field name
079: * @return the file system name(s) of files associated with the given field name
080: */
081: public abstract String[] getFilesystemName(String fieldName);
082:
083: /**
084: * Returns the specified request parameter.
085: *
086: * @param name the name of the parameter to get
087: * @return the parameter or <tt>null</tt> if it was not found.
088: */
089: public abstract String getParameter(String name);
090:
091: /**
092: * Returns an enumeration of String parameter names.
093: *
094: * @return an enumeration of String parameter names.
095: */
096: public abstract Enumeration getParameterNames();
097:
098: /**
099: * Returns a list of all parameter values associated with a parameter name. If there is only
100: * one parameter value per name the resulting array will be of length 1.
101: *
102: * @param name the name of the parameter.
103: * @return an array of all values associated with the parameter name.
104: */
105: public abstract String[] getParameterValues(String name);
106:
107: /**
108: * Returns a list of error messages that may have occurred while processing the request.
109: * If there are no errors, an empty list is returned. If the underlying implementation
110: * (ie: pell, cos, jakarta, etc) cannot support providing these errors, an empty list is
111: * also returned. This list of errors is repoted back to the
112: * {@link MultiPartRequestWrapper}'s errors field.
113: *
114: * @return a list of Strings that represent various errors during parsing
115: */
116: public abstract List getErrors();
117: }
|