package org.apache.struts.upload; import java.io.BufferedReader; import java.io.IOException; import java.security.Principal; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Vector; import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; public class MultipartRequestWrapper implements HttpServletRequest { protected Map parameters; protected HttpServletRequest request; public MultipartRequestWrapper(HttpServletRequest request) { this.request = request; this.parameters = new HashMap(); } public void setParameter(String name, String value) { String[] mValue = (String[])this.parameters.get(name); if (mValue == null) mValue = new String[0]; String[] newValue = new String[mValue.length + 1]; System.arraycopy(mValue, 0, newValue, 0, mValue.length); newValue[mValue.length] = value; this.parameters.put(name, newValue); } public String getParameter(String name) { String value = this.request.getParameter(name); if (value == null) { String[] mValue = (String[])this.parameters.get(name); if (mValue != null && mValue.length > 0) value = mValue[0]; } return value; } public Enumeration getParameterNames() { Enumeration baseParams = this.request.getParameterNames(); Vector list = new Vector(); while (baseParams.hasMoreElements()) list.add(baseParams.nextElement()); Collection multipartParams = this.parameters.keySet(); Iterator iterator = multipartParams.iterator(); while (iterator.hasNext()) list.add(iterator.next()); return Collections.enumeration(list); } public String[] getParameterValues(String name) { String[] value = this.request.getParameterValues(name); if (value == null) value = (String[])this.parameters.get(name); return value; } public HttpServletRequest getRequest() { return this.request; } public Object getAttribute(String name) { return this.request.getAttribute(name); } public Enumeration getAttributeNames() { return this.request.getAttributeNames(); } public String getCharacterEncoding() { return this.request.getCharacterEncoding(); } public int getContentLength() { return this.request.getContentLength(); } public String getContentType() { return this.request.getContentType(); } public ServletInputStream getInputStream() throws IOException { return this.request.getInputStream(); } public String getProtocol() { return this.request.getProtocol(); } public String getScheme() { return this.request.getScheme(); } public String getServerName() { return this.request.getServerName(); } public int getServerPort() { return this.request.getServerPort(); } public BufferedReader getReader() throws IOException { return this.request.getReader(); } public String getRemoteAddr() { return this.request.getRemoteAddr(); } public String getRemoteHost() { return this.request.getRemoteHost(); } public void setAttribute(String name, Object o) { this.request.setAttribute(name, o); } public void removeAttribute(String name) { this.request.removeAttribute(name); } public Locale getLocale() { return this.request.getLocale(); } public Enumeration getLocales() { return this.request.getLocales(); } public boolean isSecure() { return this.request.isSecure(); } public RequestDispatcher getRequestDispatcher(String path) { return this.request.getRequestDispatcher(path); } public String getRealPath(String path) { return this.request.getRealPath(path); } public String getAuthType() { return this.request.getAuthType(); } public Cookie[] getCookies() { return this.request.getCookies(); } public long getDateHeader(String name) { return this.request.getDateHeader(name); } public String getHeader(String name) { return this.request.getHeader(name); } public Enumeration getHeaders(String name) { return this.request.getHeaders(name); } public Enumeration getHeaderNames() { return this.request.getHeaderNames(); } public int getIntHeader(String name) { return this.request.getIntHeader(name); } public String getMethod() { return this.request.getMethod(); } public String getPathInfo() { return this.request.getPathInfo(); } public String getPathTranslated() { return this.request.getPathTranslated(); } public String getContextPath() { return this.request.getContextPath(); } public String getQueryString() { return this.request.getQueryString(); } public String getRemoteUser() { return this.request.getRemoteUser(); } public boolean isUserInRole(String user) { return this.request.isUserInRole(user); } public Principal getUserPrincipal() { return this.request.getUserPrincipal(); } public String getRequestedSessionId() { return this.request.getRequestedSessionId(); } public String getRequestURI() { return this.request.getRequestURI(); } public String getServletPath() { return this.request.getServletPath(); } public HttpSession getSession(boolean create) { return this.request.getSession(create); } public HttpSession getSession() { return this.request.getSession(); } public boolean isRequestedSessionIdValid() { return this.request.isRequestedSessionIdValid(); } public boolean isRequestedSessionIdFromURL() { return this.request.isRequestedSessionIdFromURL(); } public boolean isRequestedSessionIdFromUrl() { return this.request.isRequestedSessionIdFromUrl(); } public Map getParameterMap() { return null; } public void setCharacterEncoding(String encoding) {} public StringBuffer getRequestURL() { return null; } public boolean isRequestedSessionIdFromCookie() { return false; } }