@PublicApi public interface

IssueLinkService

com.atlassian.jira.bc.issue.link.IssueLinkService
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

Provides methods to link two JIRA Issues.

Summary

Nested Classes
class IssueLinkService.AddIssueLinkValidationResult  
class IssueLinkService.DeleteIssueLinkValidationResult  
class IssueLinkService.IssueLinkResult  
class IssueLinkService.IssueLinkValidationResult  
class IssueLinkService.SingleIssueLinkResult  
Public Methods
void addIssueLinks(ApplicationUser user, IssueLinkService.AddIssueLinkValidationResult result)
Adds the issue link to the issue specified by the validation result.
void delete(IssueLinkService.DeleteIssueLinkValidationResult deleteValidationResult)
Deletes the issue link with the given id from the JIRA datastore, if the current user has permission to do so.
IssueLink getIssueLink(Long sourceId, Long destinationId, Long issueLinkTypeId)
Returns the issue link or null if not found.
IssueLinkService.SingleIssueLinkResult getIssueLink(Long issueLinkId, ApplicationUser user)
Returns the issue link for the given id.
Collection<IssueLinkType> getIssueLinkTypes()
IssueLinkService.IssueLinkResult getIssueLinks(ApplicationUser user, Issue issue, boolean excludeSystemLinks)
IssueLinkService.IssueLinkResult getIssueLinks(ApplicationUser user, Issue issue)
Returns the issue links that the specified user can see.
IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks(ApplicationUser user, Issue issue, String linkName, Collection<String> linkKeys)
Validates that the user provided can add the link provided for a particular issue.
IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks(ApplicationUser user, Issue issue, Long issueLinkTypeId, Direction direction, Collection<String> linkKeys, boolean excludeSystemLinks)
IssueLinkService.DeleteIssueLinkValidationResult validateDelete(ApplicationUser user, Issue issue, IssueLink issueLink)
Validates parameters and checks permissions, and if all checks pass it will create a IssueLinkService.DeleteIssueLinkValidationResult that can be passed to the delete(DeleteIssueLinkValidationResult) method.

Public Methods

public void addIssueLinks (ApplicationUser user, IssueLinkService.AddIssueLinkValidationResult result)

Adds the issue link to the issue specified by the validation result.

Parameters
user The user performing the operation
result The validation result obtained via #validateAddIssueLinks(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue, String, java.util.Collection)

public void delete (IssueLinkService.DeleteIssueLinkValidationResult deleteValidationResult)

Deletes the issue link with the given id from the JIRA datastore, if the current user has permission to do so.

Parameters
deleteValidationResult contains the remote issue link id to delete. This should have been created by the #validateDelete(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.link.IssueLink) method. The result must have isValid() return true. If false this method will throw an IllegalStateException.

public IssueLink getIssueLink (Long sourceId, Long destinationId, Long issueLinkTypeId)

Returns the issue link or null if not found.

Parameters
sourceId source issue id of the link
destinationId destination issue id of the link
issueLinkTypeId link type id of the link
Returns
  • issue link or null if not found

public IssueLinkService.SingleIssueLinkResult getIssueLink (Long issueLinkId, ApplicationUser user)

Returns the issue link for the given id. It will return the issue link if the user has the permission to see the source and destination issue of this issue link.

Parameters
issueLinkId issue link id.
user The user performing the operation
Returns
  • a result that contains the issue link.

public Collection<IssueLinkType> getIssueLinkTypes ()

Returns
  • the all issue link types defined in JIRA

public IssueLinkService.IssueLinkResult getIssueLinks (ApplicationUser user, Issue issue, boolean excludeSystemLinks)

Parameters
user The user performing the operation
issue The issue that links will retrieved on
excludeSystemLinks whether or not to exclude system links
Returns
  • a result that contains the issue links
See Also
  • #getIssueLinks(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue)

public IssueLinkService.IssueLinkResult getIssueLinks (ApplicationUser user, Issue issue)

Returns the issue links that the specified user can see. Will only return non-system (user-defined) links.

Parameters
user The user performing the operation
issue The issue that links will retrieved on
Returns
  • a result that contains the issue links

public IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks (ApplicationUser user, Issue issue, String linkName, Collection<String> linkKeys)

Validates that the user provided can add the link provided for a particular issue. Validation will ensure that the user has the EDIT_ISSUE permission for the issue in question. The label will also be validated to ensure that it doesn't contain spaces and that it doesn't exceed the max length of 255 characters.

Only user-created (i.e. non-system) links are allowed.

Parameters
user The user performing the operation
issue The issue that links will be set on
linkName The actual link name as strings to set on the issue
linkKeys The collection of issue keys to link against
Returns
  • a validation result, that can be used to set the labels or to display errors.

public IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks (ApplicationUser user, Issue issue, Long issueLinkTypeId, Direction direction, Collection<String> linkKeys, boolean excludeSystemLinks)

Parameters
user The user performing the operation
issue The issue that links will be set on
issueLinkTypeId The actual link id to set on the issue
direction which direction we are linking in
linkKeys The collection of issue keys to link against
excludeSystemLinks whether or not system links are okay
Returns
  • a validation result, that can be used to set the labels or to display errors.

public IssueLinkService.DeleteIssueLinkValidationResult validateDelete (ApplicationUser user, Issue issue, IssueLink issueLink)

Validates parameters and checks permissions, and if all checks pass it will create a IssueLinkService.DeleteIssueLinkValidationResult that can be passed to the delete(DeleteIssueLinkValidationResult) method.

Parameters
user who the permission checks will be run against (can be null, indicating an anonymous user)
issue issue the link is being deleted from
issueLink issue link to be deleted
Returns
  • a validation result, if all validation and permission passes it will contain a validated issue link id, otherwise the issue link id will be null