This documentation relates to an earlier version of FishEye.
View

Unknown macro: {spacejump}

or visit the current documentation home.

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

(tick)

Fix up the report (it needs sorting and limiting)

(tick)

Write some tests (model + action tested)

(warning)

Find some Valium

Version History

1.0 - Initial Version

Screenshots

Other Adaptavist Entries

There is no content with the specified labels