Class DefaultIssueLinkService

java.lang.Object
com.atlassian.jira.bc.issue.link.DefaultIssueLinkService
All Implemented Interfaces:
IssueLinkService

public class DefaultIssueLinkService extends Object implements IssueLinkService
An implementation of Issue Linking Service
Since:
5.0
  • Constructor Details

  • Method Details

    • getIssueLinkTypes

      public Collection<IssueLinkType> getIssueLinkTypes()
      Specified by:
      getIssueLinkTypes in interface IssueLinkService
      Returns:
      the all issue link types defined in JIRA
    • getIssueLink

      public IssueLink getIssueLink(Long sourceId, Long destinationId, Long issueLinkTypeId)
      Description copied from interface: IssueLinkService
      Returns the issue link or null if not found.
      Specified by:
      getIssueLink in interface IssueLinkService
      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
    • getIssueLink

      public IssueLinkService.SingleIssueLinkResult getIssueLink(Long issueLinkId, ApplicationUser user)
      Description copied from interface: IssueLinkService
      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.
      Specified by:
      getIssueLink in interface IssueLinkService
      Parameters:
      issueLinkId - issue link id.
      user - The user performing the operation
      Returns:
      a result that contains the issue link.
    • getIssueLinks

      public IssueLinkService.IssueLinkResult getIssueLinks(ApplicationUser user, Issue issue)
      Description copied from interface: IssueLinkService
      Returns the issue links that the specified user can see. Will only return non-system (user-defined) links.
      Specified by:
      getIssueLinks in interface IssueLinkService
      Parameters:
      user - The user performing the operation
      issue - The issue that links will retrieved on
      Returns:
      a result that contains the issue links
    • getIssueLinks

      public IssueLinkService.IssueLinkResult getIssueLinks(ApplicationUser user, Issue issue, boolean excludeSystemLinks)
      Specified by:
      getIssueLinks in interface IssueLinkService
      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:
      • invalid reference
        #getIssueLinks(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue)
    • validateAddIssueLinks

      public IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks(ApplicationUser user, Issue issue, String linkName, Collection<String> linkKeys)
      Description copied from interface: IssueLinkService
      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.

      Specified by:
      validateAddIssueLinks in interface IssueLinkService
      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.
    • validateAddIssueLinks

      public IssueLinkService.AddIssueLinkValidationResult validateAddIssueLinks(ApplicationUser user, Issue issue, Long issueLinkTypeId, Direction direction, Collection<String> linkKeys, boolean excludeSystemLinks)
      Specified by:
      validateAddIssueLinks in interface IssueLinkService
      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.
    • addIssueLinks

      public void addIssueLinks(ApplicationUser user, IssueLinkService.AddIssueLinkValidationResult result)
      Description copied from interface: IssueLinkService
      Adds the issue link to the issue specified by the validation result.
      Specified by:
      addIssueLinks in interface IssueLinkService
      Parameters:
      user - The user performing the operation
      result - The validation result obtained via
      invalid reference
      #validateAddIssueLinks(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue, String, java.util.Collection)
    • validateDelete

      public IssueLinkService.DeleteIssueLinkValidationResult validateDelete(ApplicationUser user, Issue issue, IssueLink issueLink)
      Description copied from interface: IssueLinkService
      Validates parameters and checks permissions, and if all checks pass it will create a IssueLinkService.DeleteIssueLinkValidationResult that can be passed to the IssueLinkService.delete(DeleteIssueLinkValidationResult) method.
      Specified by:
      validateDelete in interface IssueLinkService
      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
    • delete

      public void delete(IssueLinkService.DeleteIssueLinkValidationResult validationResult)
      Description copied from interface: IssueLinkService
      Deletes the issue link with the given id from the JIRA datastore, if the current user has permission to do so.
      Specified by:
      delete in interface IssueLinkService
      Parameters:
      validationResult - contains the remote issue link id to delete. This should have been created by the
      invalid reference
      #validateDelete(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.link.IssueLink)
      method. The result must have ServiceResult.isValid() return true. If false this method will throw an IllegalStateException.