KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > myfaces > component > html > util > ExtensionsFilter


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.myfaces.component.html.util;
17
18 import java.io.IOException JavaDoc;
19
20 import javax.servlet.Filter JavaDoc;
21 import javax.servlet.FilterChain JavaDoc;
22 import javax.servlet.FilterConfig JavaDoc;
23 import javax.servlet.ServletException JavaDoc;
24 import javax.servlet.ServletRequest JavaDoc;
25 import javax.servlet.ServletResponse JavaDoc;
26 import javax.servlet.http.HttpServletRequest JavaDoc;
27 import javax.servlet.http.HttpServletResponse JavaDoc;
28
29 import org.apache.commons.fileupload.FileUpload;
30
31 /**
32  * This filters is mandatory for the use of many components.
33  * It handles the Multipart requests (for file upload)
34  * It's used by the components that need javascript libraries
35  *
36  * @author Sylvain Vieujot (latest modification by $Author: svieujot $)
37  * @version $Revision: 1.6 $ $Date: 2005/03/18 18:23:35 $
38  */

39 public class ExtensionsFilter implements Filter JavaDoc {
40
41     private int uploadMaxFileSize = 100 * 1024 * 1024; // 10 MB
42

43     private int uploadThresholdSize = 1 * 1024 * 1024; // 1 MB
44

45     private String JavaDoc uploadRepositoryPath = null; //standard temp directory
46

47     /**
48      * Init method for this filter
49      */

50     public void init(FilterConfig JavaDoc filterConfig) {
51
52         String JavaDoc 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 JavaDoc param, int defaultValue) {
64         int numberParam = defaultValue;
65
66         if (param != null) {
67             param = param.toLowerCase();
68             int factor = 1;
69             String JavaDoc 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 JavaDoc request, ServletResponse JavaDoc response, FilterChain JavaDoc chain) throws IOException JavaDoc, ServletException JavaDoc {
88         if (!(response instanceof HttpServletResponse JavaDoc)) {
89             chain.doFilter(request, response);
90             return;
91         }
92
93         HttpServletResponse JavaDoc httpResponse = (HttpServletResponse JavaDoc) response;
94         HttpServletRequest JavaDoc httpRequest = (HttpServletRequest JavaDoc) request;
95
96         // Serve myFaces internal resources files
97
if( AddResource.isResourceMappedPath( httpRequest ) ){
98             AddResource.serveResource(httpRequest, httpResponse);
99             return;
100         }
101         
102         HttpServletRequest JavaDoc extendedRequest = httpRequest;
103         
104         // For multipart/form-data requests
105
if (FileUpload.isMultipartContent(httpRequest)) {
106             extendedRequest = new MultipartRequestWrapper(httpRequest, uploadMaxFileSize, uploadThresholdSize, uploadRepositoryPath);
107         }
108         
109         ExtensionsResponseWrapper extendedResponse = new ExtensionsResponseWrapper((HttpServletResponse JavaDoc) response);
110         
111         // Standard request
112
chain.doFilter(extendedRequest, extendedResponse);
113         
114         if( ! AddResource.hasAdditionalHeaderInfoToRender(extendedRequest) ){
115             response.getOutputStream().write( extendedResponse.getBytes());
116             return;
117         }
118         
119         // Some headerInfo has to be added
120
AddResource.writeWithFullHeader(extendedRequest, extendedResponse, (HttpServletResponse JavaDoc)response);
121     }
122     
123     /**
124      * Destroy method for this filter
125      */

126     public void destroy() {
127         // NoOp
128
}
129 }
130
Popular Tags