@PublicApi public interface

IssueManager

implements JiraManager
com.atlassian.jira.issue.IssueManager
Known Indirect Subclasses

@PublicApi

This interface is designed for plugins to consume (call its methods).

Clients of @PublicApi can expect that programs compiled against a given version will remain binary compatible with later versions of the @PublicApi as per each product's API policy as long as the client does not implement/extend @PublicApi interfaces or classes (refer to each product's API policy for the exact guarantee---usually binary compatibility is guaranteed at least across minor versions).

Note: since @PublicApi interfaces and classes are not designed to be implemented or extended by clients, we may perform certain types of binary-incompatible changes to these classes and interfaces, but these will not affect well-behaved clients that do not extend/implement these types (in general, only classes and interfaces annotated with @PublicSpi are safe to extend/implement).

Class Overview

A class to manage interactions with issues

Summary

Public Methods
@Deprecated GenericValue createIssue(String remoteUserName, Map<StringObject> fields)
This method is deprecated. Use createIssueObject(String, Map) instead since v5.0.
@Deprecated GenericValue createIssue(User remoteUser, Issue issue)
This method is deprecated. Use createIssueObject(User, Issue) instead. Since v5.0
@Deprecated GenericValue createIssue(User remoteUser, Map<StringObject> fields)
This method is deprecated. Use createIssueObject(User, java.util.Map) instead. Since v5.0.
Issue createIssueObject(String remoteUserName, Map<StringObject> fields)
Creates an issue.
Issue createIssueObject(User remoteUser, Issue issue)
Creates an issue.
Issue createIssueObject(User remoteUser, Map<StringObject> fields)
Creates an issue.
void deleteIssue(User user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will delete an issue from JIRA.
void deleteIssue(User user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
void deleteIssueNoEvent(Issue issue)
Delete issue without firing any events, or sending notifications.
void deleteIssueNoEvent(MutableIssue issue)
This method is deprecated. Use deleteIssueNoEvent(com.atlassian.jira.issue.Issue) instead. Since v5.0.
@Internal Issue findMovedIssue(String oldIssueKey)
Returns an issue that has been moved by searching on the old issue key.
Set<String> getAllIssueKeys(Long issueId)
Returns all issue keys that are associated with Issue.
List<GenericValue> getEntitiesByIssue(String relationName, GenericValue issue)
Get a list of entities (versions, components etc) related to this issue.
List<GenericValue> getEntitiesByIssueObject(String relationName, Issue issue)
Get a list of entities (versions, components etc) related to this issue.
@Deprecated GenericValue getIssue(Long id)
This method is deprecated. Use getIssueObject(Long) instead.
@Deprecated GenericValue getIssue(String key)
This method is deprecated. Use getIssueObject(String) instead.
@ExperimentalApi MutableIssue getIssueByCurrentKey(String key)
Retrieves the Issue that has the given key, or null if no such Issue exists.
@ExperimentalApi MutableIssue getIssueByKeyIgnoreCase(String key)
Retrieves the Issue that has the given key, or null if no such Issue exists.
@Deprecated GenericValue getIssueByWorkflow(Long wfid)
This method is deprecated. Use getIssueObjectByWorkflow(Long) instead. Since v5.0
long getIssueCount()
Returns the number of issues.
long getIssueCountForProject(Long projectId)
Returns the number of issues that exist for the provided project id.
Collection<Long> getIssueIdsForProject(Long projectId)
Returns all issue ids for a particular project.
MutableIssue getIssueObject(Long id)
Retrieves an issue by id.
MutableIssue getIssueObject(String key)
Retrieves the Issue that has the given key, or null if no such Issue exists.
MutableIssue getIssueObjectByWorkflow(Long workflowId)
Retrieves an issue given a workflow ID.
List<Issue> getIssueObjects(Collection<Long> ids)
Get issues with the following ids.
List<Issue> getIssueObjectsByEntity(String relationName, GenericValue entity)
@Deprecated List<GenericValue> getIssues(Collection<Long> ids)
This method is deprecated. Use getIssueObjects(java.util.Collection) instead. Since v5.0
List<GenericValue> getIssuesByEntity(String relationName, GenericValue entity)
@Deprecated List<GenericValue> getProjectIssues(GenericValue project)
This method is deprecated. only used in test cases, should use a search provider instead.
long getUnassignedIssueCount()
Returns the number of unassigned issues.
List<Issue> getVotedIssues(User user)
This method is deprecated. Use getVotedIssues(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.
List<Issue> getVotedIssues(ApplicationUser user)
Get a list of issues that the user has voted on and can see.
List<Issue> getVotedIssuesOverrideSecurity(ApplicationUser user)
Get a list of issues that the user has voted on.
List<Issue> getVotedIssuesOverrideSecurity(User user)
This method is deprecated. Use getVotedIssuesOverrideSecurity(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.
List<Issue> getWatchedIssues(User user)
This method is deprecated. Use getWatchedIssues(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.
List<Issue> getWatchedIssues(ApplicationUser user)
Get a list of issues that the user is watching and can see.
List<Issue> getWatchedIssuesOverrideSecurity(ApplicationUser user)
Get a list of issues that the user is watching
List<Issue> getWatchedIssuesOverrideSecurity(User user)
This method is deprecated. Use getWatchedIssuesOverrideSecurity(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.
List<User> getWatchers(Issue issue)
This method is deprecated. Use getWatchersFor(Issue) instead. Since v6.0.
List<ApplicationUser> getWatchersFor(Issue issue)
Return a list of watchers for a particular issue.
boolean hasUnassignedIssues()
Returns a boolean indicating whether there are unassigned issues.
boolean isEditable(Issue issue, User user)
Returns true if the issue can be edited by the current user.
boolean isEditable(Issue issue)
Returns true if the issue can be edited.
@ExperimentalApi boolean isExistingIssueKey(String issueKey)
Returns true if issue with a given key exists (it looks for issues having current issue key set for the value, and moved issue keys that used the key).
@Internal void recordMovedIssueKey(Issue oldIssue)
Used internally when we want to record that an Issue has changed its Issue key (because it has moved project).
Issue updateIssue(User user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will store the provided issue to the JIRA datastore.
Issue updateIssue(ApplicationUser user, MutableIssue issue, UpdateIssueRequest updateIssueRequest)
This method will store the provided issue to the JIRA datastore.

Public Methods

@Deprecated public GenericValue createIssue (String remoteUserName, Map<StringObject> fields)

This method is deprecated.
Use createIssueObject(String, Map) instead since v5.0.

Creates an issue.

Parameters
remoteUserName Issue creator
fields A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
Returns
  • GenericValue representing the new issue.
Throws
CreateException If JIRA is unable to create the issue.

@Deprecated public GenericValue createIssue (User remoteUser, Issue issue)

This method is deprecated.
Use createIssueObject(User, Issue) instead. Since v5.0

Persists a new issue.

Parameters
remoteUser Issue creator
issue The new issue.
Returns
  • GenericValue representing the new issue.
Throws
CreateException If JIRA is unable to create the issue.

@Deprecated public GenericValue createIssue (User remoteUser, Map<StringObject> fields)

This method is deprecated.
Use createIssueObject(User, java.util.Map) instead. Since v5.0.

Creates an issue.

Parameters
remoteUser Issue creator
fields A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
Returns
  • GenericValue representing the new issue.
Throws
CreateException If JIRA is unable to create the issue.

public Issue createIssueObject (String remoteUserName, Map<StringObject> fields)

Creates an issue.

Parameters
remoteUserName Issue creator
fields A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
Returns
  • representing the new issue.
Throws
CreateException If JIRA is unable to create the issue.

public Issue createIssueObject (User remoteUser, Issue issue)

Creates an issue.

Parameters
remoteUser Issue creator
issue The new issue.
Returns
  • the new issue.
Throws
CreateException If JIRA is unable to create the issue.

public Issue createIssueObject (User remoteUser, Map<StringObject> fields)

Creates an issue.

Parameters
remoteUser Issue creator
fields A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
Returns
  • the new issue.
Throws
CreateException If JIRA is unable to create the issue.

public void deleteIssue (User user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail)

This method will delete an issue from JIRA.

This will clean up all issue associations in JIRA and will de-index the issue.

This method should be used if you want to exert more control over what happens when JIRA deletes an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the deletion.

Parameters
user who is performing the operation
issue the issue to delete.
eventDispatchOption specifies if an event should be sent and if so which should be sent.
sendMail if true mail notifications will be sent, otherwise mail notifications will be suppressed.
Throws
RemoveException throw if something goes horribly wrong when deleting the issue.

public void deleteIssue (User user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)

This method is deprecated.
Use deleteIssue(com.atlassian.crowd.embedded.api.User, Issue, com.atlassian.jira.event.type.EventDispatchOption, boolean) instead. Since v5.0.

This method will delete an issue from JIRA. This will clean up all issue associations in JIRA and will de-index the issue.

This method should be used if you want to exert more control over what happens when JIRA deletes an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the deletion.

Parameters
user who is performing the operation
issue the issue to delete.
eventDispatchOption specifies if an event should be sent and if so which should be sent.
sendMail if true mail notifications will be sent, otherwise mail notifications will be suppressed.
Throws
RemoveException throw if something goes horribly wrong when deleting the issue.

public void deleteIssueNoEvent (Issue issue)

Delete issue without firing any events, or sending notifications.

This is preferred in some bulk operations, but normally you would call deleteIssue(com.atlassian.crowd.embedded.api.User, Issue, com.atlassian.jira.event.type.EventDispatchOption, boolean)

Parameters
issue issue to delete
Throws
RemoveException if the removal fails

public void deleteIssueNoEvent (MutableIssue issue)

This method is deprecated.
Use deleteIssueNoEvent(com.atlassian.jira.issue.Issue) instead. Since v5.0.

Delete issue without firing any events, or sending notifications.

This is preferred in some bulk operations, but normally you would call deleteIssue(com.atlassian.crowd.embedded.api.User, MutableIssue, com.atlassian.jira.event.type.EventDispatchOption, boolean)

Parameters
issue issue to delete
Throws
RemoveException if the removal fails

@Internal public Issue findMovedIssue (String oldIssueKey)

@Internal

This method is an internal implementation detail and will change without notice.

Clients that depend on @Internal classes and interfaces can not expect to be compatible with any version other than the version they were compiled against (even minor version and milestone releases may break binary compatibility with respect to @Internal elements).

Returns an issue that has been moved by searching on the old issue key.

Parameters
oldIssueKey the original key of an issue that has since been moved (moving between projects assigns a new key to an issue)
Returns

public Set<String> getAllIssueKeys (Long issueId)

Returns all issue keys that are associated with Issue.

Returns
  • all issue keys (including the current one) associated with the issue

public List<GenericValue> getEntitiesByIssue (String relationName, GenericValue issue)

Get a list of entities (versions, components etc) related to this issue.

Parameters
relationName A IssueRelationConstants string indicating some issue relation
issue Issue to consider
Returns
  • A list of entity GenericValues associated with the issue.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public List<GenericValue> getEntitiesByIssueObject (String relationName, Issue issue)

Get a list of entities (versions, components etc) related to this issue.

Parameters
relationName A IssueRelationConstants string indicating some issue relation
issue Issue to consider
Returns
  • A list of entity GenericValues associated with the issue.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

@Deprecated public GenericValue getIssue (Long id)

This method is deprecated.
Use getIssueObject(Long) instead.

Retrieves an issue by its id.

Parameters
id Issue ID.
Returns
  • An issue GenericValue.
Throws
DataAccessException if there is an error in the Data Access Layer.

@Deprecated public GenericValue getIssue (String key)

This method is deprecated.
Use getIssueObject(String) instead.

Retrieves the issue as a GenericValue with the given key.

Parameters
key the issue key.
Returns
  • the issue as a GenericValue.
Throws
GenericEntityException if there is a problem getting the data

@ExperimentalApi public MutableIssue getIssueByCurrentKey (String key)

@ExperimentalApi

This method is considered usable by external developers but its contracts have not stabilized.

Experimental APIs may be changed at any time before being marked @Internal or @PublicApi.

Retrieves the Issue that has the given key, or null if no such Issue exists.

This method will strictly only return the issue which has current issue key equal to the one given.

Parameters
key The Issue key.
Returns
  • a MutableIssue with the given key, or null if no such Issue exists.
Throws
DataAccessException if there is an error in the Data Access Layer.

@ExperimentalApi public MutableIssue getIssueByKeyIgnoreCase (String key)

@ExperimentalApi

This method is considered usable by external developers but its contracts have not stabilized.

Experimental APIs may be changed at any time before being marked @Internal or @PublicApi.

Retrieves the Issue that has the given key, or null if no such Issue exists.

This method will ignore case of issue key.

Parameters
key The Issue key.
Returns
  • a MutableIssue with the given key, or null if no such Issue exists.
Throws
DataAccessException if there is an error in the Data Access Layer.

@Deprecated public GenericValue getIssueByWorkflow (Long wfid)

This method is deprecated.
Use getIssueObjectByWorkflow(Long) instead. Since v5.0

Retrieves an issue GenericValue given a workflow ID. This is used when transitioning through the various steps of a workflow.

Parameters
wfid workflow ID.
Returns
  • An issue GenericValue.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public long getIssueCount ()

Returns the number of issues.

Returns
  • the number of issues

public long getIssueCountForProject (Long projectId)

Returns the number of issues that exist for the provided project id.

Parameters
projectId identifies the project which the issues are associated with
Returns
  • a count of how many issues exist in the project

public Collection<Long> getIssueIdsForProject (Long projectId)

Returns all issue ids for a particular project. This uses constant memory (i.e. doesn't load all issues into memory.

Parameters
projectId Project ID.
Returns
  • A collection of issue IDs
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public MutableIssue getIssueObject (Long id)

Retrieves an issue by id. This method will always return a new instance of an issue.

Parameters
id the id
Returns
Throws
DataAccessException if there is an error in the Data Access Layer.

public MutableIssue getIssueObject (String key)

Retrieves the Issue that has the given key, or null if no such Issue exists.

This method will always return a new instance of an issue object if the issue exists.

Parameters
key The Issue key.
Returns
  • a MutableIssue with the given key, or null if no such Issue exists.
Throws
DataAccessException if there is an error in the Data Access Layer.

public MutableIssue getIssueObjectByWorkflow (Long workflowId)

Retrieves an issue given a workflow ID. This is used when transitioning through the various steps of a workflow.

Parameters
workflowId workflow ID.
Returns
  • The Issue
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public List<Issue> getIssueObjects (Collection<Long> ids)

Get issues with the following ids. The issues are sorted in the order that the ids were given in. Any ids that are not found will be missing from the list. That is list will not contains nulls.

Parameters
ids Issue IDs.
Returns

public List<Issue> getIssueObjectsByEntity (String relationName, GenericValue entity)

This method is deprecated.
Use getIssueIdsWithAffectsVersion(com.atlassian.jira.project.version.Version), getIssueIdsWithFixVersion(com.atlassian.jira.project.version.Version), or getIssueIdsWithComponent(com.atlassian.jira.bc.project.component.ProjectComponent) instead. Since v6.1.

Get a list of issues related to an entity (version, component etc).

Parameters
relationName A IssueRelationConstants string indicating some relation of entity
entity The entity related to the issues we're after
Returns
Throws
GenericEntityException if it failed to get the list of issues.

@Deprecated public List<GenericValue> getIssues (Collection<Long> ids)

This method is deprecated.
Use getIssueObjects(java.util.Collection) instead. Since v5.0

Get issues with the following ids. The issues are sorted in the order that the ids were given in.

Parameters
ids Issue IDs.
Returns
  • A collection of issue GenericValues

public List<GenericValue> getIssuesByEntity (String relationName, GenericValue entity)

This method is deprecated.
Use getIssueIdsWithAffectsVersion(com.atlassian.jira.project.version.Version), getIssueIdsWithFixVersion(com.atlassian.jira.project.version.Version), or getIssueIdsWithComponent(com.atlassian.jira.bc.project.component.ProjectComponent) instead. Since v6.1.

Get a list of issues related to an entity (version, component etc).

Parameters
relationName A IssueRelationConstants string indicating some relation of entity
entity The entity related to the issues we're after
Returns
  • A list of issue GenericValues associated with an entity.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

@Deprecated public List<GenericValue> getProjectIssues (GenericValue project)

This method is deprecated.
only used in test cases, should use a search provider instead.

Get all the issues for a given project.

Parameters
project the Project
Returns
  • a List of GenericValue objects
Throws
GenericEntityException If there are errors in the persistence layer.

public long getUnassignedIssueCount ()

Returns the number of unassigned issues.

Returns
  • the number of unassigned issues

public List<Issue> getVotedIssues (User user)

This method is deprecated.
Use getVotedIssues(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.

Get a list of issues that the user has voted on and can see.

Parameters
user The user.
Returns
  • A list of Issue objects the user has voted on.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public List<Issue> getVotedIssues (ApplicationUser user)

Get a list of issues that the user has voted on and can see.

Parameters
user The user.
Returns
  • A list of Issue objects the user has voted on.

public List<Issue> getVotedIssuesOverrideSecurity (ApplicationUser user)

Get a list of issues that the user has voted on.

Parameters
user The user.
Returns
  • A list of Issue objects the user has voted on.

public List<Issue> getVotedIssuesOverrideSecurity (User user)

This method is deprecated.
Use getVotedIssuesOverrideSecurity(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.

Get a list of issues that the user has voted on.

Parameters
user The user.
Returns
  • A list of Issue objects the user has voted on.
Throws
GenericEntityException An exception in the ofbiz Entity Engine.

public List<Issue> getWatchedIssues (User user)

This method is deprecated.
Use getWatchedIssues(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.

Get a list of issues that the user is watching and can see.

Parameters
user the User.
Returns

public List<Issue> getWatchedIssues (ApplicationUser user)

Get a list of issues that the user is watching and can see.

Parameters
user the User.
Returns

public List<Issue> getWatchedIssuesOverrideSecurity (ApplicationUser user)

Get a list of issues that the user is watching

Parameters
user the User.
Returns

public List<Issue> getWatchedIssuesOverrideSecurity (User user)

This method is deprecated.
Use getWatchedIssuesOverrideSecurity(com.atlassian.jira.user.ApplicationUser) instead. Since v6.0.

Get a list of issues that the user is watching

Parameters
user the User.
Returns

public List<User> getWatchers (Issue issue)

This method is deprecated.
Use getWatchersFor(Issue) instead. Since v6.0.

Return a list of watchers for a particular issue.

Parameters
issue the Issue
Returns

public List<ApplicationUser> getWatchersFor (Issue issue)

Return a list of watchers for a particular issue.

Parameters
issue the Issue
Returns

public boolean hasUnassignedIssues ()

Returns a boolean indicating whether there are unassigned issues.

Returns
  • a boolean indicating whether there are unassigned issues

public boolean isEditable (Issue issue, User user)

Returns true if the issue can be edited by the current user. This is determined by looking at both the user's permissions and the workflow step the issue is in.

Parameters
issue the issue you want to edit
user the user who will be performing the edit
Returns
  • true if the user has permission and the issue is in an editable workflow step

public boolean isEditable (Issue issue)

Returns true if the issue can be edited. This is determined by looking at the workflow step the issue is in.

Parameters
issue the Issue.
Returns
  • true if the issue can be edited. This is determined by looking at the workflow step the issue is in.

@ExperimentalApi public boolean isExistingIssueKey (String issueKey)

@ExperimentalApi

This method is considered usable by external developers but its contracts have not stabilized.

Experimental APIs may be changed at any time before being marked @Internal or @PublicApi.

Returns true if issue with a given key exists (it looks for issues having current issue key set for the value, and moved issue keys that used the key).

Throws
GenericEntityException

@Internal public void recordMovedIssueKey (Issue oldIssue)

@Internal

This method is an internal implementation detail and will change without notice.

Clients that depend on @Internal classes and interfaces can not expect to be compatible with any version other than the version they were compiled against (even minor version and milestone releases may break binary compatibility with respect to @Internal elements).

Used internally when we want to record that an Issue has changed its Issue key (because it has moved project).

Parameters
oldIssue The issue with it's old issue key

public Issue updateIssue (User user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)

This method will store the provided issue to the JIRA datastore. The issue will be saved and re-indexed. This method performs no permission checks.

This method should be used if you want to exert more control over what happens when JIRA updates an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the update.

Parameters
user who is performing the operation
issue the issue to update
eventDispatchOption specifies if an event should be sent and if so which should be sent.
sendMail if true mail notifications will be sent, otherwise mail notifications will be suppressed.
Returns
  • the updated issue.

public Issue updateIssue (ApplicationUser user, MutableIssue issue, UpdateIssueRequest updateIssueRequest)

This method will store the provided issue to the JIRA datastore. The issue will be saved and re-indexed. This method performs no permission checks.

This method should be used if you want to exert more control over what happens when JIRA updates an issue.

Parameters
user who is performing the operation
issue the issue to update
updateIssueRequest details about how to perform the update, including user context, event dispatch strategy and history metadata