001: /*
002: * $Id: MultipartRequestHandler.java 471754 2006-11-06 14:55:09Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts.upload;
022:
023: import org.apache.struts.action.ActionMapping;
024: import org.apache.struts.action.ActionServlet;
025:
026: import javax.servlet.ServletException;
027: import javax.servlet.http.HttpServletRequest;
028:
029: import java.util.Hashtable;
030:
031: /**
032: * <p> MultipartRequestHandler provides an standard interface for struts to
033: * deal with file uploads from forms with enctypes of "multipart/form-data".
034: * Providers must provide a no-argument constructor for initialization. </p>
035: */
036: public interface MultipartRequestHandler {
037: /**
038: * <p> This is the ServletRequest attribute that should be set when a
039: * multipart request is being read and the maximum length is exceeded. The
040: * value is a Boolean. If the maximum length isn't exceeded, this
041: * attribute shouldn't be put in the ServletRequest. It's the job of the
042: * implementation to put this attribute in the request if the maximum
043: * length is exceeded; in the handleRequest(HttpServletRequest) method.
044: * </p>
045: */
046: public static final String ATTRIBUTE_MAX_LENGTH_EXCEEDED = "org.apache.struts.upload.MaxLengthExceeded";
047:
048: /**
049: * <p> Convienience method to set a reference to a working ActionServlet
050: * instance. </p>
051: */
052: public void setServlet(ActionServlet servlet);
053:
054: /**
055: * <p> Convienience method to set a reference to a working ActionMapping
056: * instance. </p>
057: */
058: public void setMapping(ActionMapping mapping);
059:
060: /**
061: * <p> Get the ActionServlet instance </p>
062: */
063: public ActionServlet getServlet();
064:
065: /**
066: * <p> Get the ActionMapping instance for this request </p>
067: */
068: public ActionMapping getMapping();
069:
070: /**
071: * <p> After constructed, this is the first method called on by
072: * ActionServlet. Use this method for all your data-parsing of the
073: * ServletInputStream in the request </p>
074: *
075: * @throws ServletException thrown if something goes wrong
076: */
077: public void handleRequest(HttpServletRequest request)
078: throws ServletException;
079:
080: /**
081: * <p> This method is called on to retrieve all the text input elements of
082: * the request. </p>
083: *
084: * @return A Hashtable where the keys and values are the names and values
085: * of the request input parameters
086: */
087: public Hashtable getTextElements();
088:
089: /**
090: * <p> This method is called on to retrieve all the FormFile input
091: * elements of the request. </p>
092: *
093: * @return A Hashtable where the keys are the input names of the files and
094: * the values are FormFile objects
095: * @see FormFile
096: */
097: public Hashtable getFileElements();
098:
099: /**
100: * <p> This method returns all elements of a multipart request. </p>
101: *
102: * @return A Hashtable where the keys are input names and values are
103: * either String arrays or FormFiles
104: */
105: public Hashtable getAllElements();
106:
107: /**
108: * <p> This method is called on when there's some sort of problem and the
109: * form post needs to be rolled back. Providers should remove any
110: * FormFiles used to hold information by setting them to null and also
111: * physically delete them if the implementation calls for writing directly
112: * to disk. NOTE: Currently implemented but not automatically supported,
113: * ActionForm implementors must call rollback() manually for rolling back
114: * file uploads. </p>
115: */
116: public void rollback();
117:
118: /**
119: * <p> This method is called on when a successful form post has been made.
120: * Some implementations will use this to destroy temporary files or write
121: * to a database or something of that nature. </p>
122: */
123: public void finish();
124: }
|