001: // Copyright (c) 2003-2007, Jodd Team (jodd.sf.net). All Rights Reserved.
002:
003: package jodd.servlet.upload;
004:
005: import jodd.servlet.ServletUtil;
006:
007: import javax.servlet.http.HttpServletRequestWrapper;
008: import javax.servlet.http.HttpServletRequest;
009: import java.util.Map;
010: import java.util.HashMap;
011: import java.util.Enumeration;
012: import java.util.Collections;
013: import java.io.IOException;
014:
015: /**
016: * Multipart HTTP servlet request wrapper.
017: * @see MultipartRequest
018: */
019: public class MultipartRequestWrapper extends HttpServletRequestWrapper {
020:
021: // ---------------------------------------------------------------- construction
022:
023: MultipartRequest mreq;
024: HttpServletRequest req;
025:
026: public MultipartRequestWrapper(HttpServletRequest request,
027: FileUploadFactory fileUploadFactory, String encoding)
028: throws IOException {
029: super (request);
030: req = request;
031: if (ServletUtil.isMultipartRequest(request)) {
032: mreq = MultipartRequest.getParsedInstance(request,
033: fileUploadFactory, encoding);
034: }
035: }
036:
037: public MultipartRequestWrapper(HttpServletRequest request,
038: FileUploadFactory fileUploadFactory) throws IOException {
039: super (request);
040: if (ServletUtil.isMultipartRequest(request)) {
041: mreq = MultipartRequest.getParsedInstance(request,
042: fileUploadFactory);
043: }
044: }
045:
046: public MultipartRequestWrapper(MultipartRequest mpreq) {
047: super (mpreq.getServletRequest());
048: mreq = mpreq;
049: }
050:
051: /**
052: * Returns {@link MultipartRequest} instance or <code>null</code> if request is not
053: * multipart.
054: */
055: public MultipartRequest getMultipartRequest() {
056: return mreq;
057: }
058:
059: /**
060: * Returns <code>true</code> if request is multipart.
061: */
062: public boolean isMultipart() {
063: return mreq != null;
064: }
065:
066: // ---------------------------------------------------------------- methods
067:
068: /**
069: * Get an enumeration of the parameter names for uploaded files
070: */
071: public Enumeration<String> getFileParameterNames() {
072: if (mreq == null) {
073: return null;
074: }
075: return Collections.enumeration(mreq.getFileParameterNames());
076: }
077:
078: /**
079: * Get a {@link FileUpload} array for the given input field name.
080: *
081: * @param fieldName input field name
082: * @return a File[] object for files associated with the specified input field name
083: */
084: public FileUpload[] getFiles(String fieldName) {
085: if (mreq == null) {
086: return null;
087: }
088: return mreq.getFiles(fieldName);
089: }
090:
091: public FileUpload getFile(String fieldName) {
092: if (mreq == null) {
093: return null;
094: }
095: return mreq.getFile(fieldName);
096: }
097:
098: /**
099: * @see javax.servlet.http.HttpServletRequest#getParameter(String)
100: */
101: @Override
102: public String getParameter(String name) {
103: if (mreq == null) {
104: return super .getParameter(name);
105: }
106: return mreq.getParameter(name);
107: }
108:
109: /**
110: * @see javax.servlet.http.HttpServletRequest#getParameterMap()
111: */
112: @Override
113: public Map getParameterMap() {
114: if (mreq == null) {
115: return super .getParameterMap();
116: }
117: Map<String, String[]> map = new HashMap<String, String[]>();
118: Enumeration enumeration = getParameterNames();
119: while (enumeration.hasMoreElements()) {
120: String name = (String) enumeration.nextElement();
121: map.put(name, this .getParameterValues(name));
122: }
123: return map;
124: }
125:
126: /**
127: * @see javax.servlet.http.HttpServletRequest#getParameterNames()
128: */
129: @Override
130: @SuppressWarnings({"unchecked"})
131: public Enumeration<String> getParameterNames() {
132: if (mreq == null) {
133: return super .getParameterNames();
134: }
135: return Collections.enumeration(mreq.getParameterNames());
136: }
137:
138: /**
139: * @see javax.servlet.http.HttpServletRequest#getParameterValues(String)
140: */
141: @Override
142: public String[] getParameterValues(String name) {
143: if (mreq == null) {
144: return super.getParameterValues(name);
145: }
146: return mreq.getParameterValues(name);
147: }
148:
149: }
|