public class MockServletContext extends java.lang.Object implements ServletContext
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
).
MockServletContext(org.springframework.core.io.ResourceLoader)
,
AnnotationConfigWebApplicationContext
,
XmlWebApplicationContext
,
GenericWebApplicationContext
,
ClassPathXmlApplicationContext
,
FileSystemXmlApplicationContext
ORDERED_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 |
---|---|
void |
addInitParameter(java.lang.String name,
java.lang.String value) |
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 . |
int |
getEffectiveMajorVersion() |
int |
getEffectiveMinorVersion() |
java.lang.String |
getInitParameter(java.lang.String name) |
java.util.Enumeration<java.lang.String> |
getInitParameterNames() |
int |
getMajorVersion() |
java.lang.String |
getMimeType(java.lang.String filePath)
This method uses the Java Activation framework, which returns "application/octet-stream"
when the mime type is unknown (i.e.
|
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) |
java.lang.String |
getServletContextName() |
java.util.Enumeration<java.lang.String> |
getServletNames() |
java.util.Enumeration<Servlet> |
getServlets() |
void |
log(java.lang.Exception ex,
java.lang.String message) |
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 |
unregisterNamedDispatcher(java.lang.String name)
Unregister the
RequestDispatcher with the given name. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addFilter, addFilter, addFilter, addListener, addListener, addListener, addServlet, addServlet, addServlet, createFilter, createListener, createServlet, getDefaultSessionTrackingModes, getEffectiveSessionTrackingModes, getFilterRegistration, getFilterRegistrations, getJspConfigDescriptor, getServletRegistration, getServletRegistrations, getSessionCookieConfig, setSessionTrackingModes
public MockServletContext()
DefaultResourceLoader
public MockServletContext(java.lang.String resourceBasePath)
resourceBasePath
- the root directory of the WAR (should not end with a slash)DefaultResourceLoader
public MockServletContext(ResourceLoader resourceLoader)
resourceLoader
- the ResourceLoader to use (or null for the default)public MockServletContext(java.lang.String resourceBasePath, ResourceLoader resourceLoader)
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)
path
- the path as specifiedpublic void setContextPath(java.lang.String contextPath)
public java.lang.String getContextPath()
getContextPath
in interface ServletContext
public void registerContext(java.lang.String contextPath, ServletContext context)
public ServletContext getContext(java.lang.String contextPath)
getContext
in interface ServletContext
public void setMajorVersion(int majorVersion)
public int getMajorVersion()
getMajorVersion
in interface ServletContext
public void setMinorVersion(int minorVersion)
public int getMinorVersion()
getMinorVersion
in interface ServletContext
public void setEffectiveMajorVersion(int effectiveMajorVersion)
public int getEffectiveMajorVersion()
getEffectiveMajorVersion
in interface ServletContext
public void setEffectiveMinorVersion(int effectiveMinorVersion)
public int getEffectiveMinorVersion()
getEffectiveMinorVersion
in interface ServletContext
public java.lang.String getMimeType(java.lang.String filePath)
null
). In order to maintain
the ServletContext.getMimeType(String)
contract, this method returns null
if the mimeType is "application/octet-stream", as of Spring 3.2.2.getMimeType
in interface ServletContext
public java.util.Set<java.lang.String> getResourcePaths(java.lang.String path)
getResourcePaths
in interface ServletContext
public java.net.URL getResource(java.lang.String path) throws java.net.MalformedURLException
getResource
in interface ServletContext
java.net.MalformedURLException
public java.io.InputStream getResourceAsStream(java.lang.String path)
getResourceAsStream
in interface ServletContext
public RequestDispatcher getRequestDispatcher(java.lang.String path)
getRequestDispatcher
in interface ServletContext
public RequestDispatcher getNamedDispatcher(java.lang.String path)
getNamedDispatcher
in interface ServletContext
public 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".
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()
public Servlet getServlet(java.lang.String name)
getServlet
in interface ServletContext
public java.util.Enumeration<Servlet> getServlets()
getServlets
in interface ServletContext
public java.util.Enumeration<java.lang.String> getServletNames()
getServletNames
in interface ServletContext
public void log(java.lang.String message)
log
in interface ServletContext
public void log(java.lang.Exception ex, java.lang.String message)
log
in interface ServletContext
public void log(java.lang.String message, java.lang.Throwable ex)
log
in interface ServletContext
public java.lang.String getRealPath(java.lang.String path)
getRealPath
in interface ServletContext
public java.lang.String getServerInfo()
getServerInfo
in interface ServletContext
public java.lang.String getInitParameter(java.lang.String name)
getInitParameter
in interface ServletContext
public java.util.Enumeration<java.lang.String> getInitParameterNames()
getInitParameterNames
in interface ServletContext
public boolean setInitParameter(java.lang.String name, java.lang.String value)
setInitParameter
in interface ServletContext
public void addInitParameter(java.lang.String name, java.lang.String value)
public java.lang.Object getAttribute(java.lang.String name)
getAttribute
in interface ServletContext
public java.util.Enumeration<java.lang.String> getAttributeNames()
getAttributeNames
in interface ServletContext
public void setAttribute(java.lang.String name, java.lang.Object value)
setAttribute
in interface ServletContext
public void removeAttribute(java.lang.String name)
removeAttribute
in interface ServletContext
public void setServletContextName(java.lang.String servletContextName)
public java.lang.String getServletContextName()
getServletContextName
in interface ServletContext
public java.lang.ClassLoader getClassLoader()
getClassLoader
in interface ServletContext
public void declareRoles(java.lang.String... roleNames)
declareRoles
in interface ServletContext
public java.util.Set<java.lang.String> getDeclaredRoles()