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:

      <?xml version="1.0"?>
      <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_I18N_RESOURCE, PLUGIN_RESOURCE_LOCATION`

## Constructor Summary

Constructors
Constructor
Description
`DefaultFilterManager(org.apache.wiki.api.core.Engine engine, Properties props)`
Constructs a new FilterManager object.

## Method Summary

Modifier and Type
Method
Description
`void`
`addPageFilter(org.apache.wiki.api.filters.PageFilter f, int priority)`
Adds a page filter to the queue.
`void`
`destroy()`
Notifies PageFilters to clean up their ressources.
`void`
`doPostSaveFiltering(org.apache.wiki.api.core.Context context, String pageData)`
Does the page filtering after the page has been saved.
`String`
`doPostTranslateFiltering(org.apache.wiki.api.core.Context context, String htmlData)`
Does the filtering after HTML translation.
`String`
`doPreSaveFiltering(org.apache.wiki.api.core.Context context, String pageData)`
Does the filtering before a save to the page repository.
`String`
`doPreTranslateFiltering(org.apache.wiki.api.core.Context context, String pageData)`
Does the filtering before a translation.
`void`
`fireEvent(int type, org.apache.wiki.api.core.Context context)`
Fires a WikiPageEvent of the provided type and WikiContext.
`List<org.apache.wiki.api.filters.PageFilter>`
`getFilterList()`
Returns the list of filters currently installed.
`org.apache.wiki.filters.DefaultFilterManager.PageFilterInfo`
`getModuleInfo(String moduleName)`
Returns the `WikiModuleInfo` information about the provided moduleName.
`protected void`
`initialize(Properties props)`
Initializes the filters from an XML file.
`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 Details

### DefaultFilterManager

public DefaultFilterManager(org.apache.wiki.api.core.Engine engine, Properties props) throws org.apache.wiki.api.exceptions.WikiException
Constructs a new FilterManager object.

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

## Method Details

### addPageFilter

public void addPageFilter(org.apache.wiki.api.filters.PageFilter f, int priority) throws 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:
  `IllegalArgumentException` - If the PageFilter is null or invalid.
Since:
  2.1.44.

### initialize

protected void initialize(Properties props) throws org.apache.wiki.api.exceptions.WikiException
Initializes the filters from an XML file.

Parameters:
  `props` - The list of properties. Typically, jspwiki.properties
Throws:
  `org.apache.wiki.api.exceptions.WikiException` - If something goes wrong.

### doPreTranslateFiltering

public String doPreTranslateFiltering(org.apache.wiki.api.core.Context context, String pageData) throws org.apache.wiki.api.exceptions.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:
  `org.apache.wiki.api.exceptions.FilterException` - If any of the filters throws a FilterException
See Also:
  - `PageFilter.preTranslate(Context, String)`

### doPostTranslateFiltering

public String doPostTranslateFiltering(org.apache.wiki.api.core.Context context, String htmlData) throws org.apache.wiki.api.exceptions.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:
  `org.apache.wiki.api.exceptions.FilterException` - If any of the filters throws a FilterException
See Also:
  - `PageFilter.postTranslate(Context, String)`

### doPreSaveFiltering

public String doPreSaveFiltering(org.apache.wiki.api.core.Context context, String pageData) throws org.apache.wiki.api.exceptions.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:
  `org.apache.wiki.api.exceptions.FilterException` - If any of the filters throws a FilterException
See Also:
  - `PageFilter.preSave(Context, String)`

### doPostSaveFiltering

public void doPostSaveFiltering(org.apache.wiki.api.core.Context context, String pageData) throws org.apache.wiki.api.exceptions.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:
  `org.apache.wiki.api.exceptions.FilterException` - If any of the filters throws a FilterException
See Also:
  - `PageFilter.postSave(Context, String)`

### getFilterList

public List<org.apache.wiki.api.filters.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, org.apache.wiki.api.core.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 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(String moduleName)
Returns the `WikiModuleInfo` information about the provided moduleName.

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