package com.transmem.action; import java.io.File; import java.io.Writer; import java.io.IOException; import java.util.Enumeration; import java.util.logging.Logger; import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.oreilly.servlet.MultipartRequest; import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; /** * A wrapper (Facade) for HttpServletRequest, MultipartRequest, and HttpServletResponse objects. * When a multipart/application form is received, a MultipartRequest will be created * and stored in this object, and the action classes visit the two kinds of request in the same way. * * ServletParams sp = new ServletParams(request, response); * String value = sp.getParameter("variable"); //for both simple and multipart request * File file = sp.getFile("uploaded_file"); //for multipart request * */ public class ServletParams { private static Logger log_ = Logger.getLogger(ServletParams.class.getName()); private HttpServletRequest request_; private MultipartRequest mrequest_; private HttpServletResponse response_; private Session session_; private String path_; public ServletParams(HttpServletRequest request, HttpServletResponse response) throws IOException { if (request == null || response == null) throw new IllegalArgumentException("Argument null"); this.request_ = request; this.session_ = new Session(request.getSession()); this.response_ = response; //log_.info("Content Type: "+request.getContentType()); String ct = request.getContentType(); if (ct == null) { log_.warning("request.getContentType() returned null"); } else if (ct.startsWith("multipart/form-data")) { //log_.info("multipart/form-data content type"); ServletContext ctx = session_.getServletContext(); int uploadmax = ((Integer)ctx.getAttribute("UploadSizeMB")).intValue(); this.path_ = ctx.getRealPath("/") + "upload"; //log_.info("path="+path); this.mrequest_ = new MultipartRequest(request, this.path_, uploadmax * 1024 * 1024, new DefaultFileRenamePolicy()); } } public HttpServletRequest getRequest() { return this.request_; } public HttpServletResponse getResponse() { return this.response_; } public Writer getWriter() throws IOException { if (this.response_ == null) { log_.severe("ServletParams.response_ is null"); return null; } return this.response_.getWriter(); } public ServletOutputStream getOutputStream() throws IOException { if (this.response_ == null) { log_.severe("ServletParams.response_ is null"); return null; } return this.response_.getOutputStream(); } public void setContentType(String contentType) { if (this.response_ == null) { log_.severe("ServletParams.response_ is null"); return; } this.response_.setContentType(contentType); } public void setHeader(String key, String value) { if (this.response_ == null) { log_.severe("ServletParams.response_ is null"); return; } this.response_.setHeader(key, value); } public void addHeader(String key, String value) { if (this.response_ == null) { log_.severe("ServletParams.response_ is null"); return; } this.response_.addHeader(key, value); } public MultipartRequest getMultipartRequest() { return this.mrequest_; } public String getParameter(String name) { if (this.mrequest_ != null) return this.mrequest_.getParameter(name); if (this.request_ != null) return this.request_.getParameter(name); return null; } public Enumeration getParameterNames() { if (this.mrequest_ != null) return this.mrequest_.getParameterNames(); if (this.request_ != null) return this.request_.getParameterNames(); return null; } public String[] getParameterValues(String arrayname) { if (this.mrequest_ != null) return this.mrequest_.getParameterValues(arrayname); if (this.request_ != null) return this.request_.getParameterValues(arrayname); return null; } public Session getSession() { return this.session_; } public HttpSession getHttpSession() { if (this.session_ == null) return null; return this.session_.getHttpSession(); } public String getPath() { return this.path_; } /** * Return a list of parameter names for <file> elements. */ public Enumeration getFileNames() { if (this.mrequest_ != null) return mrequest_.getFileNames(); return null; } public File getFile(String paramname) { if (this.mrequest_ != null) return mrequest_.getFile(paramname); return null; } /** * Return the changed filename saved in the path. * @param paramname - name of the file element * @return saved filename without path */ public String getFilesystemName(String paramname) { if (this.mrequest_ != null) return this.mrequest_.getFilesystemName(paramname); return null; } /** * Return the saved filename with path. * @param paramname - name of the file element * @return saved filename with path */ public String getFilePathName(String paramname) { if (this.mrequest_ != null) { String fs = this.path_ + File.separator; return fs + this.mrequest_.getFilesystemName(paramname); } return null; } /** * Return original filename without path. * @param paramname - name of the file element * @return original filename */ public String getOriginalFileName(java.lang.String paramname) { if (this.mrequest_ != null) return this.mrequest_.getOriginalFileName(paramname); return null; } /** * Return the content type of the uploaded file. * @param paramname - name of the file element * @return content type */ public String getContentType(java.lang.String paramname) { if (this.mrequest_ != null) return this.mrequest_.getContentType(paramname); return null; } public void sendError(int errorcode) throws IOException { if (this.response_ == null) { log_.severe("response_ is null in ServletParams"); return; } this.response_.sendError(errorcode); } public void sendError(int errorcode, String errmsg) throws IOException { if (this.response_ == null) { log_.severe("response_ is null in ServletParams"); return; } this.response_.sendError(errorcode, errmsg); } public void sendError(String message) throws IOException { sendError(MessageCode.ERRCODE_APP, message); } }