Package org.apache.wiki.filters

## Class DefaultFilterManager

- java.lang.Object
- - org.apache.wiki.modules.BaseModuleManager
  - - org.apache.wiki.filters.DefaultFilterManager

All Implemented Interfaces:
  `FilterManager`, `ModuleManager`

    public class DefaultFilterManager
    extends BaseModuleManager
    implements FilterManager

Manages the page filters. Page filters are components that can be executed at certain places:

- Before the page is translated into HTML.
- After the page has been translated into HTML.
- Before the page is saved.
- After the page has been saved.

Using page filters allows you to modify the page data on-the-fly, and do things like adding your own custom WikiMarkup.

The initial page filter configuration is kept in a file called "filters.xml". The format is really very simple:

      <pagefilters>

        <filter>
          <class>org.apache.wiki.filters.ProfanityFilter</class>
        <filter>

        <filter>
          <class>org.apache.wiki.filters.TestFilter</class>

          <param>
            <name>foobar</name>
            <value>Zippadippadai</value>
          </param>

          <param>
            <name>blatblaa</name>
            <value>5</value>
          </param>

        </filter>
      </pagefilters>

The <filter> -sections define the filters. For more information, please see the PageFilterConfiguration page in the JSPWiki distribution.

### Field Summary

### Fields inherited from class org.apache.wiki.modules.BaseModuleManager

`m_engine`

### Fields inherited from interface org.apache.wiki.filters.FilterManager

`DEFAULT_XMLFILE, PROP_FILTERXML, SYSTEM_FILTER_PRIORITY, USER_FILTER_PRIORITY`

### Fields inherited from interface org.apache.wiki.modules.ModuleManager

`PLUGIN_RESOURCE_LOCATION`

### Constructor Summary

