View Javadoc

    1   /*
    2    * $Id: MockMultipartRequestHandler.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
    22  package org.apache.struts.mock;
    23
    24  import java.util.Enumeration;
    25  import java.util.Hashtable;
    26  import javax.servlet.ServletException;
    27  import javax.servlet.http.HttpServletRequest;
    28  import org.apache.struts.action.ActionServlet;
    29  import org.apache.struts.action.ActionMapping;
    30  import org.apache.struts.upload.MultipartRequestHandler;
    31
    32  /**
    33   * <p>Mock <strong>MultipartRequestHandler</strong> object for unit tests.</p>
    34   *
    35   * @version $Rev: 471754 $
    36   */
    37  public class MockMultipartRequestHandler implements MultipartRequestHandler {
    38
    39      /** mock ActionServlet instance. */
    40      private ActionServlet servlet;
    41
    42      /** mock ActionMapping instance. */
    43      private ActionMapping mapping = new ActionMapping();
    44
    45      /** request elements. */
    46      private Hashtable elements;
    47
    48      /**
    49       * Convienience method to set a reference to a mock
    50       * ActionServlet instance.
    51       * @param servlet Mock servlet instance.
    52       */
    53      public void setServlet(ActionServlet servlet) {
    54          this.servlet = servlet;
    55      }
    56
    57      /**
    58       * Convienience method to set a reference to a mock
    59       * ActionMapping instance.
    60       * @param mapping Mock action mapping instance.
    61       */
    62      public void setMapping(ActionMapping mapping) {
    63          this.mapping = mapping;
    64      }
    65
    66      /**
    67       * Get the mock ActionServlet instance.
    68       * @return The mock servlet instance.
    69       */
    70      public ActionServlet getServlet() {
    71          return this.servlet;
    72      }
    73
    74      /**
    75       * Get the ActionMapping instance for this mock request.
    76       * @return The mock action mapping instance.
    77       */
    78      public ActionMapping getMapping() {
    79          return this.mapping;
    80      }
    81
    82      /**
    83        * <p>Mock parsing of the ServletInputStream.</p>
    84        *
    85        * <p>Constructs a <code>Hashtable</code> of elements
    86        *    from the HttpServletRequest's parameters - no
    87        *    <code>FormFile</code> elements are created.</p>
    88        * @param request Mock request instance.
    89        * @throws ServletException If there is a problem with
    90        * processing the request.
    91        */
    92      public void handleRequest(HttpServletRequest request) throws ServletException {
    93          elements = new Hashtable();
    94          Enumeration enumer = request.getParameterNames();
    95          while (enumer.hasMoreElements()) {
    96              String key = enumer.nextElement().toString();
    97              elements.put(key, request.getParameter(key));
    98          }
    99      }
    100
    101     /**
    102      * This method is called on to retrieve all the text
    103      * input elements of the request.
    104      *
    105      * @return A Hashtable where the keys and values are the names and
    106      *  values of the request input parameters
    107      */
    108     public Hashtable getTextElements() {
    109         return this.elements;
    110     }
    111
    112     /**
    113      * <p>This method is called on to retrieve all the FormFile
    114      * input elements of the request.</p>
    115      *
    116      * @return This mock implementation returns an empty
    117      *    <code>Hashtable</code>
    118      */
    119     public Hashtable getFileElements() {
    120         return new Hashtable();
    121     }
    122
    123     /**
    124      * This method returns all elements of a multipart request.
    125      * @return This mock implementation returns a Hashtable where
    126      *   the keys are input names and values are either Strings
    127      *   (no FormFile elements)
    128      */
    129     public Hashtable getAllElements() {
    130         return this.elements;
    131     }
    132
    133     /**
    134      * Mock <code>rollback()</code> method does nothing.
    135      */
    136     public void rollback() {
    137         // ignore
    138     }
    139
    140     /**
    141      * Mock <code>finish()</code> method does nothing.
    142      */
    143     public void finish() {
    144         // ignore
    145     }
    146
    147 }