Skip to content

Commit 1442d41

Browse files
committed
use services for SdkJiraUserOperator
1 parent f02aaa8 commit 1442d41

File tree

1 file changed

+23
-18
lines changed
  • kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk

1 file changed

+23
-18
lines changed

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

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,34 +22,37 @@ package com.linkedplanet.kotlinjiraclient.sdk
2222
import arrow.core.Either
2323
import arrow.core.raise.either
2424
import arrow.core.left
25+
import com.atlassian.jira.bc.project.ProjectService
26+
import com.atlassian.jira.bc.projectroles.ProjectRoleService
2527
import com.atlassian.jira.bc.user.search.DefaultAssigneeService
2628
import com.atlassian.jira.component.ComponentAccessor
2729
import com.atlassian.jira.permission.ProjectPermissions
2830
import com.atlassian.jira.project.Project
2931
import com.atlassian.jira.security.roles.ProjectRoleActors
30-
import com.atlassian.jira.security.roles.ProjectRoleManager
3132
import com.atlassian.jira.user.ApplicationUser
3233
import com.linkedplanet.kotlinjiraclient.api.error.JiraClientError
3334
import com.linkedplanet.kotlinjiraclient.api.interfaces.JiraUserOperator
3435
import com.linkedplanet.kotlinatlassianclientcore.common.api.JiraUser
35-
import com.linkedplanet.kotlinjiraclient.sdk.util.catchJiraClientError
36+
import com.linkedplanet.kotlinjiraclient.sdk.util.eitherAndCatch
37+
import com.linkedplanet.kotlinjiraclient.sdk.util.toEither
38+
import com.linkedplanet.kotlinjiraclient.sdk.util.withErrorCollection
3639

3740
object SdkJiraUserOperator : JiraUserOperator {
3841

39-
private val projectManager by lazy { ComponentAccessor.getProjectManager() }
40-
private val permissionManager by lazy { ComponentAccessor.getPermissionManager() }
41-
private val userUtil by lazy { ComponentAccessor.getUserUtil() }
42-
private val jiraAuthenticationContext by lazy { ComponentAccessor.getJiraAuthenticationContext() }
43-
private val projectRoleManager by lazy { ComponentAccessor.getComponent(ProjectRoleManager::class.java) }
44-
private val avatarService by lazy { ComponentAccessor.getAvatarService() }
45-
private val defaultAssigneeService by lazy { ComponentAccessor.getComponent(DefaultAssigneeService::class.java) }
42+
private val projectService = ComponentAccessor.getComponent(ProjectService::class.java)
43+
private val permissionManager = ComponentAccessor.getPermissionManager()
44+
private val userUtil = ComponentAccessor.getUserUtil()
45+
private val projectRoleService = ComponentAccessor.getComponent(ProjectRoleService::class.java)
46+
private val avatarService = ComponentAccessor.getAvatarService()
47+
private val defaultAssigneeService = ComponentAccessor.getComponent(DefaultAssigneeService::class.java)
48+
private val jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext()
4649

47-
private fun loggedInUser() = jiraAuthenticationContext.loggedInUser
50+
private fun user() = jiraAuthenticationContext.loggedInUser
4851

4952
override suspend fun getAssignableUsersByProjectKey(projectKey: String): Either<JiraClientError, List<JiraUser>> =
50-
Either.catchJiraClientError {
53+
eitherAndCatch {
5154
val project =
52-
projectManager.getProjectByCurrentKey(projectKey)
55+
projectService.getProjectByKey(user(), projectKey).toEither().bind().project
5356
?: return createProjectNotFoundError(projectKey).left()
5457
val users = defaultAssigneeService.findAssignableUsers("", project)
5558
users.map { it.toJiraUser() }
@@ -76,12 +79,14 @@ object SdkJiraUserOperator : JiraUserOperator {
7679
private fun filteredProjectUsers(
7780
projectKey: String,
7881
predicate: (Project, ApplicationUser) -> Boolean
79-
): Either<JiraClientError, List<JiraUser>> = Either.catchJiraClientError {
80-
val project =
81-
projectManager.getProjectByCurrentKey(projectKey) ?: return createProjectNotFoundError(projectKey).left()
82+
): Either<JiraClientError, List<JiraUser>> = eitherAndCatch {
83+
val project = projectService.getProjectByKey(user(), projectKey).toEither().bind().project
84+
?: return createProjectNotFoundError(projectKey).left()
8285

83-
projectRoleManager.projectRoles
84-
.map { projectRole -> projectRoleManager.getProjectRoleActors(projectRole, project) }
86+
withErrorCollection { projectRoleService.getProjectRoles(it) }.bind()
87+
.map { projectRole ->
88+
withErrorCollection { projectRoleService.getProjectRoleActors(projectRole, project, it) }.bind()
89+
}
8590
.flatMap(ProjectRoleActors::getUsers)
8691
.filter { predicate(project, it) }
8792
.map { it.toJiraUser() }
@@ -100,7 +105,7 @@ object SdkJiraUserOperator : JiraUserOperator {
100105
}
101106

102107
private fun ApplicationUser.toJiraUser(): JiraUser {
103-
val avatarUrl = avatarService.getAvatarURL(loggedInUser(), this).toASCIIString()
108+
val avatarUrl = avatarService.getAvatarURL(user(), this).toASCIIString()
104109
return JiraUser(key, name, emailAddress, avatarUrl, displayName)
105110
}
106111
}

0 commit comments

Comments
 (0)