Package org.apache.tapestry5.http

# Class TapestryFilter

java.lang.Object
org.apache.tapestry5.http.TapestryFilter

All Implemented Interfaces:
  `javax.servlet.Filter`

Direct Known Subclasses:
  `TapestryFilter`, `TapestrySpringFilter`

public class TapestryFilter extends Object implements javax.servlet.Filter
The TapestryFilter is responsible for intercepting all requests into the web application. It identifies the requests that are relevant to Tapestry, and lets the servlet container handle the rest. It is also responsible for initializing Tapestry. The application is primarily configured via context-level init parameters.

tapestry.app-package
  The application package (used to search for pages, components, etc.)

In addition, a JVM system property affects configuration: `tapestry.execution-mode` (with default value "production"). This property is a comma-separated list of execution modes. For each mode, an additional init parameter is checked for: `tapestry.mode-modules`; this is a comma-separated list of module class names to load. In this way, more precise control over the available modules can be obtained which is often needed during testing.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `REGISTRY_CONTEXT_NAME`
  Key under which the Tapestry IoC `Registry` is stored in the ServletContext.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `TapestryFilter()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `destroy()`
  Shuts down and discards the registry.
  `protected void`
  `destroy(Registry registry)`
  Invoked from `destroy()` to allow subclasses to add additional shutdown logic to the filter.
  `final void`
  `doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)`
  `protected final javax.servlet.FilterConfig`
  `getFilterConfig()`
  `final void`
  `init(javax.servlet.FilterConfig filterConfig)`
  Initializes the filter using the `TapestryAppInitializer`.
  `protected void`
  `init(Registry registry)`
  Invoked from `init(FilterConfig)` after the Registry has been created, to allow any additional initialization to occur.
  `protected Class[]`
  `provideExtraModuleClasses(javax.servlet.ServletContext context)`
  Overridden in subclasses to provide additional module classes beyond those normally located.
  `protected ModuleDef[]`
  `provideExtraModuleDefs(javax.servlet.ServletContext context)`
  Overridden in subclasses to provide additional module definitions beyond those normally located.
  `final void`
  `runFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### REGISTRY_CONTEXT_NAME

    public static final String REGISTRY_CONTEXT_NAME
    Key under which the Tapestry IoC `Registry` is stored in the ServletContext. This allows other code, beyond Tapestry, to obtain the Registry and, from it, any Tapestry services. Such code should be careful about invoking `Registry.cleanupThread()` appropriately.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### TapestryFilter

    public TapestryFilter()

- ## Method Details

  - ### init

    public final void init(javax.servlet.FilterConfig filterConfig) throws javax.servlet.ServletException
    Initializes the filter using the `TapestryAppInitializer`. The application name is the capitalization of the filter name (as specified in web.xml).
    Specified by:
      `init` in interface `javax.servlet.Filter`
    Throws:
      `javax.servlet.ServletException`

  - ### getFilterConfig

    protected final javax.servlet.FilterConfig getFilterConfig()

  - ### init

    protected void init(Registry registry) throws javax.servlet.ServletException
    Invoked from `init(FilterConfig)` after the Registry has been created, to allow any additional initialization to occur. This implementation does nothing, and my be overridden in subclasses.
    Parameters:
      `registry` - from which services may be extracted
    Throws:
      `javax.servlet.ServletException`

  - ### provideExtraModuleDefs

    protected ModuleDef[] provideExtraModuleDefs(javax.servlet.ServletContext context)
    Overridden in subclasses to provide additional module definitions beyond those normally located. This implementation returns an empty array.

  - ### provideExtraModuleClasses

    protected Class[] provideExtraModuleClasses(javax.servlet.ServletContext context)
    Overridden in subclasses to provide additional module classes beyond those normally located. This implementation returns an empty array.
    Since:
      5.3

  - ### runFilter

    public final void runFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
    Throws:
      `IOException`
      `javax.servlet.ServletException`

  - ### doFilter

    public final void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
    Specified by:
      `doFilter` in interface `javax.servlet.Filter`
    Throws:
      `IOException`
      `javax.servlet.ServletException`

  - ### destroy

    public final void destroy()
    Shuts down and discards the registry. Invokes `destroy(org.apache.tapestry5.ioc.Registry)` to allow subclasses to perform any shutdown logic, then shuts down the registry, and removes it from the ServletContext.
    Specified by:
      `destroy` in interface `javax.servlet.Filter`

  - ### destroy

    protected void destroy(Registry registry)
    Invoked from `destroy()` to allow subclasses to add additional shutdown logic to the filter. The Registry will be shutdown after this call. This implementation does nothing, and may be overridden in subclasses.
    Parameters:
      `registry` -