@@ -46,6 +46,7 @@ import com.linkedplanet.kotlinjiraclient.api.model.JiraIssue
4646import com.linkedplanet.kotlinjiraclient.sdk.field.SdkJiraField
4747import com.linkedplanet.kotlinjiraclient.sdk.util.IssueJsonConverter
4848import com.linkedplanet.kotlinjiraclient.sdk.util.catchJiraClientError
49+ import org.jetbrains.kotlin.util.removeSuffixIfPresent
4950import javax.inject.Named
5051import kotlin.math.ceil
5152
@@ -94,7 +95,8 @@ object SdkJiraIssueOperator : JiraIssueOperator<SdkJiraField> {
9495 Either .catchJiraClientError {
9596 val issueId = issueService.getIssue(user(), issueKey).toEither().bind().issue.id
9697 val inputParameters = issueInputParameters(projectId, issueTypeId, fields)
97- val validationResult = issueService.validateUpdate(user(), issueId, inputParameters).toEither().bind()
98+ val validateUpdate = issueService.validateUpdate(user(), issueId, inputParameters)
99+ val validationResult = validateUpdate.toEither().bind()
98100 issueService.update(user(), validationResult, EventDispatchOption .ISSUE_UPDATED , false ).toEither().bind()
99101 }.bind()
100102 }
@@ -105,6 +107,11 @@ object SdkJiraIssueOperator : JiraIssueOperator<SdkJiraField> {
105107 fields : List <SdkJiraField >
106108 ): IssueInputParameters ? {
107109 val issueInput = issueService.newIssueInputParameters()
110+ issueInput.setSkipScreenCheck(true )
111+ issueInput.setSkipLicenceCheck(true )
112+ issueInput.setApplyDefaultValuesWhenParameterNotProvided(true )
113+ issueInput.setRetainExistingValuesWhenParameterNotProvided(true )
114+
108115 issueInput.projectId = projectId
109116 issueInput.issueTypeId = issueTypeId.toString()
110117 fields.forEach { field ->
@@ -121,22 +128,23 @@ object SdkJiraIssueOperator : JiraIssueOperator<SdkJiraField> {
121128 }.bind()
122129 }
123130
124- private fun <T : ServiceResult > T.toEither () : Either <JiraClientError , T > =
131+ private fun <T : ServiceResult > T.toEither (errorTitle : String? = null) : Either <JiraClientError , T > =
125132 when {
126133 this .isValid -> Either .Right (this )
127- else -> Either .Left (jiraClientError(this .errorCollection))
134+ else -> Either .Left (jiraClientError(this .errorCollection, errorTitle
135+ ? : " ${this ::class .simpleName?.removeSuffixIfPresent(" ServiceResult" )} Error" ))
128136 }
129137
130- private fun ErrorCollection.toEither () : Either <JiraClientError , Unit > =
138+ private fun ErrorCollection.toEither (errorTitle : String = " SdkError " ) : Either <JiraClientError , Unit > =
131139 when {
132- this .hasAnyErrors() -> jiraClientError(this ).left()
140+ this .hasAnyErrors() -> jiraClientError(this , errorTitle ).left()
133141 else -> Unit .right()
134142 }
135143
136- private fun jiraClientError (errorCollection : ErrorCollection ): JiraClientError {
144+ private fun jiraClientError (errorCollection : ErrorCollection , errorTitle : String = " SdkError " ): JiraClientError {
137145 val worstReason = Reason .getWorstReason(errorCollection.reasons)
138146 return JiraClientError (
139- " DeleteFailed " ,
147+ errorTitle ,
140148 errorCollection.errorMessages.joinToString() + " (${worstReason.httpStatusCode} )"
141149 )
142150 }
0 commit comments