Hello,
I'm trying to create new Script field that will get all Unreleased version in Jira and check if the unreleased version excites in other custom field (the multi select field) if not, add it.
i used the following script. but i got this error:
com.atlassian.jira.issue.customfields.option.LazyLoadedOption cannot be cast to java.util.Collection
Why i'm getting this Error ?
The Script :
package com.atlassian.jira.project.version
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.customfields.manager.OptionsManager;
import com.atlassian.jira.issue.customfields.option.Option;
import com.atlassian.jira.issue.customfields.option.Options;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.fields.config.FieldConfig;
import com.atlassian.jira.issue.fields.config.FieldConfigScheme
import com.atlassian.jira.project.Project
def issue = ComponentAccessor.getIssueManager().getIssueObject("SMAR-903")
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def versionManager = ComponentAccessor.getVersionManager()
//Get all unreleased versions
Collection <Version> allVersions = versionManager.getAllVersionsUnreleased(true)
//Get targetField versions field
def targetField = customFieldManager.getCustomFieldObjectByName("targetField")
Options options = ComponentAccessor.getOptionsManager().getOptions(targetField.getConfigurationSchemes().listIterator().next().getOneAndOnlyConfig());
for (int i = 0; i< allVersions.size(); i++){
if(!Arrays.asList(options).toString().contains(allVersions[i].name)){
targetField.updateValue(null, issue, new ModifiedValue(null, addOptionToCustomField(targetField,allVersions[i].name)), new DefaultIssueChangeHolder())
}
}
public Option addOptionToCustomField(CustomField customField, String value) {
Option newOption = null;
if (customField != null) {
List<FieldConfigScheme> schemes = customField.getConfigurationSchemes();
if (schemes != null && !schemes.isEmpty()) {
FieldConfigScheme sc = schemes.get(0);
Map configs = sc.getConfigsByConfig();
if (configs != null && !configs.isEmpty()) {
FieldConfig config = (FieldConfig) configs.keySet().iterator().next();
OptionsManager optionsManager = ComponentAccessor.getOptionsManager();
Options l = optionsManager.getOptions(config);
int nextSequence = l.isEmpty() ? 1 : l.getRootOptions().size() + 1;
newOption = optionsManager.createOption(config, null, (long) nextSequence, value);
}
}
}
return newOption
}
Thanks.