org.springframework.mock.web

## Class MockServletContext

- java.lang.Object
- - org.springframework.mock.web.MockServletContext

All Implemented Interfaces:
  ServletContext

    public class MockServletContext
    extends Object
    implements ServletContext

Mock implementation of the `ServletContext` interface.

Compatible with Servlet 2.5 and partially with Servlet 3.0. Can be configured to expose a specific version through `setMajorVersion(int)`/`setMinorVersion(int)`; default is 2.5. Note that Servlet 3.0 support is limited: servlet, filter and listener registration methods are not supported; neither is cookie or JSP configuration. We generally do not recommend to unit-test your ServletContainerInitializers and WebApplicationInitializers which is where those registration methods would be used.

Used for testing the Spring web framework; only rarely necessary for testing application controllers. As long as application components don't explicitly access the `ServletContext`, `ClassPathXmlApplicationContext` or `FileSystemXmlApplicationContext` can be used to load the context files for testing, even for `DispatcherServlet` context definitions.

For setting up a full `WebApplicationContext` in a test environment, you can use `AnnotationConfigWebApplicationContext`, `XmlWebApplicationContext`, or `GenericWebApplicationContext`, passing in an appropriate `MockServletContext` instance. You might want to configure your `MockServletContext` with a `FileSystemResourceLoader` in that case to ensure that resource paths are interpreted as relative filesystem locations.

A common setup is to point your JVM working directory to the root of your web application directory, in combination with filesystem-based resource loading. This allows to load the context files as used in the web application, with relative paths getting interpreted correctly. Such a setup will work with both `FileSystemXmlApplicationContext` (which will load straight from the filesystem) and `XmlWebApplicationContext` with an underlying `MockServletContext` (as long as the `MockServletContext` has been configured with a `FileSystemResourceLoader`).

Since:
  1.0.2
Author:
  Rod Johnson, Juergen Hoeller, Sam Brannen
See Also:
  `MockServletContext(org.springframework.core.io.ResourceLoader)`, `AnnotationConfigWebApplicationContext`, `XmlWebApplicationContext`, `GenericWebApplicationContext`, `ClassPathXmlApplicationContext`, `FileSystemXmlApplicationContext`

### Field Summary

### Fields inherited from interface javax.servlet.ServletContext

`ORDERED_LIBS, TEMPDIR`

### Constructor Summary

