View Javadoc

    1   /*
    2    * $Id: MultipartRequestHandler.java 471754 2006-11-06 14:55:09Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    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 }