1 16 package org.apache.myfaces.component.html.util; 17 18 import java.io.IOException ; 19 20 import javax.servlet.Filter ; 21 import javax.servlet.FilterChain ; 22 import javax.servlet.FilterConfig ; 23 import javax.servlet.ServletException ; 24 import javax.servlet.ServletRequest ; 25 import javax.servlet.ServletResponse ; 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.http.HttpServletResponse ; 28 29 import org.apache.commons.fileupload.FileUpload; 30 31 39 public class ExtensionsFilter implements Filter { 40 41 private int uploadMaxFileSize = 100 * 1024 * 1024; 43 private int uploadThresholdSize = 1 * 1024 * 1024; 45 private String uploadRepositoryPath = null; 47 50 public void init(FilterConfig filterConfig) { 51 52 String param = filterConfig.getInitParameter("uploadMaxFileSize"); 53 54 uploadMaxFileSize = resolveSize(param, uploadMaxFileSize); 55 56 param = filterConfig.getInitParameter("uploadThresholdSize"); 57 58 uploadThresholdSize = resolveSize(param, uploadThresholdSize); 59 60 uploadRepositoryPath = filterConfig.getInitParameter("uploadRepositoryPath"); 61 } 62 63 private int resolveSize(String param, int defaultValue) { 64 int numberParam = defaultValue; 65 66 if (param != null) { 67 param = param.toLowerCase(); 68 int factor = 1; 69 String number = param; 70 71 if (param.endsWith("g")) { 72 factor = 1024 * 1024 * 1024; 73 number = param.substring(0, param.length() - 1); 74 } else if (param.endsWith("m")) { 75 factor = 1024 * 1024; 76 number = param.substring(0, param.length() - 1); 77 } else if (param.endsWith("k")) { 78 factor = 1024; 79 number = param.substring(0, param.length() - 1); 80 } 81 82 numberParam = Integer.parseInt(number) * factor; 83 } 84 return numberParam; 85 } 86 87 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException , ServletException { 88 if (!(response instanceof HttpServletResponse )) { 89 chain.doFilter(request, response); 90 return; 91 } 92 93 HttpServletResponse httpResponse = (HttpServletResponse ) response; 94 HttpServletRequest httpRequest = (HttpServletRequest ) request; 95 96 if( AddResource.isResourceMappedPath( httpRequest ) ){ 98 AddResource.serveResource(httpRequest, httpResponse); 99 return; 100 } 101 102 HttpServletRequest extendedRequest = httpRequest; 103 104 if (FileUpload.isMultipartContent(httpRequest)) { 106 extendedRequest = new MultipartRequestWrapper(httpRequest, uploadMaxFileSize, uploadThresholdSize, uploadRepositoryPath); 107 } 108 109 ExtensionsResponseWrapper extendedResponse = new ExtensionsResponseWrapper((HttpServletResponse ) response); 110 111 chain.doFilter(extendedRequest, extendedResponse); 113 114 if( ! AddResource.hasAdditionalHeaderInfoToRender(extendedRequest) ){ 115 response.getOutputStream().write( extendedResponse.getBytes()); 116 return; 117 } 118 119 AddResource.writeWithFullHeader(extendedRequest, extendedResponse, (HttpServletResponse )response); 121 } 122 123 126 public void destroy() { 127 } 129 } 130 | Popular Tags |