PluginUsage [add child]
Various plugins are supported by FitNesse.


Below are a list of customizations you can make via this plugin architechture. Each plugin will require an entry in the file. This should be located in the working directory of FitNesse. If the file does not exist FitNesse will run normally. To enable a plugin, create this file, and add the specified entries. All plugins will require complied Java code so make sure that the classpath contains an entry to locate your plugins.

Wiki Page

required property: WikiPage = <class name>
motivation: Steve Starkey has made a WikiPage plugin available that uses MySQL as a backend for FitNesse instead of flat files on disk.
The class specified must implement the interface and it must provide a public constructor of the form:
public MyWikiPage(Properties properties)'
This allows special construction parameters to be places in the properties file and used by the custom WikiPage implementation.

Html Page Factory

required property: HtmlPageFactory = <class name>
motivation: Full customization of look and feel.
The class specified must extend the fitnesse.html.HtmlPageFactory class and it must also provide a constructor that accept a Properties object. The custom HtmlPageFactory will over ride the newPage() method to return a derivative of fitnesse.html.HtmlPage. The custom HtmlPage class should make use of any of the public HtmlTag member variables.


required property: Responders = <key:classname>[,<key:classname>]
motivation: Allows functional customization. With this plugin you can customize the way FitNesse responds to HTTP requests.
The property provided should be a comma seperated list of key:value pairs where value is tha name of a class that implements fitnesse.Responder. The key is used in the URL to designate which responder to invoke. An example responder plugin might be an RssResponder[?] that would generate RSS feeds for wiki page updates. To do this you would first create the RssResponder[?] to gerenate the RSS. Then add the plugin property (Responders=rss:your.package.RssResponder[?]). Then to invoke it you would use a URL like to get a feed on all the changes made to the RecentChanges[?] page.


required property: Authenticator = <class name>
motivation: Custom security scheme.
The class provided must extend the fitnesse.authentication.Authenticator class. The class will be instantiated and asked isAuthenticated(String username, String password) when ever authentication is required. See SecurityDescription for more information on security.


required property: WikiWidgets[?] = <class name>[,<class name]
motivation: Custom look-n-feel, or custom functionality hook.
The classes supplied bust extends fitnesse.wikitext.WikiWidget[?]. In addition, custom WikiWidget[?] must have a public static field of type String and named REGEXP. The value of REGEXP should be a regular expresion that matches your custom widget. REGEXP cannot contain any groups.