Interface IssueLinkManager

All Known Implementing Classes:
DefaultIssueLinkManager

@PublicApi public interface IssueLinkManager
The implementations of this class are used to manage issue link types and issue links.

WARNING: Prior to JIRA v7.0.1, most issue link queries were globally cached. This is no longer the case, and developers are advised to cache this information locally where they may have previously relied upon that caching behaviour for acceptable performance.

  • Method Details

    • createIssueLink

      void createIssueLink(Long sourceIssueId, Long destinationIssueId, Long issueLinkTypeId, Long sequence, ApplicationUser remoteUser) throws CreateException
      Constructs a new issuelink from the sourceIssueId to the destinationId and persists it. This operation will cause a re-index of the associated issues.
      Parameters:
      sourceIssueId - The source issue.
      destinationIssueId - The destination issue.
      issueLinkTypeId - The type of issuelink
      sequence - In which order the link will appear in the UI
      remoteUser - Needed for creation of change items.
      Throws:
      CreateException - If there is an error when creating the "Change Item" for this operation. Note that the Link itself has most likely been created.
    • removeIssueLink

      void removeIssueLink(IssueLink issueLink, ApplicationUser remoteUser)
      Removes a single issue link We do not check for permission here. It should be done before this method is called. For example, in the action.
      Parameters:
      issueLink - the issue link to remove
      remoteUser - needed for creation of change items
      Throws:
      IllegalArgumentException - if the supplied issueLink is null.
    • removeIssueLinks

      int removeIssueLinks(org.ofbiz.core.entity.GenericValue issue, ApplicationUser remoteUser)
      Deprecated.
      Use #removeIssueLinks(com.atlassian.jira.issue.Issue, com.atlassian.crowd.embedded.api.User) instead. Since v5.0.
      Removes ALL incoming and outgoing issuelinks from the issue supplied.
      Parameters:
      issue - the Issue
      remoteUser - the remote user
      Returns:
      The total number of issuelinks deleted.
    • removeIssueLinks

      int removeIssueLinks(Issue issue, ApplicationUser remoteUser)
      Removes ALL incoming and outgoing issuelinks from the issue supplied.
      Parameters:
      issue - the Issue
      remoteUser - the remote user
      Returns:
      The total number of issuelinks deleted.
    • removeIssueLinksNoChangeItems

      int removeIssueLinksNoChangeItems(Issue issue)
      Removes ALL incoming and outgoing issuelinks from the issue supplied without creating ChangeItems for the Change History.

      You would normally want to use the other method which creates the ChangeItems - this method is only intended for use during Issue Delete.

      Parameters:
      issue - the Issue
      Returns:
      The total number of issuelinks deleted.
      See Also:
    • getLinkCollection

      LinkCollection getLinkCollection(org.ofbiz.core.entity.GenericValue issue, ApplicationUser remoteUser)
      Constructs a LinkCollection for a given issue.
      Parameters:
      issue - the Issue
      remoteUser - the remote user
      Returns:
      A LinkCollection with all the issues ingoing and outgoing issue links
    • getLinkCollection

      LinkCollection getLinkCollection(Issue issue, ApplicationUser remoteUser, boolean excludeSystemLinks)
      Parameters:
      issue - the issue
      remoteUser - the user performing the search
      excludeSystemLinks - whether or not to exclude system links
      Returns:
      A LinkCollection with all the issues ingoing and outgoing issue links
      Since:
      v4.4.2
      See Also:
      • #getLinkCollection(com.atlassian.jira.issue.Issue, com.atlassian.crowd.embedded.api.User)
    • getLinkCollection

      LinkCollection getLinkCollection(Issue issue, ApplicationUser remoteUser)
      Constructs a LinkCollection for a given issue.
      Parameters:
      issue - the issue
      remoteUser - the user performing the search
      Returns:
      A LinkCollection with all the issues ingoing and outgoing issue links
      Since:
      v4.0
    • getLinkCollectionOverrideSecurity

      LinkCollection getLinkCollectionOverrideSecurity(Issue issue)
      Constructs a LinkCollection for a given issue, ignoring security.
      Parameters:
      issue - the issue
      Returns:
      A LinkCollection with all the issues ingoing and outgoing issue links
      Since:
      v4.0
    • getIssueLinks

      Collection<IssueLink> getIssueLinks(Long issueLinkTypeId)
      Returns a collection of all IssueLinks for a particular issue link type
      Parameters:
      issueLinkTypeId - ID of the Issue Link Type
      Returns:
      A collection of IssueLinks
    • getIssueLink

      IssueLink getIssueLink(Long issueLinkId)
      Returns the IssueLink with the specified id.
      Parameters:
      issueLinkId - the issue link id.
      Returns:
      the IssueLink. Can be NULL, if no issue link found.
    • getOutwardLinks

      List<IssueLink> getOutwardLinks(Long sourceIssueId)
      Get links from an issue.
      Parameters:
      sourceIssueId - Eg. from Issue.getId()
      Returns:
      List of IssueLinks. This list will be immutable.
    • getInwardLinks

      List<IssueLink> getInwardLinks(Long destinationIssueId)
      Get links to an issue.
      Parameters:
      destinationIssueId - Eg. from Issue.getId()
      Returns:
      List of IssueLinks. This list will be immutable.
    • getInwardLinksInBatch

      Map<Long,List<IssueLink>> getInwardLinksInBatch(List<Long> sourceIssueIds)
      Get links to multiple issues.
      Parameters:
      sourceIssueIds - A collection of issue IDs to get the links for.
      Returns:
      A map from issueIDs to their links.
    • getOutwardLinksInBatch

      Map<Long,List<IssueLink>> getOutwardLinksInBatch(List<Long> destinationIssueIds)
      Get links to multiple issues.
      Parameters:
      destinationIssueIds - A collection of issue IDs to get the links for.
      Returns:
      A map from issueIDs to their links.
    • getInwardLinksInBatch

      Map<Long,List<IssueLink>> getInwardLinksInBatch(List<Long> destinationIssueIds, IssueLinkType issueLinkType)
      Get inwards links of given type to a batch of issues.
      Parameters:
      destinationIssueIds - Eg. from Issue.getId()
      Returns:
      Mapping from IssueId to the list of inward links. This list will contain only links of type passed as parameter
    • moveIssueLink

      void moveIssueLink(List<IssueLink> issueLinks, Long currentSequence, Long sequence)
      Moves an issue link to a different position in the list of issuelink. NOTE: This is currently only used when re-ordering sub-tasks.
      Parameters:
      issueLinks - The list of issueLinks
      currentSequence - The postion of the issuelink about to be moved
      sequence - The target position of the issuelink
      Throws:
      IllegalArgumentException - If currentSequence or sequence are null
    • resetSequences

      void resetSequences(List<IssueLink> issueLinks)
      Sets the sequence number for each issueLink in the List of issueLinks provided according to its position in the List.
      Parameters:
      issueLinks - A list of issue links to be recalculated
    • getIssueLink

      @Nullable IssueLink getIssueLink(Long sourceId, Long destinationId, Long issueLinkTypeId)
      Retrieves an issue link given a source, destination and a link type.
      Parameters:
      sourceId - the ID of the source issue
      destinationId - the ID of the destination issue
      issueLinkTypeId - the issue link type
      Returns:
      an IssueLink or null if this link does not exist
    • changeIssueLinkType

      void changeIssueLinkType(IssueLink issueLink, IssueLinkType swapLinkType, ApplicationUser remoteUser)
      Changes the type of an issue link. NOTE: It is not possible to convert a system link type to a non-system link type and vice versa.
      Parameters:
      issueLink - the issue link
      swapLinkType - the new link type
      remoteUser - the user requesting this change
    • isLinkingEnabled

      boolean isLinkingEnabled()
      Returns whether Issue Linking is currently enabled in JIRA. Issue Linking can be enabled or disabled in the Admin section of JIRA.
    • clearCache

      @Deprecated default void clearCache()
      Deprecated.
      No replacement needed; just stop calling it. Since v7.0.
      Does nothing. This manager no longer has a cache.