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.
  • Constructor Details

    • 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 Details

    • 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