Fisheye and Crucible plugin guide

Fisheye and Crucible use the standard Atlassian Plugin Framework, so your first step should be to understand how to use the Atlassian Plugin SDK. After you understand the process of developing with the Atlassian Plugin SDK, you need to understand the specifics of developing plugins for Fisheye and Crucible.

To get started, you can follow a few tutorials. You will also need to understand the plugin module types that Fisheye/Crucible supports and the REST and Java APIs which plugins use to access Fisheye/Crucible.

What do you want to do?

If you have an idea for making Fisheye/Crucible more useful to you, then this page helps you decide how to do it. You can translate your requirements into a set of software components you will need to write. Look through the list of use cases below and find those that best match yours.

Report on data in Fisheye/Crucible

If you want to display the report in Fisheye/Crucible, you can write a Servlet Plugin Module. If you are using an external reporting tool you can write a REST Client to extract the data. You can't access data in Fisheye/Crucible via SQL - if you want to use an SQL based tool you'll need to extract data via a REST Client and insert it into your reporting database.

Useful Tutorials

Pull data from Fisheye/Crucible into my application

You should write a REST Client to do this. If you needed to use another protocol, you could write a Servlet Plugin Module and implement the protocol yourself. If you need to process the data before your application asks for (perhaps you just want to transfer a summary) you can write a REST module to provide a different interface to that provided by the standard Fisheye/Crucible REST interface.

Useful Tutorials

Have Fisheye/Crucible push data to my application

You can write an Event Listener Module which will be called when something happens (e.g. Fisheye indexes a new change set, or a user completes a review). These can make an HTTP request to your application, update your database or open a socket to your application.

Useful Tutorials

Create reviews of files in a type of Source Control System which Fisheye/Crucible doesn't support

You can write an SCM Module to allow Crucible to see the directory structure and history of another revision control system. This doesn't provide all the features Fisheye has, but it does allow you to perform code reviews. You can also create reviews from other Source Control Systems without writing a plugin by creating patch file reviews, manually via the UI or via the REST interface.

Useful Tutorials

Tell my application when a Crucible review changes state.

You can write an Event Listener Module and have it contact your application when it sees a state change event.

Useful Tutorials

Use Fisheye/Crucible from an OpenSocial container

You can write a Gadget Module which gets information from Fisheye/Crucible via a REST Module (or just uses the existing REST API and displays it in an OpenSocial container.

Show information from my application in the Fisheye/Crucible UI

You can add your own pages to Fisheye/Crucible by writing a Servlet Plugin which renders a Velocity template. Your page will be decorated by Fisheye/Crucible so that it has the correct headers and footers. You use Web Item Module Type to place links to your page on existing Fisheye/Crucible pages. These links can pass parameters to your page, so, for instance, you can have a link on the file history page which passes the path of the file being viewed to your page.

Useful Tutorials

Add more annotations to the Fisheye/Crucible Source View

You can write a Gutter Renderer Module to provide extra information for each line of source code displayed on the annotated file page.

Useful Tutorials

Fisheye Gutter Renderer Plugin Tutorial

Where can I find more information?

Other resources for Fisheye and Crucible plugin developers: