Documentation for JIRA 4.0. Documentation for other versions of JIRA is available too. 
![]()
On this page:
JIRA 4.1 introduces several changes that may break existing plugins. If you are using a plugin that is not shipped with JIRA, the plugin may need to be updated to work with JIRA 4.1. If the plugin was written by you, please read through the information below and see if any of it is relevant to your plugin. If you are using a plugin written by a third party, please check with the plugin's author to see if the plugin has been tested with JIRA 4.1.
Please note that this is not the complete list of changes for JIRA 4.1; it is just the changes that plugin developers are likely to encounter most often.
The PortletConfigurationStore has had the following method renamed in JIRA 4.1:
In JIRA 4.1 the PortalPage interface has also been updated to become a final concrete class. The PortalPageImpl has been removed. Instances of the PortalPage final class can now be constructed using the PortalPage.Builder class. If your plugin was using the PortalPage interface it will need to be re-compiled against JIRA 4.1 to use the new PortalPage class.
The IssueOperation module type, which allowed plugin developers to add their own links to the "Issue Operations" list on the "View Issue" screen, is no longer available. In JIRA 4.1+ any plugin that needs to add a new issue operation to the "View Issue" page will need to be updated to use a Web-Item module instead.
So for example to convert the existing "Edit Issue" operation you would have to change the following plugin defintion:
<issue-operation key="edit-issue" i18n-name-key="admin.issue.operations.plugin.edit.issue.name" name="Edit this issue" class="com.atlassian.jira.issue.operations.EditIssueOperation" state='enabled'> <resource type="velocity" name="view" location="templates/plugins/operations/editissue.vm" /> <order>80</order> </issue-operation>
...to be a Web-Item:
<web-item key="edit-issue" i18n-name-key="webfragments.view.issue.opsbar.operations.top.edit" name="Edit this issue" section="operations-top-level" weight="1">
<label key="common.words.edit"/>
<tooltip key="admin.issue.operations.plugin.edit.issue.name"/>
<link linkId="edit-issue">
/secure/EditIssue!default.jspa?id=${issue.id}
</link>
<condition class="com.atlassian.jira.plugin.webfragment.conditions.IsIssueEditableCondition"/>
<condition class="com.atlassian.jira.plugin.webfragment.conditions.HasIssuePermissionCondition">
<param name="permission">edit</param>
</condition>
<condition class="com.atlassian.jira.plugin.webfragment.conditions.ContextContainsCondition" invert="true">
<param name="context-key">display-context</param>
<param name="context-value">view-issue</param>
</condition>
</web-item>
The backing EditIssueOperation class required previously by the Issue Operation Module is no longer required.
Issue Operation Web-Items need to be added to an appropriate Web Section. The default structure for the issue operation sections is as follows:
This structure gives the following default menu:
Plugin developers can add an issue operation web-item to any of the default menu sections, or define their own menu web-section and add it there.
JIRA 4.1 introduces a new IssueService for performing operations (e.g. create/read/update/delete) on issues, which makes it much easier to perform issue operations from within a plugin. Plugin developers are strongly encouraged to change their plugins to use the new IssueService. The existing "back-end Actions" (e.g. ISSUE_UPDATE, ISSUE_DELETE) have been deprecated in favour of the new IssueService and may be removed in future releases of JIRA. The IssueManager class should also no longer be used directly to create or retrieve issues, as the new IssueService provides more robust validation and error handling.
For more information please see the detailed documentation on the IssueService.
With the new View Issue page in JIRA 4.1, Date and User fields are grouped together in their own sections.
In order for Customfields to be placed in either section, their implementation of CustomFieldType must also implement either DateField or UserField.
/**
* A marker interface to mark all date fields available in the system. Please note that for custom fields, the
* custom field type needs to be marked by this interface.
*
* @since v4.0
*/
public interface DateField
{
}
/**
* A marker interface to mark all user fields available in the system. Please note that for custom fields, the
* custom field type needs to be marked by this interface.
*
* @since v4.0
*/
public interface UserField
{
}
Pre-release versions of JIRA 4.1 can be downloaded from our main Atlassian website or from one of the links below.
JIRA plugin developers and other interested parties can download and install these pre-release versions to:
Do not use pre-release JIRA builds in production!
Beta releases should not be used in production environments as they may still contain bugs and are not officially supported. Please use these builds at your own risk.
You can download one of the following pre-release JIRA beta distributions that best suits your needs: