Skip to content

Commit d0e2b8c

Browse files
committed
refactor SdkJiraIssueOperator
1 parent 37f06d5 commit d0e2b8c

File tree

1 file changed

+28
-22
lines changed
  • kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk

1 file changed

+28
-22
lines changed

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

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.atlassian.jira.component.ComponentAccessor
2929
import com.atlassian.jira.event.type.EventDispatchOption
3030
import com.atlassian.jira.issue.Issue
3131
import com.atlassian.jira.issue.IssueInputParameters
32+
import com.atlassian.jira.issue.MutableIssue
3233
import com.atlassian.jira.jql.parser.JqlQueryParser
3334
import com.atlassian.jira.user.ApplicationUser
3435
import com.atlassian.jira.util.ErrorCollection
@@ -69,25 +70,21 @@ object SdkJiraIssueOperator : JiraIssueOperator<SdkJiraField> {
6970
fields: List<SdkJiraField>
7071
): Either<JiraClientError, JiraIssue?> = either {
7172
Either.catchJiraClientError {
72-
val freshIssue: IssueInputParameters = issueService.newIssueInputParameters()
73-
freshIssue.projectId = projectId
74-
freshIssue.issueTypeId = issueTypeId.toString()
75-
fields.forEach { field ->
76-
field.render(freshIssue)
77-
}
78-
val createValidationResult = issueService.validateCreate(user(), freshIssue)
79-
val validateCreate = createValidationResult.toEither().bind()
73+
val inputParameters = issueInputParameters(projectId, issueTypeId, fields)
74+
val validateCreate = issueService.validateCreate(user(), inputParameters).toEither().bind()
8075
val createResult = issueService.create(user(), validateCreate).toEither().bind()
81-
val createdIssue = createResult.issue
82-
83-
val basePath = applicationProperties.jiraBaseUrl
84-
val contextPath = webResourceUrlProvider.baseUrl
85-
val fullPath = if (contextPath.isNotEmpty()) "$basePath/$contextPath" else basePath
86-
val selfLink = fullPath + "/rest/api/2/issue/" + createdIssue.id
87-
JiraIssue(createdIssue.id.toString(), createdIssue.key, selfLink)
76+
toBasicReturnTypeIssue(createResult.issue)
8877
}.bind()
8978
}
9079

80+
private fun toBasicReturnTypeIssue(createdIssue: MutableIssue): JiraIssue {
81+
val basePath = applicationProperties.jiraBaseUrl
82+
val contextPath = webResourceUrlProvider.baseUrl
83+
val fullPath = if (contextPath.isNotEmpty()) "$basePath/$contextPath" else basePath
84+
val selfLink = fullPath + "/rest/api/2/issue/" + createdIssue.id
85+
return JiraIssue(createdIssue.id.toString(), createdIssue.key, selfLink)
86+
}
87+
9188
override suspend fun updateIssue(
9289
projectId: Long,
9390
issueTypeId: Int,
@@ -96,17 +93,26 @@ object SdkJiraIssueOperator : JiraIssueOperator<SdkJiraField> {
9693
): Either<JiraClientError, Unit> = either {
9794
Either.catchJiraClientError {
9895
val issueId = issueService.getIssue(user(), issueKey).toEither().bind().issue.id
99-
val issueInput: IssueInputParameters = issueService.newIssueInputParameters()
100-
issueInput.projectId = projectId
101-
issueInput.issueTypeId = issueTypeId.toString()
102-
fields.forEach { field ->
103-
field.render(issueInput)
104-
}
105-
val validationResult = issueService.validateUpdate(user(), issueId, issueInput).toEither().bind()
96+
val inputParameters = issueInputParameters(projectId, issueTypeId, fields)
97+
val validationResult = issueService.validateUpdate(user(), issueId, inputParameters).toEither().bind()
10698
issueService.update(user(), validationResult, EventDispatchOption.ISSUE_UPDATED, false).toEither().bind()
10799
}.bind()
108100
}
109101

102+
private fun issueInputParameters(
103+
projectId: Long,
104+
issueTypeId: Int,
105+
fields: List<SdkJiraField>
106+
): IssueInputParameters? {
107+
val issueInput = issueService.newIssueInputParameters()
108+
issueInput.projectId = projectId
109+
issueInput.issueTypeId = issueTypeId.toString()
110+
fields.forEach { field ->
111+
field.render(issueInput)
112+
}
113+
return issueInput
114+
}
115+
110116
override suspend fun deleteIssue(issueKey: String): Either<JiraClientError, Unit> = either {
111117
Either.catchJiraClientError {
112118
val issueToDelete = issueService.getIssue(user(), issueKey).toEither().bind()

0 commit comments

Comments
 (0)