with JIRA v7.1.9#71013 and JIRA rest API 4.0.0
Scala code:
case class JiraFieldDefinition(id: Long, fullIdForSave: String, typeName: String, itemsTypeIfArray: Option[String])
and then processing for custom fields:
case _ =>
val fieldSchema = customFieldResolver.getId(fieldName)
if (fieldSchema.isDefined) {
val fullIdForSave = fieldSchema.get.fullIdForSave
val valueWithProperJiraType = getConvertedValue(fieldSchema.get, value)
issueInputBuilder.setFieldValue(fullIdForSave, valueWithProperJiraType)
}
def getConvertedValue(fieldSchema: JiraFieldDefinition, value: Any) : Any = {
fieldSchema.typeName match {
case "array" if fieldSchema.itemsTypeIfArray.get == "string" => List(value).asJava
case "array" if fieldSchema.itemsTypeIfArray.get == "option" =>
List(
new CustomFieldOption(fieldSchema.id, null, value.toString, Seq().toIterable.asJava, null)
).asJava
case "number" => ValueTypeResolver.getValueAsFloat(value)
case _ => value
}
}
so, to summarize: this code goes through custom fields. it works fine for a custom "label" where an array of strings is expected. ( case "array" if fieldSchema.itemsTypeIfArray.get == "string" )
but it fails for a custom field called "custom_checkbox_1" with ID 10102 and customId=customfield_10102.
(see the second "case" for array+option).
the error I get is:
ErrorCollection{status=400, errors={customfield_10102=Invalid value '10102' passed for customfield 'custom_checkbox_1'.}, errorMessages=[]}
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.