Constructors
`DefaultFilterManager​(Engine engine, java.util.Properties props)` Constructs a new FilterManager object.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addPageFilter​(PageFilter f, int priority)` Adds a page filter to the queue.
`void` `destroy()` Notifies PageFilters to clean up their ressources.
`void` `doPostSaveFiltering​(Context context, java.lang.String pageData)` Does the page filtering after the page has been saved.
`java.lang.String` `doPostTranslateFiltering​(Context context, java.lang.String htmlData)` Does the filtering after HTML translation.
`java.lang.String` `doPreSaveFiltering​(Context context, java.lang.String pageData)` Does the filtering before a save to the page repository.
`java.lang.String` `doPreTranslateFiltering​(Context context, java.lang.String pageData)` Does the filtering before a translation.
`void` `fireEvent​(int type, Context context)` Fires a WikiPageEvent of the provided type and WikiContext.
`java.util.List<PageFilter>` `getFilterList()` Returns the list of filters currently installed.
`org.apache.wiki.filters.DefaultFilterManager.PageFilterInfo` `getModuleInfo​(java.lang.String moduleName)` Returns the `WikiModuleInfo` information about the provided moduleName.
`protected void` `initialize​(java.util.Properties props)` Initializes the filters from an XML file.
`java.util.Collection<WikiModuleInfo>` `modules()` Returns a collection of modules currently managed by this ModuleManager.

### Methods inherited from class org.apache.wiki.modules.BaseModuleManager

`checkCompatibility, modules`

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

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

### Methods inherited from interface org.apache.wiki.modules.ModuleManager

`checkCompatibility`

### Constructor Detail

#### DefaultFilterManager

    public DefaultFilterManager​(Engine engine,
                                java.util.Properties props)
                         throws WikiException

Constructs a new FilterManager object.

Parameters:
  `engine` - The Engine which owns the FilterManager
  `props` - Properties to initialize the FilterManager with
Throws:
  `WikiException` - If something goes wrong.

### Method Detail

#### addPageFilter

    public void addPageFilter​(PageFilter f,
                              int priority)
                       throws java.lang.IllegalArgumentException

Adds a page filter to the queue. The priority defines in which order the page filters are run, the highest priority filters go in the queue first.

In case two filters have the same priority, their execution order is the insertion order.

Specified by:
  `addPageFilter` in interface `FilterManager`
Parameters:
  `f` - PageFilter to add
  `priority` - The priority in which position to add it in.
Throws:
  `java.lang.IllegalArgumentException` - If the PageFilter is null or invalid.
Since:
  2.1.44.

#### initialize

    protected void initialize​(java.util.Properties props)
                       throws WikiException

Initializes the filters from an XML file.

Parameters:
  `props` - The list of properties. Typically, jspwiki.properties
Throws:
  `WikiException` - If something goes wrong.

#### doPreTranslateFiltering

    public java.lang.String doPreTranslateFiltering​(Context context,
                                                    java.lang.String pageData)
                                             throws FilterException

Does the filtering before a translation.

Specified by:
  `doPreTranslateFiltering` in interface `FilterManager`
Parameters:
  `context` - The WikiContext
  `pageData` - WikiMarkup data to be passed through the preTranslate chain.
Returns:
  The modified WikiMarkup
Throws:
  `FilterException` - If any of the filters throws a FilterException
See Also:
  `PageFilter.preTranslate(Context, String)`

#### doPostTranslateFiltering

    public java.lang.String doPostTranslateFiltering​(Context context,
                                                     java.lang.String htmlData)
                                              throws FilterException

Does the filtering after HTML translation.

Specified by:
  `doPostTranslateFiltering` in interface `FilterManager`
Parameters:
  `context` - The WikiContext
  `htmlData` - HTML data to be passed through the postTranslate
Returns:
  The modified HTML
Throws:
  `FilterException` - If any of the filters throws a FilterException
See Also:
  `PageFilter.postTranslate(Context, String)`

#### doPreSaveFiltering

    public java.lang.String doPreSaveFiltering​(Context context,
                                               java.lang.String pageData)
                                        throws FilterException

Does the filtering before a save to the page repository.

Specified by:
  `doPreSaveFiltering` in interface `FilterManager`
Parameters:
  `context` - The WikiContext
  `pageData` - WikiMarkup data to be passed through the preSave chain.
Returns:
  The modified WikiMarkup
Throws:
  `FilterException` - If any of the filters throws a FilterException
See Also:
  `PageFilter.preSave(Context, String)`

#### doPostSaveFiltering

    public void doPostSaveFiltering​(Context context,
                                    java.lang.String pageData)
                             throws FilterException

Does the page filtering after the page has been saved.

Specified by:
  `doPostSaveFiltering` in interface `FilterManager`
Parameters:
  `context` - The WikiContext
  `pageData` - WikiMarkup data to be passed through the postSave chain.
Throws:
  `FilterException` - If any of the filters throws a FilterException
See Also:
  `PageFilter.postSave(Context, String)`

#### getFilterList

    public java.util.List<PageFilter> getFilterList()

Returns the list of filters currently installed. Note that this is not a copy, but the actual list. So be careful with it.

Specified by:
  `getFilterList` in interface `FilterManager`
Returns:
  A List of PageFilter objects

#### destroy

    public void destroy()

Notifies PageFilters to clean up their ressources.

Specified by:
  `destroy` in interface `FilterManager`

#### fireEvent

    public void fireEvent​(int type,
                          Context context)

Fires a WikiPageEvent of the provided type and WikiContext. Invalid WikiPageEvent types are ignored.

Parameters:
  `type` - the WikiPageEvent type to be fired.
  `context` - the WikiContext of the event.
See Also:
  `WikiPageEvent`

#### modules

    public java.util.Collection<WikiModuleInfo> modules()

Returns a collection of modules currently managed by this ModuleManager. Each entry is an instance of the WikiModuleInfo class. This method should return something which is safe to iterate over, even if the underlying collection changes.

Specified by:
  `modules` in interface `ModuleManager`
Returns:
  A Collection of WikiModuleInfo instances.

#### getModuleInfo

    public org.apache.wiki.filters.DefaultFilterManager.PageFilterInfo getModuleInfo​(java.lang.String moduleName)

Returns the `WikiModuleInfo` information about the provided moduleName.

Specified by:
  `getModuleInfo` in interface `ModuleManager`
Returns:
  The wikiModuleInfo