Constructors
Constructor and Description
`MockServletContext()` Create a new MockServletContext, using no base path and a DefaultResourceLoader (i.e.
`MockServletContext(ResourceLoader resourceLoader)` Create a new MockServletContext, using the specified ResourceLoader and no base path.
`MockServletContext(String resourceBasePath)` Create a new MockServletContext, using a DefaultResourceLoader.
`MockServletContext(String resourceBasePath, ResourceLoader resourceLoader)` Create a new MockServletContext using the supplied resource base path and resource loader.

### Method Summary

Methods
`void` `addInitParameter(String name, String value)`
`void` `declareRoles(String... roleNames)`
`Object` `getAttribute(String name)`
`Enumeration<String>` `getAttributeNames()`
`ClassLoader` `getClassLoader()`
`ServletContext` `getContext(String contextPath)`
`String` `getContextPath()`
`Set<String>` `getDeclaredRoles()`
`String` `getDefaultServletName()` Get the name of the default `Servlet`.
`int` `getEffectiveMajorVersion()`
`int` `getEffectiveMinorVersion()`
`String` `getInitParameter(String name)`
`Enumeration<String>` `getInitParameterNames()`
`int` `getMajorVersion()`
`String` `getMimeType(String filePath)`
`int` `getMinorVersion()`
`RequestDispatcher` `getNamedDispatcher(String path)`
`String` `getRealPath(String path)`
`RequestDispatcher` `getRequestDispatcher(String path)`
`URL` `getResource(String path)`
`InputStream` `getResourceAsStream(String path)`
`protected String` `getResourceLocation(String path)` Build a full resource location for the given path, prepending the resource base path of this MockServletContext.
`Set<String>` `getResourcePaths(String path)`
`String` `getServerInfo()`
`Servlet` `getServlet(String name)`
`String` `getServletContextName()`
`Enumeration<String>` `getServletNames()`
`Enumeration<Servlet>` `getServlets()`
`void` `log(Exception ex, String message)`
`void` `log(String message)`
`void` `log(String message, Throwable ex)`
`void` `registerContext(String contextPath, ServletContext context)`
`void` `registerNamedDispatcher(String name, RequestDispatcher requestDispatcher)` Register a `RequestDispatcher` (typically a `MockRequestDispatcher`) that acts as a wrapper for the named Servlet.
`void` `removeAttribute(String name)`
`void` `setAttribute(String name, Object value)`
`void` `setContextPath(String contextPath)`
`void` `setDefaultServletName(String defaultServletName)` Set the name of the default `Servlet`.
`void` `setEffectiveMajorVersion(int effectiveMajorVersion)`
`void` `setEffectiveMinorVersion(int effectiveMinorVersion)`
`boolean` `setInitParameter(String name, String value)`
`void` `setMajorVersion(int majorVersion)`
`void` `setMinorVersion(int minorVersion)`
`void` `setServletContextName(String servletContextName)`
`void` `unregisterNamedDispatcher(String name)` Unregister the `RequestDispatcher` with the given name.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface javax.servlet.ServletContext

`addFilter, addFilter, addFilter, addListener, addListener, addListener, addServlet, addServlet, addServlet, createFilter, createListener, createServlet, getDefaultSessionTrackingModes, getEffectiveSessionTrackingModes, getFilterRegistration, getFilterRegistrations, getJspConfigDescriptor, getServletRegistration, getServletRegistrations, getSessionCookieConfig, setSessionTrackingModes`

### Constructor Detail

#### MockServletContext

    public MockServletContext()

Create a new MockServletContext, using no base path and a DefaultResourceLoader (i.e. the classpath root as WAR root).

See Also:
  `DefaultResourceLoader`

#### MockServletContext

    public MockServletContext(String resourceBasePath)

Create a new MockServletContext, using a DefaultResourceLoader.

Parameters:
  `resourceBasePath` - the root directory of the WAR (should not end with a slash)
See Also:
  `DefaultResourceLoader`

#### MockServletContext

    public MockServletContext(ResourceLoader resourceLoader)

Create a new MockServletContext, using the specified ResourceLoader and no base path.

Parameters:
  `resourceLoader` - the ResourceLoader to use (or null for the default)

#### MockServletContext

    public MockServletContext(String resourceBasePath,
                      ResourceLoader resourceLoader)

Create a new MockServletContext using the supplied resource base path and resource loader.

Registers a `MockRequestDispatcher` for the Servlet named "default".

Parameters:
  `resourceBasePath` - the root directory of the WAR (should not end with a slash)
  `resourceLoader` - the ResourceLoader to use (or null for the default)
See Also:
  `registerNamedDispatcher(java.lang.String, javax.servlet.RequestDispatcher)`

### Method Detail

#### getResourceLocation

    protected String getResourceLocation(String path)

Build a full resource location for the given path, prepending the resource base path of this MockServletContext.

Parameters:
  `path` - the path as specified
Returns:
  the full resource path

#### setContextPath

    public void setContextPath(String contextPath)

#### getContextPath

    public String getContextPath()

Specified by:
  `getContextPath` in interface `ServletContext`

#### registerContext

    public void registerContext(String contextPath,
                       ServletContext context)

#### getContext

    public ServletContext getContext(String contextPath)

Specified by:
  `getContext` in interface `ServletContext`

#### setMajorVersion

    public void setMajorVersion(int majorVersion)

#### getMajorVersion

    public int getMajorVersion()

Specified by:
  `getMajorVersion` in interface `ServletContext`

#### setMinorVersion

    public void setMinorVersion(int minorVersion)

#### getMinorVersion

    public int getMinorVersion()

Specified by:
  `getMinorVersion` in interface `ServletContext`

#### setEffectiveMajorVersion

    public void setEffectiveMajorVersion(int effectiveMajorVersion)

#### getEffectiveMajorVersion

    public int getEffectiveMajorVersion()

Specified by:
  `getEffectiveMajorVersion` in interface `ServletContext`

#### setEffectiveMinorVersion

    public void setEffectiveMinorVersion(int effectiveMinorVersion)

#### getEffectiveMinorVersion

    public int getEffectiveMinorVersion()

Specified by:
  `getEffectiveMinorVersion` in interface `ServletContext`

#### getMimeType

    public String getMimeType(String filePath)

Specified by:
  `getMimeType` in interface `ServletContext`

#### getResourcePaths

    public Set<String> getResourcePaths(String path)

Specified by:
  `getResourcePaths` in interface `ServletContext`

#### getResource

    public URL getResource(String path)
                    throws MalformedURLException

Specified by:
  `getResource` in interface `ServletContext`
Throws:
  `MalformedURLException`

#### getResourceAsStream

    public InputStream getResourceAsStream(String path)

Specified by:
  `getResourceAsStream` in interface `ServletContext`

#### getRequestDispatcher

    public RequestDispatcher getRequestDispatcher(String path)

Specified by:
  `getRequestDispatcher` in interface `ServletContext`

#### getNamedDispatcher

    public RequestDispatcher getNamedDispatcher(String path)

Specified by:
  `getNamedDispatcher` in interface `ServletContext`

#### registerNamedDispatcher

    public void registerNamedDispatcher(String name,
                               RequestDispatcher requestDispatcher)

Register a `RequestDispatcher` (typically a `MockRequestDispatcher`) that acts as a wrapper for the named Servlet.

Parameters:
  `name` - the name of the wrapped Servlet
  `requestDispatcher` - the dispatcher that wraps the named Servlet
See Also:
  `getNamedDispatcher(java.lang.String)`, `unregisterNamedDispatcher(java.lang.String)`

#### unregisterNamedDispatcher

    public void unregisterNamedDispatcher(String name)

Unregister the `RequestDispatcher` with the given name.

Parameters:
  `name` - the name of the dispatcher to unregister
See Also:
  `getNamedDispatcher(java.lang.String)`, `registerNamedDispatcher(java.lang.String, javax.servlet.RequestDispatcher)`

#### getDefaultServletName

    public String getDefaultServletName()

Get the name of the default `Servlet`.

Defaults to "default".

See Also:
  `setDefaultServletName(java.lang.String)`

#### setDefaultServletName

    public void setDefaultServletName(String defaultServletName)

Set the name of the default `Servlet`.

Also `unregisters` the current default `RequestDispatcher` and `replaces` it with a `MockRequestDispatcher` for the provided `defaultServletName`.

Parameters:
  `defaultServletName` - the name of the default `Servlet`; never `null` or empty
See Also:
  `getDefaultServletName()`

#### getServlet

    public Servlet getServlet(String name)

Specified by:
  `getServlet` in interface `ServletContext`

#### getServlets

    public Enumeration<Servlet> getServlets()

Specified by:
  `getServlets` in interface `ServletContext`

#### getServletNames

    public Enumeration<String> getServletNames()

Specified by:
  `getServletNames` in interface `ServletContext`

#### log

    public void log(String message)

Specified by:
  `log` in interface `ServletContext`

#### log

    public void log(Exception ex,
           String message)

Specified by:
  `log` in interface `ServletContext`

#### log

    public void log(String message,
           Throwable ex)

Specified by:
  `log` in interface `ServletContext`

#### getRealPath

    public String getRealPath(String path)

Specified by:
  `getRealPath` in interface `ServletContext`

#### getServerInfo

    public String getServerInfo()

Specified by:
  `getServerInfo` in interface `ServletContext`

#### getInitParameter

    public String getInitParameter(String name)

Specified by:
  `getInitParameter` in interface `ServletContext`

#### getInitParameterNames

    public Enumeration<String> getInitParameterNames()

Specified by:
  `getInitParameterNames` in interface `ServletContext`

#### setInitParameter

    public boolean setInitParameter(String name,
                           String value)

Specified by:
  `setInitParameter` in interface `ServletContext`

#### addInitParameter

    public void addInitParameter(String name,
                        String value)

#### getAttribute

    public Object getAttribute(String name)

Specified by:
  `getAttribute` in interface `ServletContext`

#### getAttributeNames

    public Enumeration<String> getAttributeNames()

Specified by:
  `getAttributeNames` in interface `ServletContext`

#### setAttribute

    public void setAttribute(String name,
                    Object value)

Specified by:
  `setAttribute` in interface `ServletContext`

#### removeAttribute

    public void removeAttribute(String name)

Specified by:
  `removeAttribute` in interface `ServletContext`

#### setServletContextName

    public void setServletContextName(String servletContextName)

#### getServletContextName

    public String getServletContextName()

Specified by:
  `getServletContextName` in interface `ServletContext`

#### getClassLoader

    public ClassLoader getClassLoader()

Specified by:
  `getClassLoader` in interface `ServletContext`

#### declareRoles

    public void declareRoles(String... roleNames)

Specified by:
  `declareRoles` in interface `ServletContext`

#### getDeclaredRoles

    public Set<String> getDeclaredRoles()