Class MockServletContext

java.lang.Object
com.avoka.tm.test.MockServletContext
All Implemented Interfaces:
jakarta.servlet.ServletContext

public class MockServletContext extends Object implements jakarta.servlet.ServletContext

Mock implementation of ServletContext.

This implementation supports all of the standard context methods except for request dispatching which just indicates what is being dispatched to, rather than performing an actual dispatch.

The context can be configured with a path parameter that should point to an directory location that represents the place where the contents of the WAR bundle are located. The path can either be an absolute or relative path. If the path is not found, the classpath will be checked for such a directory. Setting this value allows all of the resource location functionality to work as in a fully functioning web application. If this value is not set then not resource location functionality will work and instead null will always be returned.

This class was adapted from Apache Wicket.

Since:
17.10.0
  • Field Details

    • DEFAULT_CONTEXT_PATH

      public static final String DEFAULT_CONTEXT_PATH
      The servlet context default context path, "/mock".
      See Also:
  • Constructor Details

    • MockServletContext

      public MockServletContext()
      Default constructor for this mock object. The servlet context name is set to 'mock'. The web content root and temporary work direcotry are set to null.
    • MockServletContext

      public MockServletContext(String contextPath, String webappPath)

      Create the mock object. As part of the creation, the context sets the root directory where web application content is stored. This must be an ABSOLUTE directory relative to where the tests are being executed.

      For example: System.getProperty("user.dir") + "/src/webapp"

      In addition to setting the web root directory, this constructor also sets up a temporary work directory for things like file uploads.

      Note this temporary work directory is set as the value of the ServletContext attribute 'jakarta.servlet.context.tempdir'.

      The temporary work directory defaults to System.getProperty("java.io.tmpdir").

      Parameters:
      contextPath - the servlet context path
      webappPath - The path to the root of the web application
    • MockServletContext

      public MockServletContext(String contextPath, String webappPath, String tempPath)

      Create the mock object. As part of the creation, the context sets the root directory where web application content is stored. This must be an ABSOLUTE directory relative to where the tests are being executed.

      For example: System.getProperty("user.dir") + "/src/webapp"

      In addition to setting the web root directory, this constructor also sets up a temporary work directory for things like file uploads.

      Note this temporary work directory is set as the value of the ServletContext attribute 'jakarta.servlet.context.tempdir'.

      Parameters:
      contextPath - the servlet context path
      webappPath - the path to the root of the web application
      tempPath - the temporary work directory
  • Method Details

    • createWebappRoot

      public void createWebappRoot()
      Creates the web application root File getWebappRoot().
    • createTempDir

      public void createTempDir()
      Creates a temporary directory as specified by getTempPath().
    • setServletContextName

      public void setServletContextName(String servletContextName)
      Set the servlet context name to the specified value.
      Parameters:
      servletContextName - the servlet context name
    • getTempPath

      public String getTempPath()
      Return the temporary path where files are stored during test runs.
      Returns:
      the temporary path where files are stored during test runs
    • setTempPath

      public void setTempPath(String tempPath)
      Set the temporary path where files are stored during test runs.
      Parameters:
      tempPath - the temporary path where files are stored during test runs
    • getWebappPath

      public String getWebappPath()
      Return the web application path where resources like javascript, css and images can be picked up.
      Returns:
      the web application path
    • getWebappRoot

      public File getWebappRoot()
      Return the web application root File where resources like javascript, css and images can be picked up.
      Returns:
      the web application root File
    • setWebappPath

      public void setWebappPath(String webappPath)

      Sets the mock web application path to the specified webappPath.

      Note: this method will also set the web application's temporary directory to the value getTempPath(). If getTempPath() is not set, this method will default tempPath to: System.getProperty("java.io.tmpdir").

      Parameters:
      webappPath - set the context web application path
    • addInitParameter

      public void addInitParameter(String name, String value)
      Add an init parameter.
      Parameters:
      name - The parameter name
      value - The parameter value
    • addInitParameters

      public void addInitParameters(Map<String,String> initParameters)
      Add the map of init parameters.
      Parameters:
      initParameters - A map of init parameters
    • addMimeType

      public void addMimeType(String fileExtension, String mimeType)
      Add a new recognized mime type.
      Parameters:
      fileExtension - The file extension (e.g. "jpg")
      mimeType - The mime type (e.g. "image/jpeg")
    • getAttribute

      public Object getAttribute(String name)
      Get an attribute with the given name.
      Specified by:
      getAttribute in interface jakarta.servlet.ServletContext
      Parameters:
      name - The attribute name
      Returns:
      The value, or null
    • getAttributeNames

      public Enumeration<String> getAttributeNames()
      Get all of the attribute names.
      Specified by:
      getAttributeNames in interface jakarta.servlet.ServletContext
      Returns:
      The attribute names
    • getContext

      public jakarta.servlet.ServletContext getContext(String name)
      Get the context for the given URL path.
      Specified by:
      getContext in interface jakarta.servlet.ServletContext
      Parameters:
      name - The url path
      Returns:
      Always returns this
    • getContextPath

      public String getContextPath()
      Return the servlet context path.
      Specified by:
      getContextPath in interface jakarta.servlet.ServletContext
      Returns:
      the servletContext path
    • setContextPath

      public void setContextPath(String contextPath)
      Sets the servlet context path.
      Parameters:
      contextPath - the servlet context path
    • getInitParameter

      public String getInitParameter(String name)
      Get the init parameter with the given name.
      Specified by:
      getInitParameter in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name
      Returns:
      The parameter, or null if no such parameter
    • getInitParameterNames

      public Enumeration<String> getInitParameterNames()
      Get the name of all of the init parameters.
      Specified by:
      getInitParameterNames in interface jakarta.servlet.ServletContext
      Returns:
      The init parameter names
    • getMajorVersion

      public int getMajorVersion()
      Return the major version of the Servlet spec that this package supports, defaults to 2.
      Specified by:
      getMajorVersion in interface jakarta.servlet.ServletContext
      Returns:
      the major version of the Servlet spec that this package supports, defaults to 2.
    • getMimeType

      public String getMimeType(String name)
      Get the mime type for the given file. Uses a hardcoded map of mime types set at initialization time. If the mime type was not explicitly set, this method will fallback to
      Specified by:
      getMimeType in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name to get the mime type for
      Returns:
      The mime type
    • getMinorVersion

      public int getMinorVersion()
      Return the minor version of the Servlet spec that this package supports, defaults to 3.
      Specified by:
      getMinorVersion in interface jakarta.servlet.ServletContext
      Returns:
      the minor version of the Servlet spec that this package supports, defaults to 3.
    • getRealPath

      public String getRealPath(String name)
      Get the real file path of the given resource name.
      Specified by:
      getRealPath in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name
      Returns:
      The real path or null
    • getRequestDispatcher

      public jakarta.servlet.RequestDispatcher getRequestDispatcher(String path)
      Returns a RequestDispatcher for the specified path. The dispatcher will not dispatch to the resource. It only records the specified path so that one can test if the correct path was dispatched to.
      Specified by:
      getRequestDispatcher in interface jakarta.servlet.ServletContext
      Parameters:
      path - a String specifying the pathname to the resource
      Returns:
      a dispatcher for the specified path
    • getNamedDispatcher

      public jakarta.servlet.RequestDispatcher getNamedDispatcher(String name)
      Returns a RequestDispatcher for the specified name. The dispatcher will not dispatch to the resource. It only records the specified name so that one can test if the correct name was dispatched to.
      Specified by:
      getNamedDispatcher in interface jakarta.servlet.ServletContext
      Parameters:
      name - a String specifying the name of a servlet to wrap
      Returns:
      a dispatcher for the specified name
    • getResource

      public URL getResource(String name) throws MalformedURLException
      Get the URL for a particular resource that is relative to the web app root directory.
      Specified by:
      getResource in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name of the resource to get
      Returns:
      The resource, or null if resource not found
      Throws:
      MalformedURLException - If the URL is invalid
    • getResourceAsStream

      public InputStream getResourceAsStream(String name)
      Get an input stream for a particular resource that is relative to the web app root directory or the current classpath. If the webappRoot is not set, this method will try and load the resource from the classpath.
      Specified by:
      getResourceAsStream in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name of the resource to get
      Returns:
      The input stream for the resource, or null if resource is not found
    • getResourcePaths

      public Set<String> getResourcePaths(String name)
      Get the resource paths starting from the web app root directory and then relative to the given name.
      Specified by:
      getResourcePaths in interface jakarta.servlet.ServletContext
      Parameters:
      name - The starting name
      Returns:
      The set of resource paths at this location
    • getServerInfo

      public String getServerInfo()
      Get the server info.
      Specified by:
      getServerInfo in interface jakarta.servlet.ServletContext
      Returns:
      The server info
    • getServlet

      public jakarta.servlet.Servlet getServlet(String name)
      NOT USED - Servlet Spec requires that this always returns null.
      Parameters:
      name - Not used
      Returns:
      null
    • getServletContextName

      public String getServletContextName()
      Return the name of the servlet context.
      Specified by:
      getServletContextName in interface jakarta.servlet.ServletContext
      Returns:
      The name
    • getServletNames

      public Enumeration<String> getServletNames()
      NOT USED - Servlet spec requires that this always returns null.
      Returns:
      null
    • getServlets

      public Enumeration<jakarta.servlet.Servlet> getServlets()
      NOT USED - Servlet spec requires that this always returns null.
      Returns:
      null
    • log

      public void log(Exception e, String msg)
      Log the exception to System.err and the message to System.out.
      Parameters:
      e - The exception to log
      msg - The message to log
    • log

      public void log(String msg)
      Log the message to System.out.
      Specified by:
      log in interface jakarta.servlet.ServletContext
      Parameters:
      msg - The message to log
    • log

      public void log(String msg, Throwable cause)
      Log the cause to System.err and the message to System.out.
      Specified by:
      log in interface jakarta.servlet.ServletContext
      Parameters:
      msg - The message to log
      cause - The cause exception
    • removeAttribute

      public void removeAttribute(String name)
      Remove an attribute with the given name.
      Specified by:
      removeAttribute in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name
    • setAttribute

      public void setAttribute(String name, Object o)
      Set an attribute.
      Specified by:
      setAttribute in interface jakarta.servlet.ServletContext
      Parameters:
      name - The name of the attribute
      o - The value
    • setResponseCharacterEncoding

      public void setResponseCharacterEncoding(String encoding)
      Specified by:
      setResponseCharacterEncoding in interface jakarta.servlet.ServletContext
    • getResponseCharacterEncoding

      public String getResponseCharacterEncoding()
      Specified by:
      getResponseCharacterEncoding in interface jakarta.servlet.ServletContext
    • setRequestCharacterEncoding

      public void setRequestCharacterEncoding(String encoding)
      Specified by:
      setRequestCharacterEncoding in interface jakarta.servlet.ServletContext
    • getRequestCharacterEncoding

      public String getRequestCharacterEncoding()
      Specified by:
      getRequestCharacterEncoding in interface jakarta.servlet.ServletContext
    • setSessionTimeout

      public void setSessionTimeout(int time)
      Specified by:
      setSessionTimeout in interface jakarta.servlet.ServletContext
    • getSessionTimeout

      public int getSessionTimeout()
      Specified by:
      getSessionTimeout in interface jakarta.servlet.ServletContext
    • addJspFile

      public jakarta.servlet.ServletRegistration.Dynamic addJspFile(String a, String b)
      Specified by:
      addJspFile in interface jakarta.servlet.ServletContext
    • getEffectiveMajorVersion

      public int getEffectiveMajorVersion()
      Specified by:
      getEffectiveMajorVersion in interface jakarta.servlet.ServletContext
    • getEffectiveMinorVersion

      public int getEffectiveMinorVersion()
      Specified by:
      getEffectiveMinorVersion in interface jakarta.servlet.ServletContext
    • setInitParameter

      public boolean setInitParameter(String name, String value)
      Specified by:
      setInitParameter in interface jakarta.servlet.ServletContext
    • addServlet

      public jakarta.servlet.ServletRegistration.Dynamic addServlet(String servletName, String className)
      Specified by:
      addServlet in interface jakarta.servlet.ServletContext
    • addServlet

      public jakarta.servlet.ServletRegistration.Dynamic addServlet(String servletName, jakarta.servlet.Servlet servlet)
      Specified by:
      addServlet in interface jakarta.servlet.ServletContext
    • addServlet

      public jakarta.servlet.ServletRegistration.Dynamic addServlet(String servletName, Class<? extends jakarta.servlet.Servlet> servletClass)
      Specified by:
      addServlet in interface jakarta.servlet.ServletContext
    • createServlet

      public <T extends jakarta.servlet.Servlet> T createServlet(Class<T> clazz)
      Specified by:
      createServlet in interface jakarta.servlet.ServletContext
    • getServletRegistration

      public jakarta.servlet.ServletRegistration getServletRegistration(String servletName)
      Specified by:
      getServletRegistration in interface jakarta.servlet.ServletContext
    • getServletRegistrations

      public Map<String,? extends jakarta.servlet.ServletRegistration> getServletRegistrations()
      Specified by:
      getServletRegistrations in interface jakarta.servlet.ServletContext
    • addFilter

      public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className)
      Specified by:
      addFilter in interface jakarta.servlet.ServletContext
    • addFilter

      public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, jakarta.servlet.Filter filter)
      Specified by:
      addFilter in interface jakarta.servlet.ServletContext
    • addFilter

      public jakarta.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class<? extends jakarta.servlet.Filter> filterClass)
      Specified by:
      addFilter in interface jakarta.servlet.ServletContext
    • createFilter

      public <T extends jakarta.servlet.Filter> T createFilter(Class<T> clazz)
      Specified by:
      createFilter in interface jakarta.servlet.ServletContext
    • getFilterRegistration

      public jakarta.servlet.FilterRegistration getFilterRegistration(String filterName)
      Specified by:
      getFilterRegistration in interface jakarta.servlet.ServletContext
    • getFilterRegistrations

      public Map<String,? extends jakarta.servlet.FilterRegistration> getFilterRegistrations()
      Specified by:
      getFilterRegistrations in interface jakarta.servlet.ServletContext
    • getSessionCookieConfig

      public jakarta.servlet.SessionCookieConfig getSessionCookieConfig()
      Specified by:
      getSessionCookieConfig in interface jakarta.servlet.ServletContext
    • setSessionTrackingModes

      public void setSessionTrackingModes(Set<jakarta.servlet.SessionTrackingMode> sessionTrackingModes)
      Specified by:
      setSessionTrackingModes in interface jakarta.servlet.ServletContext
    • getDefaultSessionTrackingModes

      public Set<jakarta.servlet.SessionTrackingMode> getDefaultSessionTrackingModes()
      Specified by:
      getDefaultSessionTrackingModes in interface jakarta.servlet.ServletContext
    • getEffectiveSessionTrackingModes

      public Set<jakarta.servlet.SessionTrackingMode> getEffectiveSessionTrackingModes()
      Specified by:
      getEffectiveSessionTrackingModes in interface jakarta.servlet.ServletContext
    • addListener

      public void addListener(String className)
      Specified by:
      addListener in interface jakarta.servlet.ServletContext
    • addListener

      public <T extends EventListener> void addListener(T t)
      Specified by:
      addListener in interface jakarta.servlet.ServletContext
    • addListener

      public void addListener(Class<? extends EventListener> listenerClass)
      Specified by:
      addListener in interface jakarta.servlet.ServletContext
    • createListener

      public <T extends EventListener> T createListener(Class<T> clazz)
      Specified by:
      createListener in interface jakarta.servlet.ServletContext
    • getJspConfigDescriptor

      public jakarta.servlet.descriptor.JspConfigDescriptor getJspConfigDescriptor()
      Specified by:
      getJspConfigDescriptor in interface jakarta.servlet.ServletContext
    • getClassLoader

      public ClassLoader getClassLoader()
      Specified by:
      getClassLoader in interface jakarta.servlet.ServletContext
    • declareRoles

      public void declareRoles(String... roleNames)
      Specified by:
      declareRoles in interface jakarta.servlet.ServletContext
    • getVirtualServerName

      public String getVirtualServerName()
      Specified by:
      getVirtualServerName in interface jakarta.servlet.ServletContext