public class

RequestCachingIssueManager

extends Object
implements IssueManager
java.lang.Object
   ↳ com.atlassian.jira.issue.managers.RequestCachingIssueManager

Summary

Public Constructors
RequestCachingIssueManager(IssueManager delegate)
Public Methods
boolean atLeastOneIssueExists()
Return true if an issue exists.
@Deprecated GenericValue createIssue(String remoteUserName, Map<StringObject> fields)
Creates an issue.
@Deprecated GenericValue createIssue(ApplicationUser remoteUser, Map<StringObject> fields)
Creates an issue.
@Deprecated GenericValue createIssue(ApplicationUser remoteUser, Issue issue)
Persists a new issue.
Issue createIssueObject(ApplicationUser remoteUser, Issue issue)
Creates an issue.
Issue createIssueObject(ApplicationUser remoteUser, Map<StringObject> fields)
Creates an issue.
Issue createIssueObject(String remoteUserName, Map<StringObject> fields)
Creates an issue.
void deleteIssue(ApplicationUser user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will delete an issue from JIRA.
@Deprecated void deleteIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will delete an issue from JIRA.
@Deprecated void deleteIssueNoEvent(MutableIssue issue)
Delete issue without firing any events, or sending notifications.
void deleteIssueNoEvent(Issue issue)
Delete issue without firing any events, or sending notifications.
@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.
@Internal @Nonnull Set<Long> getIdsOfMissingIssues(Set<Long> issueIds)
Check existence of issues for the given set of IDs
@Deprecated GenericValue getIssue(String key)
Retrieves the issue as a GenericValue with the given key.
@Deprecated GenericValue getIssue(Long id)
Retrieves an issue by its id.
@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)
Retrieves an issue GenericValue given a workflow ID.
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(String key)
Retrieves the Issue that has the given key, or null if no such Issue exists.
MutableIssue getIssueObject(Long id)
Retrieves an issue by id.
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)
Get a list of issues related to an entity (version, component etc).
@Deprecated List<GenericValue> getIssues(Collection<Long> ids)
Get issues with the following ids.
List<GenericValue> getIssuesByEntity(String relationName, GenericValue entity)
Get a list of issues related to an entity (version, component etc).
@Internal @Nonnull Set<String> getKeysOfMissingIssues(Set<String> issueKeys)
Check existence of issues for the given set of keys
@Internal @Nonnull Set<Pair<LongString>> getProjectIssueTypePairsByIds(Set<Long> issueIds)
Returns a set of project ID / issue type combinations that given issue IDs cover.
@Internal @Nonnull Set<Pair<LongString>> getProjectIssueTypePairsByKeys(Set<String> issueKeys)
Returns a set of project ID / issue type combinations that given issue keys cover.
@Deprecated List<GenericValue> getProjectIssues(GenericValue project)
Get all the issues for a given project.
long getUnassignedIssueCount()
Returns the number of unassigned issues.
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> 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<ApplicationUser> getWatchers(Issue issue)
Return a list of watchers for a particular issue.
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, ApplicationUser 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(ApplicationUser user, MutableIssue issue, UpdateIssueRequest updateIssueRequest)
This method will store the provided issue to the JIRA datastore.
Issue updateIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will store the provided issue to the JIRA datastore.
[Expand]
Inherited Methods
From class java.lang.Object
From interface com.atlassian.jira.issue.IssueManager

Public Constructors

public RequestCachingIssueManager (IssueManager delegate)

Public Methods

public boolean atLeastOneIssueExists ()

Return true if an issue exists. This is a performance enhancement over counting the issues.

Returns
  • true if an issue exists

@Deprecated public GenericValue createIssue (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
  • GenericValue representing the new issue.

@Deprecated public GenericValue createIssue (ApplicationUser 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
  • GenericValue representing the new issue.

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

Persists a new issue.

Parameters
remoteUser Issue creator
issue The new issue.
Returns
  • GenericValue representing the new issue.

public Issue createIssueObject (ApplicationUser remoteUser, Issue issue)

Creates an issue.

Parameters
remoteUser Issue creator
issue The new issue.
Returns
  • the new issue.

public Issue createIssueObject (ApplicationUser 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.

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.

public void deleteIssue (ApplicationUser 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.

@Deprecated public void deleteIssue (ApplicationUser user, MutableIssue 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.

@Deprecated public void deleteIssueNoEvent (MutableIssue 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, MutableIssue, com.atlassian.jira.event.type.EventDispatchOption, boolean)

Parameters
issue issue to delete

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

@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

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

@Internal @Nonnull public Set<Long> getIdsOfMissingIssues (Set<Long> issueIds)

@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).

Check existence of issues for the given set of IDs

Parameters
issueIds Set of issue IDs
Returns
  • Set of IDs that don't represent an issue

@Deprecated public GenericValue getIssue (String key)

Retrieves the issue as a GenericValue with the given key.

Parameters
key the issue key.
Returns
  • the issue as a GenericValue.
Throws
GenericEntityException

@Deprecated public GenericValue getIssue (Long id)

Retrieves an issue by its id.

Parameters
id Issue ID.
Returns
  • An issue GenericValue.

@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.

@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.

@Deprecated public GenericValue getIssueByWorkflow (Long wfid)

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

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

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.

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

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

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)

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

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

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)

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

@Internal @Nonnull public Set<String> getKeysOfMissingIssues (Set<String> issueKeys)

@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).

Check existence of issues for the given set of keys

Parameters
issueKeys Set of issue keys
Returns
  • Set of invalid keys or the ones that don't represent an issue

@Internal @Nonnull public Set<Pair<LongString>> getProjectIssueTypePairsByIds (Set<Long> issueIds)

@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 a set of project ID / issue type combinations that given issue IDs cover.

Parameters
issueIds Set of issue IDs
Returns
  • Project ID / issue type pairs

@Internal @Nonnull public Set<Pair<LongString>> getProjectIssueTypePairsByKeys (Set<String> issueKeys)

@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 a set of project ID / issue type combinations that given issue keys cover.

Parameters
issueKeys Set of issue keys
Returns
  • Project ID / issue type pairs

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

Get all the issues for a given project.

Parameters
project the Project
Returns
  • a List of GenericValue objects
Throws
GenericEntityException

public long getUnassignedIssueCount ()

Returns the number of unassigned issues.

Returns
  • the number of unassigned issues

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> 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<ApplicationUser> getWatchers (Issue issue)

Return a list of watchers for a particular issue.

Parameters
issue the Issue
Returns
  • A list of Users.

public List<ApplicationUser> getWatchersFor (Issue issue)

Return a list of watchers for a particular issue.

Parameters
issue the Issue
Returns
  • A list of Users.

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, ApplicationUser 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 (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
Returns
  • the updated issue.

public Issue updateIssue (ApplicationUser 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 unless DO_NOT_DISPATCH is specified. 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.