1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts.upload;
22
23 import javax.servlet.http.HttpServletRequest;
24 import javax.servlet.http.HttpServletRequestWrapper;
25
26 import java.util.Collection;
27 import java.util.Collections;
28 import java.util.Enumeration;
29 import java.util.HashMap;
30 import java.util.Iterator;
31 import java.util.Map;
32 import java.util.Vector;
33
34
35
36
37
38 public class MultipartRequestWrapper extends HttpServletRequestWrapper {
39
40
41
42 protected Map parameters;
43
44 public MultipartRequestWrapper(HttpServletRequest request) {
45 super(request);
46 this.parameters = new HashMap();
47 }
48
49
50
51
52
53
54 public void setParameter(String name, String value) {
55 String[] mValue = (String[]) parameters.get(name);
56
57 if (mValue == null) {
58 mValue = new String[0];
59 }
60
61 String[] newValue = new String[mValue.length + 1];
62
63 System.arraycopy(mValue, 0, newValue, 0, mValue.length);
64 newValue[mValue.length] = value;
65
66 parameters.put(name, newValue);
67 }
68
69
70
71
72
73
74
75 public String getParameter(String name) {
76 String value = getRequest().getParameter(name);
77
78 if (value == null) {
79 String[] mValue = (String[]) parameters.get(name);
80
81 if ((mValue != null) && (mValue.length > 0)) {
82 value = mValue[0];
83 }
84 }
85
86 return value;
87 }
88
89
90
91
92
93
94 public Enumeration getParameterNames() {
95 Enumeration baseParams = getRequest().getParameterNames();
96 Vector list = new Vector();
97
98 while (baseParams.hasMoreElements()) {
99 list.add(baseParams.nextElement());
100 }
101
102 Collection multipartParams = parameters.keySet();
103 Iterator iterator = multipartParams.iterator();
104
105 while (iterator.hasNext()) {
106 list.add(iterator.next());
107 }
108
109 return Collections.enumeration(list);
110 }
111
112
113
114
115
116
117
118 public String[] getParameterValues(String name) {
119 String[] value = getRequest().getParameterValues(name);
120
121 if (value == null) {
122 value = (String[]) parameters.get(name);
123 }
124
125 return value;
126 }
127
128
129
130
131
132
133 public Map getParameterMap() {
134 Map map = new HashMap(parameters);
135
136 map.putAll(getRequest().getParameterMap());
137
138 return map;
139 }
140 }