View Javadoc

    1   /*
    2    * $Id: MockHttpSession.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.mock;
    22
    23  import javax.servlet.ServletContext;
    24  import javax.servlet.http.HttpSession;
    25  import javax.servlet.http.HttpSessionContext;
    26
    27  import java.util.Enumeration;
    28  import java.util.HashMap;
    29
    30  /**
    31   * <p>Mock <strong>HttpSession</strong> object for low-level unit tests of
    32   * Struts controller components.  Coarser grained tests should be implemented
    33   * in terms of the Cactus framework, instead of the mock object classes.</p>
    34   *
    35   * <p><strong>WARNING</strong> - Only the minimal set of methods needed to
    36   * create unit tests is provided, plus additional methods to configure this
    37   * object as necessary.  Methods for unsupported operations will throw
    38   * <code>UnsupportedOperationException</code>.</p>
    39   *
    40   * <p><strong>WARNING</strong> - Because unit tests operate in a single
    41   * threaded environment, no synchronization is performed.</p>
    42   *
    43   * @version $Rev: 471754 $ $Date: 2005-05-07 12:11:38 -0400 (Sat, 07 May 2005)
    44   *          $
    45   */
    46  public class MockHttpSession implements HttpSession {
    47      // ----------------------------------------------------- Instance Variables
    48
    49      /**
    50       * <p> The set of session attributes. </p>
    51       */
    52      protected HashMap attributes = new HashMap();
    53
    54      /**
    55       * <p> The ServletContext with which we are associated. </p>
    56       */
    57      protected ServletContext servletContext = null;
    58
    59      // ----------------------------------------------------------- Constructors
    60      public MockHttpSession() {
    61          super();
    62      }
    63
    64      public MockHttpSession(ServletContext servletContext) {
    65          super();
    66          setServletContext(servletContext);
    67      }
    68
    69      // --------------------------------------------------------- Public Methods
    70      public void setServletContext(ServletContext servletContext) {
    71          this.servletContext = servletContext;
    72      }
    73
    74      // ---------------------------------------------------- HttpSession Methods
    75      public Object getAttribute(String name) {
    76          return (attributes.get(name));
    77      }
    78
    79      public Enumeration getAttributeNames() {
    80          return (new MockEnumeration(attributes.keySet().iterator()));
    81      }
    82
    83      public long getCreationTime() {
    84          throw new UnsupportedOperationException();
    85      }
    86
    87      public String getId() {
    88          throw new UnsupportedOperationException();
    89      }
    90
    91      public long getLastAccessedTime() {
    92          throw new UnsupportedOperationException();
    93      }
    94
    95      public int getMaxInactiveInterval() {
    96          throw new UnsupportedOperationException();
    97      }
    98
    99      public ServletContext getServletContext() {
    100         return (this.servletContext);
    101     }
    102
    103     public HttpSessionContext getSessionContext() {
    104         throw new UnsupportedOperationException();
    105     }
    106
    107     public Object getValue(String name) {
    108         throw new UnsupportedOperationException();
    109     }
    110
    111     public String[] getValueNames() {
    112         throw new UnsupportedOperationException();
    113     }
    114
    115     public void invalidate() {
    116         throw new UnsupportedOperationException();
    117     }
    118
    119     public boolean isNew() {
    120         throw new UnsupportedOperationException();
    121     }
    122
    123     public void putValue(String name, Object value) {
    124         throw new UnsupportedOperationException();
    125     }
    126
    127     public void removeAttribute(String name) {
    128         attributes.remove(name);
    129     }
    130
    131     public void removeValue(String name) {
    132         throw new UnsupportedOperationException();
    133     }
    134
    135     public void setAttribute(String name, Object value) {
    136         if (value == null) {
    137             attributes.remove(name);
    138         } else {
    139             attributes.put(name, value);
    140         }
    141     }
    142
    143     public void setMaxInactiveInterval(int interval) {
    144         throw new UnsupportedOperationException();
    145     }
    146 }