Skip to content

Commit 4a10a8a

Browse files
committed
use services for SdkJiraIssueTypeOperator
1 parent e6d5150 commit 4a10a8a

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

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

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,33 +20,39 @@
2020
package com.linkedplanet.kotlinjiraclient.sdk
2121

2222
import arrow.core.Either
23+
import com.atlassian.jira.bc.project.ProjectService
2324
import com.atlassian.jira.component.ComponentAccessor
24-
import com.atlassian.jira.config.IssueTypeManager
25+
import com.atlassian.jira.config.IssueTypeService
2526
import com.atlassian.jira.issue.fields.screen.issuetype.IssueTypeScreenSchemeManager
2627
import com.atlassian.jira.issue.issuetype.IssueType
2728
import com.atlassian.jira.issue.operation.IssueOperations
2829
import com.linkedplanet.kotlinjiraclient.api.error.JiraClientError
2930
import com.linkedplanet.kotlinjiraclient.api.interfaces.JiraIssueTypeOperator
3031
import com.linkedplanet.kotlinjiraclient.api.model.JiraIssueType
3132
import com.linkedplanet.kotlinjiraclient.api.model.JiraIssueTypeAttribute
32-
import com.linkedplanet.kotlinjiraclient.sdk.util.catchJiraClientError
33+
import com.linkedplanet.kotlinjiraclient.sdk.util.eitherAndCatch
34+
import com.linkedplanet.kotlinjiraclient.sdk.util.toEither
3335
import javax.inject.Named
3436

3537
@Named
3638
object SdkJiraIssueTypeOperator : JiraIssueTypeOperator {
3739

38-
private val projectManager by lazy { ComponentAccessor.getProjectManager() }
39-
private val issueTypeManager by lazy { ComponentAccessor.getComponent(IssueTypeManager::class.java) }
40-
private val issueTypeScreenSchemeManager by lazy { ComponentAccessor.getComponent(IssueTypeScreenSchemeManager::class.java) }
40+
private val projectService = ComponentAccessor.getComponent(ProjectService::class.java)
41+
private val issueTypeService = ComponentAccessor.getComponent(IssueTypeService::class.java)
42+
private val issueTypeScreenSchemeManager = ComponentAccessor.getComponent(IssueTypeScreenSchemeManager::class.java)
43+
private val jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext()
44+
45+
private fun user() = jiraAuthenticationContext.loggedInUser
4146

4247
override suspend fun getAttributesOfIssueType(
4348
projectId: Number,
4449
issueTypeId: Number
4550
): Either<JiraClientError, List<JiraIssueTypeAttribute>> =
46-
Either.catchJiraClientError {
47-
val issueType = issueTypeManager.getIssueType(issueTypeId.toString())
51+
eitherAndCatch {
52+
val issueType = issueTypeService.getIssueType(user(), issueTypeId.toString()).orNull
53+
?: return@getAttributesOfIssueType issueTypeNotFound(issueTypeId)
4854
val screenSchemes = issueTypeScreenSchemeManager.getIssueTypeScreenScheme(
49-
projectManager.getProjectObj(projectId.toLong())
55+
projectService.getProjectById(user(), projectId.toLong()).toEither().bind().project
5056
)
5157
val screenScheme = screenSchemes.getEffectiveFieldScreenScheme(issueType)
5258
val createScreen = screenScheme.getFieldScreen(IssueOperations.CREATE_ISSUE_OPERATION)
@@ -58,16 +64,22 @@ object SdkJiraIssueTypeOperator : JiraIssueTypeOperator {
5864
fields
5965
}
6066

67+
private fun <T> issueTypeNotFound(issueTypeId: Number): Either<JiraClientError, T> = Either.Left(
68+
JiraClientError("IssueType not found", "No IssueType with id:$issueTypeId found.", statusCode = 404)
69+
)
70+
6171
override suspend fun getIssueType(issueTypeId: Number): Either<JiraClientError, JiraIssueType?> =
62-
Either.catchJiraClientError {
63-
issueTypeManager.getIssueType(issueTypeId.toString())?.let { it: IssueType ->
72+
eitherAndCatch {
73+
val issueType = issueTypeService.getIssueType(user(), issueTypeId.toString()).orNull
74+
?: return@getIssueType issueTypeNotFound(issueTypeId)
75+
issueType.let { it: IssueType ->
6476
JiraIssueType(it.id, it.name)
6577
}
6678
}
6779

6880
override suspend fun getIssueTypes(projectId: Number): Either<JiraClientError, List<JiraIssueType>> =
69-
Either.catchJiraClientError {
70-
projectManager.getProjectObj(projectId.toLong())?.issueTypes
81+
eitherAndCatch {
82+
projectService.getProjectById(user(), projectId.toLong()).toEither().bind().project?.issueTypes
7183
?.map { it: IssueType ->
7284
JiraIssueType(it.id, it.name)
7385
} ?: emptyList()

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import com.atlassian.jira.component.ComponentAccessor
2525
import com.linkedplanet.kotlinjiraclient.api.error.JiraClientError
2626
import com.linkedplanet.kotlinjiraclient.api.interfaces.JiraProjectOperator
2727
import com.linkedplanet.kotlinjiraclient.api.model.JiraProject
28-
import com.linkedplanet.kotlinjiraclient.sdk.util.catchJiraClientError
2928
import com.linkedplanet.kotlinjiraclient.sdk.util.eitherAndCatch
3029
import com.linkedplanet.kotlinjiraclient.sdk.util.toEither
3130

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import com.linkedplanet.kotlinjiraclient.sdk.util.toEither
3232

3333
object SdkJiraTransitionOperator : JiraTransitionOperator {
3434

35-
private val issueService by lazy { ComponentAccessor.getIssueService() }
35+
private val issueService = ComponentAccessor.getIssueService()
3636
private val workflowManager by lazy { ComponentAccessor.getWorkflowManager() }
3737
private val transitionManager by lazy { ComponentAccessor.getComponent(TransitionManager::class.java) }
3838
private val jiraAuthenticationContext by lazy { ComponentAccessor.getJiraAuthenticationContext() }

0 commit comments

Comments
 (0)