Class ServletFilterModuleDescriptor

java.lang.Object
com.atlassian.plugin.descriptors.AbstractModuleDescriptor<T>
com.atlassian.plugin.servlet.descriptors.BaseServletModuleDescriptor<javax.servlet.Filter>
com.atlassian.plugin.servlet.descriptors.ServletFilterModuleDescriptor
All Implemented Interfaces:
ModuleDescriptor<javax.servlet.Filter>, Resourced, ScopeAware, StateAware

public class ServletFilterModuleDescriptor extends BaseServletModuleDescriptor<javax.servlet.Filter> implements StateAware
A module descriptor that allows plugin developers to define servlet filters. Developers can define what urls the filter should be applied to by defining one or more <url-pattern> elements and they can decide where in the filter stack a plugin filter should go by defining the "location" and "weight" attributes.

The location attribute can have one of four values:

  • after-encoding - after the character encoding filter
  • before-login - before the login filter
  • before-decoration - before any global decoration like sitemesh
  • before-dispatch - before any dispatching filters or servlets
The default for the location attribute is "before-dispatch".

The weight attribute can have any integer value. Filters with lower values of the weight attribute will come before those with higher values within the same location.

Since:
2.1.0
  • Field Details

  • Constructor Details

    • ServletFilterModuleDescriptor

      public ServletFilterModuleDescriptor(ModuleFactory moduleFactory, ServletModuleManager servletModuleManager)
      Creates a descriptor that uses a module class factory to create instances.
      Parameters:
      moduleFactory - The module factory
      servletModuleManager - The module manager
      Since:
      2.5.0
  • Method Details

    • init

      public void init(@Nonnull Plugin plugin, @Nonnull Element element)
      Specified by:
      init in interface ModuleDescriptor<javax.servlet.Filter>
      Overrides:
      init in class BaseServletModuleDescriptor<javax.servlet.Filter>
    • validate

      protected void validate(Element element)
      Overrides:
      validate in class BaseServletModuleDescriptor<javax.servlet.Filter>
    • enabled

      public void enabled()
      Specified by:
      enabled in interface StateAware
      Overrides:
      enabled in class AbstractModuleDescriptor<javax.servlet.Filter>
    • disabled

      public void disabled()
      Specified by:
      disabled in interface StateAware
      Overrides:
      disabled in class AbstractModuleDescriptor<javax.servlet.Filter>
    • getModule

      public javax.servlet.Filter getModule()
      Specified by:
      getModule in interface ModuleDescriptor<javax.servlet.Filter>
      Specified by:
      getModule in class AbstractModuleDescriptor<javax.servlet.Filter>
    • getLocation

      public FilterLocation getLocation()
    • getWeight

      public int getWeight()
    • getDispatcherConditions

      @Deprecated public Set<FilterDispatcherCondition> getDispatcherConditions()
      Deprecated.
      since 4.6.0. Use getDispatcherTypes() instead.
      Returns a set of dispatcher conditions that have been set for this filter, these conditions will be one of the following: REQUEST, FORWARD, INCLUDE or ERROR.
      Returns:
      A set of dispatcher conditions that have been set for this filter.
      Since:
      2.5.0
    • getDispatcherTypes

      public Set<javax.servlet.DispatcherType> getDispatcherTypes()
      Returns a set of dispatcher types that have been set for this filter. These can be any of the values supported by DispatcherType.
      Returns:
      A set of dispatcher types that have been set for this filter.
      Since:
      4.6.0
    • getDefaultAsyncSupported

      protected boolean getDefaultAsyncSupported()
      Overrides the base class's handling to allow using ASYNC_DEFAULT_SYSPROP to control whether filters are &lt;async-supported/&gt; by default or not.

      The servlet spec documents that filters do not support async unless they are explicitly marked otherwise, and so the default here is also false. However, Tomcat's ServletContext.addFilter(java.lang.String, java.lang.String) implementation does not adhere to the spec and filters in Tomcat do support async unless they are explicitly set not to. The system property allows products to opt into Tomcat's behavior.

      Overrides:
      getDefaultAsyncSupported in class BaseServletModuleDescriptor<javax.servlet.Filter>
      Returns:
      false, unless ASYNC_DEFAULT_SYSPROP has been set to override it
      Since:
      5.8.0