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 org.apache.struts.action.ActionMapping;
24 import org.apache.struts.action.ActionServlet;
25
26 import javax.servlet.ServletException;
27 import javax.servlet.http.HttpServletRequest;
28
29 import java.util.Hashtable;
30
31 /**
32 * <p> MultipartRequestHandler provides an standard interface for struts to
33 * deal with file uploads from forms with enctypes of "multipart/form-data".
34 * Providers must provide a no-argument constructor for initialization. </p>
35 */
36 public interface MultipartRequestHandler {
37 /**
38 * <p> This is the ServletRequest attribute that should be set when a
39 * multipart request is being read and the maximum length is exceeded. The
40 * value is a Boolean. If the maximum length isn't exceeded, this
41 * attribute shouldn't be put in the ServletRequest. It's the job of the
42 * implementation to put this attribute in the request if the maximum
43 * length is exceeded; in the handleRequest(HttpServletRequest) method.
44 * </p>
45 */
46 public static final String ATTRIBUTE_MAX_LENGTH_EXCEEDED =
47 "org.apache.struts.upload.MaxLengthExceeded";
48
49 /**
50 * <p> Convienience method to set a reference to a working ActionServlet
51 * instance. </p>
52 */
53 public void setServlet(ActionServlet servlet);
54
55 /**
56 * <p> Convienience method to set a reference to a working ActionMapping
57 * instance. </p>
58 */
59 public void setMapping(ActionMapping mapping);
60
61 /**
62 * <p> Get the ActionServlet instance </p>
63 */
64 public ActionServlet getServlet();
65
66 /**
67 * <p> Get the ActionMapping instance for this request </p>
68 */
69 public ActionMapping getMapping();
70
71 /**
72 * <p> After constructed, this is the first method called on by
73 * ActionServlet. Use this method for all your data-parsing of the
74 * ServletInputStream in the request </p>
75 *
76 * @throws ServletException thrown if something goes wrong
77 */
78 public void handleRequest(HttpServletRequest request)
79 throws ServletException;
80
81 /**
82 * <p> This method is called on to retrieve all the text input elements of
83 * the request. </p>
84 *
85 * @return A Hashtable where the keys and values are the names and values
86 * of the request input parameters
87 */
88 public Hashtable getTextElements();
89
90 /**
91 * <p> This method is called on to retrieve all the FormFile input
92 * elements of the request. </p>
93 *
94 * @return A Hashtable where the keys are the input names of the files and
95 * the values are FormFile objects
96 * @see FormFile
97 */
98 public Hashtable getFileElements();
99
100 /**
101 * <p> This method returns all elements of a multipart request. </p>
102 *
103 * @return A Hashtable where the keys are input names and values are
104 * either String arrays or FormFiles
105 */
106 public Hashtable getAllElements();
107
108 /**
109 * <p> This method is called on when there's some sort of problem and the
110 * form post needs to be rolled back. Providers should remove any
111 * FormFiles used to hold information by setting them to null and also
112 * physically delete them if the implementation calls for writing directly
113 * to disk. NOTE: Currently implemented but not automatically supported,
114 * ActionForm implementors must call rollback() manually for rolling back
115 * file uploads. </p>
116 */
117 public void rollback();
118
119 /**
120 * <p> This method is called on when a successful form post has been made.
121 * Some implementations will use this to destroy temporary files or write
122 * to a database or something of that nature. </p>
123 */
124 public void finish();
125 }