Class DefaultServletModuleManager

java.lang.Object
com.atlassian.plugin.servlet.DefaultServletModuleManager
All Implemented Interfaces:
ServletModuleManager

public class DefaultServletModuleManager extends Object implements ServletModuleManager
A simple servletModuleManager to track and retrieve the loaded servlet plugin modules.
Since:
2.1.0
  • Constructor Details

    • DefaultServletModuleManager

      public DefaultServletModuleManager(javax.servlet.ServletContext servletContext, com.atlassian.plugin.event.PluginEventManager pluginEventManager)
      Constructor that sets itself in the servlet context for later use in dispatching servlets and filters.
      Parameters:
      servletContext - The servlet context to store itself in
      pluginEventManager - The plugin event manager
      Since:
      2.2.0
    • DefaultServletModuleManager

      @Deprecated public DefaultServletModuleManager(javax.servlet.ServletContext servletContext, com.atlassian.plugin.event.PluginEventManager pluginEventManager, ScopeManager scopeManager)
      Deprecated.
      in 5.0 for removal in 6.0 when ScopeManager is removed
      Since:
      4.2
    • DefaultServletModuleManager

      public DefaultServletModuleManager(com.atlassian.plugin.event.PluginEventManager pluginEventManager)
      Creates the servlet module manager, but assumes you will be calling ServletContextServletModuleManagerAccessor.setServletModuleManager(javax.servlet.ServletContext, ServletModuleManager) yourself if you don't extend the dispatching servlet and filter classes to provide the servlet module manager instance.
      Parameters:
      pluginEventManager - The plugin event manager
    • DefaultServletModuleManager

      @Deprecated public DefaultServletModuleManager(com.atlassian.plugin.event.PluginEventManager pluginEventManager, ScopeManager scopeManager)
      Deprecated.
      in 5.0 for removal in 6.0 when ScopeManager is removed
      Since:
      4.2
    • DefaultServletModuleManager

      public DefaultServletModuleManager(com.atlassian.plugin.event.PluginEventManager pluginEventManager, PathMapper servletPathMapper, PathMapper filterPathMapper)
      Creates the servlet module manager, but assumes you will be calling ServletContextServletModuleManagerAccessor.setServletModuleManager(javax.servlet.ServletContext, ServletModuleManager) yourself if you don't extend the dispatching servlet and filter classes to provide the servlet module manager instance.
      Parameters:
      pluginEventManager - The plugin event manager
      servletPathMapper - The path mapper used for mapping servlets to paths
      filterPathMapper - The path mapper used for mapping filters to paths
    • DefaultServletModuleManager

      public DefaultServletModuleManager(com.atlassian.plugin.event.PluginEventManager pluginEventManager, PathMapper servletMapper, PathMapper filterMapper, com.atlassian.plugin.servlet.FilterFactory filterFactory)
      The broadest constructor should be the last one standing when:
      • dependency injection is fixed
      • passing this before construction finishes is removed
      Parameters:
      pluginEventManager - the event manager to register to
      servletMapper - maps servlet paths
      filterMapper - maps filter paths
      filterFactory - creates filters
      Since:
      4.2
    • DefaultServletModuleManager

      @Deprecated public DefaultServletModuleManager(com.atlassian.plugin.event.PluginEventManager pluginEventManager, PathMapper servletMapper, PathMapper filterMapper, com.atlassian.plugin.servlet.FilterFactory filterFactory, ScopeManager scopeManager)
      Deprecated.
      in 5.0 for removal in 6.0 when ScopeManager is removed.
      The broadest constructor should be the last one standing when:
      • dependency injection is fixed
      • passing this before construction finishes is removed
      Parameters:
      pluginEventManager - the event manager to register to
      servletMapper - maps servlet paths
      filterMapper - maps filter paths
      filterFactory - creates filters
      scopeManager - verifies scopes
      Since:
      4.2
    • DefaultServletModuleManager

      @Deprecated public DefaultServletModuleManager(javax.servlet.ServletContext servletContext, com.atlassian.plugin.event.PluginEventManager pluginEventManager, PathMapper servletMapper, PathMapper filterMapper, com.atlassian.plugin.servlet.FilterFactory filterFactory, ScopeManager scopeManager)
      Deprecated.
      in 5.0 for removal in 6.0 when ScopeManager is removed
      Parameters:
      servletContext - servlet context to register with
      pluginEventManager - the event manager to register to
      servletMapper - maps servlet paths
      filterMapper - maps filter paths
      filterFactory - creates filters
      scopeManager - verifies scopes
      Since:
      4.2
  • Method Details

    • addServletModule

      public void addServletModule(ServletModuleDescriptor descriptor)
      Description copied from interface: ServletModuleManager
      Register a new servlet plugin module.
      Specified by:
      addServletModule in interface ServletModuleManager
      Parameters:
      descriptor - Details of what the servlet class is and the path it should serve.
    • getServlet

      public javax.servlet.http.HttpServlet getServlet(String path, javax.servlet.ServletConfig servletConfig) throws javax.servlet.ServletException
      Description copied from interface: ServletModuleManager
      Return an instance of the HttpServlet that should be used to serve content matching the provided url path.
      Specified by:
      getServlet in interface ServletModuleManager
      Parameters:
      path - Path of the incoming request to serve.
      servletConfig - ServletConfig given to the delegating servlet.
      Returns:
      HttpServlet that has been registered to serve up content matching the passed in path.
      Throws:
      javax.servlet.ServletException - Thrown if there is a problem initializing the servlet to be returned.
    • removeServletModule

      public void removeServletModule(ServletModuleDescriptor descriptor)
      Description copied from interface: ServletModuleManager
      Remove a previously registered servlet plugin module. Requests that come in on the path described in the descriptor will no longer be served.
      Specified by:
      removeServletModule in interface ServletModuleManager
      Parameters:
      descriptor - Details of what servlet module to remove.
    • addFilterModule

      public void addFilterModule(ServletFilterModuleDescriptor descriptor)
      Description copied from interface: ServletModuleManager
      Register a new filter plugin module.
      Specified by:
      addFilterModule in interface ServletModuleManager
      Parameters:
      descriptor - Details of what the filter class is and the path it should serve.
    • getFilters

      public Iterable<javax.servlet.Filter> getFilters(FilterLocation location, String path, javax.servlet.FilterConfig filterConfig, FilterDispatcherCondition condition)
      Description copied from interface: ServletModuleManager
      Returns the filters that have been registered to filter requests at the specified path matching the location in the filter stack and registered for the specific dispatcher condition.
      Specified by:
      getFilters in interface ServletModuleManager
      Parameters:
      location - Place in the applications filter stack the filters should be applied.
      path - Path of the incoming request to filter.
      filterConfig - FilterConfig given to the delegating filter.
      condition - The dispatcher tag that filters have been registered to. Cannot be null.
      Returns:
      List of filters to be applied, already sorted by weight
    • getFilters

      public Iterable<javax.servlet.Filter> getFilters(FilterLocation location, String path, javax.servlet.FilterConfig filterConfig, javax.servlet.DispatcherType dispatcher)
      Description copied from interface: ServletModuleManager
      Returns the filters that have been registered to filter requests at the specified path matching the location in the filter stack and registered for the specific dispatcher condition.
      Specified by:
      getFilters in interface ServletModuleManager
      Parameters:
      location - Place in the applications filter stack the filters should be applied.
      path - Path of the incoming request to filter.
      filterConfig - FilterConfig given to the delegating filter.
      dispatcher - The dispatcher that filters have been registered to. Cannot be null.
      Returns:
      List of filters to be applied, already sorted by weight
    • removeFilterModule

      public void removeFilterModule(ServletFilterModuleDescriptor descriptor)
      Description copied from interface: ServletModuleManager
      Remove a previously registered filter plugin module. Requests that come in on the path described in the descriptor will no longer be served.
      Specified by:
      removeFilterModule in interface ServletModuleManager
      Parameters:
      descriptor - Details of what filter module to remove.
    • addServlet

      public void addServlet(Plugin plugin, String servletName, String className)
      Description copied from interface: ServletModuleManager
      To be invoked by PluginServletContextWrapper.addServlet(String, String) and PluginServletContextWrapper.addServlet(String, Class).

      Module containing the servlet will use servletName for:

      • key, with "-servlet" appended
      • name, with "Servlet" appended
      • url-pattern, with "/" prepended
      An instance of className will be instantiated and initialised on first use.
      Specified by:
      addServlet in interface ServletModuleManager
      Parameters:
      plugin - mandatory
      servletName - mandatory
      className - mandatory
    • addServlet

      public void addServlet(Plugin plugin, String servletName, javax.servlet.http.HttpServlet servlet, javax.servlet.ServletContext servletContext)
      Description copied from interface: ServletModuleManager
      To be invoked by PluginServletContextWrapper.addServlet(String, javax.servlet.Servlet).

      Module containing the servlet will use servletName for:

      • key, with "-servlet" appended
      • name, with "Servlet" appended
      • url-pattern, with "/" prepended
      servlet will be initialised on first use.
      Specified by:
      addServlet in interface ServletModuleManager
      Parameters:
      plugin - mandatory
      servletName - mandatory
      servlet - mandatory
      servletContext - mandatory
    • onPluginFrameworkStartingEvent

      public void onPluginFrameworkStartingEvent(com.atlassian.plugin.event.events.PluginFrameworkStartedEvent event)
    • onPluginFrameworkShutdownEvent

      public void onPluginFrameworkShutdownEvent(com.atlassian.plugin.event.events.PluginFrameworkShutdownEvent event)
    • onPluginDisabled

      public void onPluginDisabled(com.atlassian.plugin.event.events.PluginDisabledEvent event)
      Call the plugins servlet context listeners contextDestroyed methods and cleanup any servlet contexts that are associated with the plugin that was disabled.
    • onPluginFrameworkBeforeShutdown

      public void onPluginFrameworkBeforeShutdown(com.atlassian.plugin.event.events.PluginFrameworkShuttingDownEvent event)