This page last changed on Jun 19, 2008 by jnolen.
This plugin is more of a platform for development and showing what is possible – with some better documentation / examples, I'm sure the reports could be enhanced to provide improved stats.

Description/Features

Primarily as a proof of concept, this plugin shows what I've found you can do with FishEye plugins – hopefully this will help and encourage more developers to dive in and see what they can do.

I am writing up my experiences as a Diary of a FishEye Hacker (and part 2), which includes suggestions to the FishEye developers and 3rd party developers alike.

Here's the general summary:

  • Be prepared to be frustrated, very frustrated. There is no documentation or source and the 2 examples won't be much use. FishEye is so not ready for you to plugin to.
  • If your a little crazy and very persistent, you can plugin your own XWork actions.
  • I did not find a clean way to change the classloading for JSPs or Velocity files - so resources should go into somewhere unique in $FISHEYE_INST/content
  • If you're careful, you can build your own ContainerManager / ComponentManager (as found in Confluence / JIRA)
  • There is no decoration and JSP tags & includes are used heavily - I've not found it practical to try to reuse these components.
  • There are no UI hooks outside of the Admin area, so if you're hoping to add a tab, or add a widget, or add a block somewhere from a plugin - think again.
  • While the StateAware interface exists for plugins to use, no plugin module respects it.

Moral of this adventure?
If at first you don't succeed, grab a few beers. It helps prevent the throwing of laptop in anger effect.

I hope my code serves as a useful example and platform for bigger & better things, and my write up serves as a nudge (or kick up the ass) for the FishEye developers to make the API & plugin subsystem properly usable.

Why not just use Servlets?

Well, as anyone who is used to writing plugin actions in Confluence / JIRA should tell you, writing raw servlets is laborious. WebWork/XWork gives you a lot for free:

  1. You get a command pattern implementation.
  2. You can build your own actions & results, just like xwork/webwork1 plugins in Confluence/JIRA.
  3. Your actions are wired and incoming parameters converted.
  4. You get an OGNL stack for use, almost transparently.
  5. You get a validation framework at your disposal.
  6. You can add your own interceptors and result types in addition to the given ones.
  7. You can build you actions in an openly testable way.

In short, you can build your plugins smaller, simpler and quicker, leading to more testable and maintainable code.

Usage

Simply navigate to /devreport/home.do, where / is the root of your FishEye installation.

Using /fisheye/ as your context is pretty standard, so you may need to use http://www.domain.dom/fisheye/devreport/home.do.

Installation

  1. Copy the developer-report-plugin-xxx.jar to the var/plugins folder
  2. Restart FishEye (you might get away with reloading the plugins in the Admin UI, but I wouldn't recommend it)

Uninstallation

Please note that this plugin does some fairly hefty things, such as:

  1. It burrows it's way through Spring
  2. It tinkers with class loaders
  3. It rewrites the XWork/WebWork configuration
  4. It hijacks XWork object creation
  5. It extracts it's resources into $FISHEYE_INST/content/devreport

All of theses will be reverted by simply removing the plugin and restarting FishEye, with the notable exception of:

  1. You may wish to delete the $FISHEYE_INST/content/devreport folder

TODO List

State Task
Fix up the report (it needs sorting and limiting)
Write some tests (model + action tested)
Find some Valium

Version History

1.0 - Initial Version

Screenshots

Other Adaptavist Entries

User Security Management Plugin — An enhancement for the Confluence user management system, to prompt better security practices - including email verification and admin vetting of signups
Custom News — An alternative to Confluence's blog posts macro to aid with customisation
Statistical Analysis Plugin — Confluence has lacked a cluster-ready, enterprise scaleable, remotely accessible statistically gathering and analysis plugin ... not any more!
Developer Report Plugin — Primarily as a proof of concept, this plugin shows what I've found you can do with FishEye plugins – hopefully this will help and encourage more developers to dive in and see what they can do.
Attachment Download Plugin — Adds a servlet so you can download attachments from a page without needing to know the ID.
Synonym Plugin — A search extractor for Confluence to inject synonyms for acronyms, words or phrases into the index to aid with searching
Developer Report Plugin — Primarily as a proof of concept, this plugin shows what I've found you can do with FishEye plugins – hopefully this will help and encourage more developers to dive in and see what they can do.
Ranking Macro — Yet another macro for voting/rating/ranking pages, this one is uniquely different to the others by providing a macro for ranking pages with a 'was this page useful' style approach, tracking only positive answers
Plugin Message Client — A library which when included as an extracted dependancy will allow java communication between the classloaders of the installed plugins
Insert Picture Plugin — A in-place image management widget for Confluence to help with image attachment manipulation
JIRA Visitor Plugin — If you've ever found yourself commenting simultaneously as someone else with the same information, or been faced with the dreaded "workflow has already changed" message, or just thought "I wonder if anyone else is viewing this issue right now" - then this is for you.
Developer Report Plugin — Primarily as a proof of concept, this plugin shows what I've found you can do with FishEye plugins – hopefully this will help and encourage more developers to dive in and see what they can do.

Picture 3.png (image/png)
Picture 1.png (image/png)
Document generated by Confluence on Jul 06, 2009 21:40