1 package com.atlassian.xwork;
2
3 import com.opensymphony.webwork.config.Configuration;
4 import com.opensymphony.webwork.dispatcher.multipart.MultiPartRequest;
5 import http.utils.multipartrequest.ServletMultipartRequest;
6
7 import javax.servlet.http.HttpServletRequest;
8 import java.io.File;
9 import java.io.IOException;
10 import java.io.UnsupportedEncodingException;
11 import java.util.ArrayList;
12 import java.util.Enumeration;
13 import java.util.List;
14
15
16
17
18
19
20
21
22 public class PellMultiPartRequest extends MultiPartRequest
23 {
24
25
26 private ServletMultipartRequest multi;
27
28
29
30
31
32
33
34
35
36
37
38 public PellMultiPartRequest(HttpServletRequest servletRequest, String saveDir, int maxSize) throws IOException {
39
40
41 synchronized (this) {
42 setEncoding();
43 multi = new ServletMultipartRequest(servletRequest, saveDir, maxSize);
44 }
45 }
46
47
48
49 public Enumeration getFileParameterNames() {
50 return multi.getFileParameterNames();
51 }
52
53 public String[] getContentType(String fieldName) {
54 return new String[]{multi.getContentType(fieldName)};
55 }
56
57 public File[] getFile(String fieldName) {
58 return new File[]{multi.getFile(fieldName)};
59 }
60
61 public String[] getFileNames(String fieldName) {
62
63
64 File file = multi.getFile(fieldName);
65 if (file == null)
66 return null;
67
68 return new String[]{file.getName()};
69 }
70
71 public String[] getFilesystemName(String fieldName) {
72 return new String[]{multi.getFileSystemName(fieldName)};
73 }
74
75 public String getParameter(String name) {
76 return multi.getURLParameter(name);
77 }
78
79 public Enumeration getParameterNames() {
80 return multi.getParameterNames();
81 }
82
83 public String[] getParameterValues(String name) {
84 Enumeration enumeration = multi.getURLParameters(name);
85
86 if (!enumeration.hasMoreElements()) {
87 return null;
88 }
89
90 List values = new ArrayList();
91
92 while (enumeration.hasMoreElements()) {
93 values.add(enumeration.nextElement());
94 }
95
96 return (String[]) values.toArray(new String[values.size()]);
97 }
98
99
100
101
102
103
104
105
106 private static void setEncoding() {
107 String encoding = null;
108
109 try {
110 encoding = Configuration.getString("webwork.i18n.encoding");
111
112 if (encoding != null) {
113
114
115
116 http.utils.multipartrequest.MultipartRequest.setEncoding(encoding);
117 } else {
118 http.utils.multipartrequest.MultipartRequest.setEncoding("UTF-8");
119 }
120 } catch (IllegalArgumentException e) {
121 log.info("Could not get encoding property 'webwork.i18n.encoding' for file upload. Using system default");
122 } catch (UnsupportedEncodingException e) {
123 log.error("Encoding " + encoding + " is not a valid encoding. Please check your webwork.properties file.");
124 }
125 }
126 }
127