Skip to content

Commit 630a42f

Browse files
committed
use issueLinkService instead of manager
1 parent bee12b8 commit 630a42f

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/SdkJiraIssueLinkOperator.kt

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
package com.linkedplanet.kotlinjiraclient.sdk
2121

2222
import arrow.core.Either
23-
import com.atlassian.jira.bc.issue.IssueService
23+
import com.atlassian.jira.bc.issue.link.IssueLinkService
2424
import com.atlassian.jira.component.ComponentAccessor
25+
import com.atlassian.jira.issue.link.Direction
2526
import com.atlassian.jira.issue.link.IssueLinkTypeManager
2627
import com.linkedplanet.kotlinjiraclient.api.error.JiraClientError
2728
import com.linkedplanet.kotlinjiraclient.api.interfaces.JiraIssueLinkOperator
@@ -30,32 +31,34 @@ import com.linkedplanet.kotlinjiraclient.sdk.util.toEither
3031

3132
object SdkJiraIssueLinkOperator : JiraIssueLinkOperator {
3233

33-
private val issueService: IssueService = ComponentAccessor.getIssueService()
34-
private val issueLinkManager = ComponentAccessor.getIssueLinkManager()
34+
private val issueService = ComponentAccessor.getIssueService()
35+
private val issueLinkService = ComponentAccessor.getComponent(IssueLinkService::class.java)
3536
private val issueLinkTypeManager = ComponentAccessor.getComponent(IssueLinkTypeManager::class.java)
3637
private val jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext()
3738

3839
private fun user() = jiraAuthenticationContext.loggedInUser
40+
private const val DISPATCH_EVENT: Boolean = true // default dispatch behaviour for this operator
3941

4042
override suspend fun createIssueLink(
4143
inwardIssueKey: String,
4244
outwardIssueKey: String,
4345
relationName: String
4446
): Either<JiraClientError, Unit> =
4547
eitherAndCatch {
46-
val inwardSourceIssue = issueService.getIssue(user(), inwardIssueKey).toEither().bind().issue
47-
val outwardIssue = issueService.getIssue(user(), outwardIssueKey).toEither().bind().issue
48+
val user = user()
49+
val inwardSourceIssue = issueService.getIssue(user, inwardIssueKey).toEither().bind().issue
50+
val outwardIssue = issueService.getIssue(user, outwardIssueKey).toEither().bind().issue
4851
val linkType = issueLinkTypeManager.getIssueLinkTypesByName(relationName).firstOrNull()
4952
?: return issueLinkTypeNotFound(relationName)
50-
val sequence: Long? = null // For UI ordering. Sequence on links does not matter
51-
52-
issueLinkManager.createIssueLink(
53-
inwardSourceIssue.id,
54-
outwardIssue.id,
53+
val validate = issueLinkService.validateAddIssueLinks(
54+
user,
55+
outwardIssue,
5556
linkType.id,
56-
sequence,
57-
user()
58-
)
57+
Direction.OUT,
58+
listOf(inwardSourceIssue.key),
59+
DISPATCH_EVENT
60+
).toEither().bind()
61+
issueLinkService.addIssueLinks(user, validate)
5962
}
6063

6164
private fun issueLinkTypeNotFound(relationName: String): Either<JiraClientError, Unit> = Either.Left(
@@ -64,7 +67,10 @@ object SdkJiraIssueLinkOperator : JiraIssueLinkOperator {
6467

6568
override suspend fun deleteIssueLink(linkId: String): Either<JiraClientError, Unit> =
6669
eitherAndCatch {
67-
val issueLink = issueLinkManager.getIssueLink(linkId.toLong())
68-
issueLinkManager.removeIssueLink(issueLink, user())
70+
val user = user()
71+
val issueLink = issueLinkService.getIssueLink(linkId.toLong(), user).toEither().bind().issueLink
72+
val issue = issueService.getIssue(user, issueLink.destinationId).toEither().bind().issue
73+
val validate = issueLinkService.validateDelete(user, issue, issueLink).toEither().bind()
74+
issueLinkService.delete(validate)
6975
}
7076
}

0 commit comments

Comments
 (0)