public class MockServletContext extends java.lang.Object implements ServletContext
ServletContext interface.
As of Spring 4.0, this set of mocks is designed on a Servlet 3.0 baseline.
Compatible with Servlet 3.0 but can be configured to expose a specific version
through setMajorVersion(int)/setMinorVersion(int); default is 3.0.
Note that Servlet 3.0 support is limited: servlet, filter and listener
registration methods are not supported; neither is 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).
MockServletContext(org.springframework.core.io.ResourceLoader),
AnnotationConfigWebApplicationContext,
XmlWebApplicationContext,
GenericWebApplicationContext,
ClassPathXmlApplicationContext,
FileSystemXmlApplicationContextORDERED_LIBS, TEMPDIR| 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(java.lang.String resourceBasePath)
Create a new
MockServletContext, using a DefaultResourceLoader. |
MockServletContext(java.lang.String resourceBasePath,
ResourceLoader resourceLoader)
Create a new
MockServletContext using the supplied resource base
path and resource loader. |
| Modifier and Type | Method and Description |
|---|---|
FilterRegistration.Dynamic |
addFilter(java.lang.String filterName,
java.lang.Class<? extends Filter> filterClass) |
FilterRegistration.Dynamic |
addFilter(java.lang.String filterName,
Filter filter) |
FilterRegistration.Dynamic |
addFilter(java.lang.String filterName,
java.lang.String className) |
void |
addInitParameter(java.lang.String name,
java.lang.String value) |
void |
addListener(java.lang.Class<? extends java.util.EventListener> listenerClass) |
void |
addListener(java.lang.String className) |
<T extends java.util.EventListener> |
addListener(T t) |
ServletRegistration.Dynamic |
addServlet(java.lang.String servletName,
java.lang.Class<? extends Servlet> servletClass) |
ServletRegistration.Dynamic |
addServlet(java.lang.String servletName,
Servlet servlet) |
ServletRegistration.Dynamic |
addServlet(java.lang.String servletName,
java.lang.String className) |
<T extends Filter> |
createFilter(java.lang.Class<T> c) |
<T extends java.util.EventListener> |
createListener(java.lang.Class<T> c) |
<T extends Servlet> |
createServlet(java.lang.Class<T> c) |
void |
declareRoles(java.lang.String... roleNames) |
java.lang.Object |
getAttribute(java.lang.String name) |
java.util.Enumeration<java.lang.String> |
getAttributeNames() |
java.lang.ClassLoader |
getClassLoader() |
ServletContext |
getContext(java.lang.String contextPath) |
java.lang.String |
getContextPath() |
java.util.Set<java.lang.String> |
getDeclaredRoles() |
java.lang.String |
getDefaultServletName()
Get the name of the default
Servlet. |
java.util.Set<SessionTrackingMode> |
getDefaultSessionTrackingModes() |
int |
getEffectiveMajorVersion() |
int |
getEffectiveMinorVersion() |
java.util.Set<SessionTrackingMode> |
getEffectiveSessionTrackingModes() |
FilterRegistration |
getFilterRegistration(java.lang.String filterName)
This method always returns
null. |
java.util.Map<java.lang.String,? extends FilterRegistration> |
getFilterRegistrations()
This method always returns an empty map.
|
java.lang.String |
getInitParameter(java.lang.String name) |
java.util.Enumeration<java.lang.String> |
getInitParameterNames() |
JspConfigDescriptor |
getJspConfigDescriptor() |
int |
getMajorVersion() |
java.lang.String |
getMimeType(java.lang.String filePath)
This method uses the default
FileTypeMap
from the Java Activation Framework to resolve MIME types. |
int |
getMinorVersion() |
RequestDispatcher |
getNamedDispatcher(java.lang.String path) |
java.lang.String |
getRealPath(java.lang.String path) |
RequestDispatcher |
getRequestDispatcher(java.lang.String path) |
java.net.URL |
getResource(java.lang.String path) |
java.io.InputStream |
getResourceAsStream(java.lang.String path) |
protected java.lang.String |
getResourceLocation(java.lang.String path)
Build a full resource location for the given path, prepending the resource
base path of this
MockServletContext. |
java.util.Set<java.lang.String> |
getResourcePaths(java.lang.String path) |
java.lang.String |
getServerInfo() |
Servlet |
getServlet(java.lang.String name)
Deprecated.
|
java.lang.String |
getServletContextName() |
java.util.Enumeration<java.lang.String> |
getServletNames()
Deprecated.
|
ServletRegistration |
getServletRegistration(java.lang.String servletName)
This method always returns
null. |
java.util.Map<java.lang.String,? extends ServletRegistration> |
getServletRegistrations()
This method always returns an empty map.
|
java.util.Enumeration<Servlet> |
getServlets()
Deprecated.
|
SessionCookieConfig |
getSessionCookieConfig() |
void |
log(java.lang.Exception ex,
java.lang.String message)
Deprecated.
|
void |
log(java.lang.String message) |
void |
log(java.lang.String message,
java.lang.Throwable ex) |
void |
registerContext(java.lang.String contextPath,
ServletContext context) |
void |
registerNamedDispatcher(java.lang.String name,
RequestDispatcher requestDispatcher)
Register a
RequestDispatcher (typically a MockRequestDispatcher)
that acts as a wrapper for the named Servlet. |
void |
removeAttribute(java.lang.String name) |
void |
setAttribute(java.lang.String name,
java.lang.Object value) |
void |
setContextPath(java.lang.String contextPath) |
void |
setDefaultServletName(java.lang.String defaultServletName)
Set the name of the default
Servlet. |
void |
setEffectiveMajorVersion(int effectiveMajorVersion) |
void |
setEffectiveMinorVersion(int effectiveMinorVersion) |
boolean |
setInitParameter(java.lang.String name,
java.lang.String value) |
void |
setMajorVersion(int majorVersion) |
void |
setMinorVersion(int minorVersion) |
void |
setServletContextName(java.lang.String servletContextName) |
void |
setSessionTrackingModes(java.util.Set<SessionTrackingMode> sessionTrackingModes) |
void |
unregisterNamedDispatcher(java.lang.String name)
Unregister the
RequestDispatcher with the given name. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetVirtualServerNamepublic MockServletContext()
MockServletContext, using no base path and a
DefaultResourceLoader (i.e. the classpath root as WAR root).DefaultResourceLoaderpublic MockServletContext(java.lang.String resourceBasePath)
MockServletContext, using a DefaultResourceLoader.resourceBasePath - the root directory of the WAR (should not end with a slash)DefaultResourceLoaderpublic MockServletContext(ResourceLoader resourceLoader)
MockServletContext, using the specified ResourceLoader
and no base path.resourceLoader - the ResourceLoader to use (or null for the default)public MockServletContext(java.lang.String resourceBasePath,
ResourceLoader resourceLoader)
MockServletContext using the supplied resource base
path and resource loader.
Registers a MockRequestDispatcher for the Servlet named
'default'.
resourceBasePath - the root directory of the WAR (should not end with a slash)resourceLoader - the ResourceLoader to use (or null for the default)registerNamedDispatcher(java.lang.String, javax.servlet.RequestDispatcher)protected java.lang.String getResourceLocation(java.lang.String path)
MockServletContext.path - the path as specifiedpublic void setContextPath(java.lang.String contextPath)
public java.lang.String getContextPath()
getContextPath in interface ServletContextpublic void registerContext(java.lang.String contextPath,
ServletContext context)
public ServletContext getContext(java.lang.String contextPath)
getContext in interface ServletContextpublic void setMajorVersion(int majorVersion)
public int getMajorVersion()
getMajorVersion in interface ServletContextpublic void setMinorVersion(int minorVersion)
public int getMinorVersion()
getMinorVersion in interface ServletContextpublic void setEffectiveMajorVersion(int effectiveMajorVersion)
public int getEffectiveMajorVersion()
getEffectiveMajorVersion in interface ServletContextpublic void setEffectiveMinorVersion(int effectiveMinorVersion)
public int getEffectiveMinorVersion()
getEffectiveMinorVersion in interface ServletContextpublic java.lang.String getMimeType(java.lang.String filePath)
FileTypeMap
from the Java Activation Framework to resolve MIME types.
The Java Activation Framework returns "application/octet-stream"
if the MIME type is unknown (i.e., it never returns null). Thus, in
order to honor the ServletContext.getMimeType(String) contract,
this method returns null if the MIME type is
"application/octet-stream".
MockServletContext does not provide a direct mechanism for
setting a custom MIME type; however, if the default FileTypeMap
is an instance of javax.activation.MimetypesFileTypeMap, a custom
MIME type named text/enigma can be registered for a custom
.puzzle file extension in the following manner:
MimetypesFileTypeMap mimetypesFileTypeMap = (MimetypesFileTypeMap) FileTypeMap.getDefaultFileTypeMap();
mimetypesFileTypeMap.addMimeTypes("text/enigma puzzle");
getMimeType in interface ServletContextpublic java.util.Set<java.lang.String> getResourcePaths(java.lang.String path)
getResourcePaths in interface ServletContextpublic java.net.URL getResource(java.lang.String path)
throws java.net.MalformedURLException
getResource in interface ServletContextjava.net.MalformedURLExceptionpublic java.io.InputStream getResourceAsStream(java.lang.String path)
getResourceAsStream in interface ServletContextpublic RequestDispatcher getRequestDispatcher(java.lang.String path)
getRequestDispatcher in interface ServletContextpublic RequestDispatcher getNamedDispatcher(java.lang.String path)
getNamedDispatcher in interface ServletContextpublic void registerNamedDispatcher(java.lang.String name,
RequestDispatcher requestDispatcher)
RequestDispatcher (typically a MockRequestDispatcher)
that acts as a wrapper for the named Servlet.name - the name of the wrapped ServletrequestDispatcher - the dispatcher that wraps the named ServletgetNamedDispatcher(java.lang.String),
unregisterNamedDispatcher(java.lang.String)public void unregisterNamedDispatcher(java.lang.String name)
RequestDispatcher with the given name.name - the name of the dispatcher to unregistergetNamedDispatcher(java.lang.String),
registerNamedDispatcher(java.lang.String, javax.servlet.RequestDispatcher)public java.lang.String getDefaultServletName()
Servlet.
Defaults to 'default'.
setDefaultServletName(java.lang.String)public void setDefaultServletName(java.lang.String defaultServletName)
Servlet.
Also unregisters the current default
RequestDispatcher and replaces
it with a MockRequestDispatcher for the provided
defaultServletName.
defaultServletName - the name of the default Servlet;
never null or emptygetDefaultServletName()@Deprecated public Servlet getServlet(java.lang.String name)
getServlet in interface ServletContext@Deprecated public java.util.Enumeration<Servlet> getServlets()
getServlets in interface ServletContext@Deprecated public java.util.Enumeration<java.lang.String> getServletNames()
getServletNames in interface ServletContextpublic void log(java.lang.String message)
log in interface ServletContext@Deprecated
public void log(java.lang.Exception ex,
java.lang.String message)
log in interface ServletContextpublic void log(java.lang.String message,
java.lang.Throwable ex)
log in interface ServletContextpublic java.lang.String getRealPath(java.lang.String path)
getRealPath in interface ServletContextpublic java.lang.String getServerInfo()
getServerInfo in interface ServletContextpublic java.lang.String getInitParameter(java.lang.String name)
getInitParameter in interface ServletContextpublic java.util.Enumeration<java.lang.String> getInitParameterNames()
getInitParameterNames in interface ServletContextpublic boolean setInitParameter(java.lang.String name,
java.lang.String value)
setInitParameter in interface ServletContextpublic void addInitParameter(java.lang.String name,
java.lang.String value)
public java.lang.Object getAttribute(java.lang.String name)
getAttribute in interface ServletContextpublic java.util.Enumeration<java.lang.String> getAttributeNames()
getAttributeNames in interface ServletContextpublic void setAttribute(java.lang.String name,
java.lang.Object value)
setAttribute in interface ServletContextpublic void removeAttribute(java.lang.String name)
removeAttribute in interface ServletContextpublic void setServletContextName(java.lang.String servletContextName)
public java.lang.String getServletContextName()
getServletContextName in interface ServletContextpublic java.lang.ClassLoader getClassLoader()
getClassLoader in interface ServletContextpublic void declareRoles(java.lang.String... roleNames)
declareRoles in interface ServletContextpublic java.util.Set<java.lang.String> getDeclaredRoles()
public void setSessionTrackingModes(java.util.Set<SessionTrackingMode> sessionTrackingModes) throws java.lang.IllegalStateException, java.lang.IllegalArgumentException
setSessionTrackingModes in interface ServletContextjava.lang.IllegalStateExceptionjava.lang.IllegalArgumentExceptionpublic java.util.Set<SessionTrackingMode> getDefaultSessionTrackingModes()
getDefaultSessionTrackingModes in interface ServletContextpublic java.util.Set<SessionTrackingMode> getEffectiveSessionTrackingModes()
getEffectiveSessionTrackingModes in interface ServletContextpublic SessionCookieConfig getSessionCookieConfig()
getSessionCookieConfig in interface ServletContextpublic JspConfigDescriptor getJspConfigDescriptor()
getJspConfigDescriptor in interface ServletContextpublic ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.String className)
addServlet in interface ServletContextpublic ServletRegistration.Dynamic addServlet(java.lang.String servletName, Servlet servlet)
addServlet in interface ServletContextpublic ServletRegistration.Dynamic addServlet(java.lang.String servletName, java.lang.Class<? extends Servlet> servletClass)
addServlet in interface ServletContextpublic <T extends Servlet> T createServlet(java.lang.Class<T> c) throws ServletException
createServlet in interface ServletContextServletExceptionpublic ServletRegistration getServletRegistration(java.lang.String servletName)
null.getServletRegistration in interface ServletContextServletContext.getServletRegistration(java.lang.String)public java.util.Map<java.lang.String,? extends ServletRegistration> getServletRegistrations()
getServletRegistrations in interface ServletContextServletContext.getServletRegistrations()public FilterRegistration.Dynamic addFilter(java.lang.String filterName, java.lang.String className)
addFilter in interface ServletContextpublic FilterRegistration.Dynamic addFilter(java.lang.String filterName, Filter filter)
addFilter in interface ServletContextpublic FilterRegistration.Dynamic addFilter(java.lang.String filterName, java.lang.Class<? extends Filter> filterClass)
addFilter in interface ServletContextpublic <T extends Filter> T createFilter(java.lang.Class<T> c) throws ServletException
createFilter in interface ServletContextServletExceptionpublic FilterRegistration getFilterRegistration(java.lang.String filterName)
null.getFilterRegistration in interface ServletContextServletContext.getFilterRegistration(java.lang.String)public java.util.Map<java.lang.String,? extends FilterRegistration> getFilterRegistrations()
getFilterRegistrations in interface ServletContextServletContext.getFilterRegistrations()public void addListener(java.lang.Class<? extends java.util.EventListener> listenerClass)
addListener in interface ServletContextpublic void addListener(java.lang.String className)
addListener in interface ServletContextpublic <T extends java.util.EventListener> void addListener(T t)
addListener in interface ServletContextpublic <T extends java.util.EventListener> T createListener(java.lang.Class<T> c)
throws ServletException
createListener in interface ServletContextServletException