set Group picker field using groovy in post function is not working
My code is working if i test script from script fields and also updating value in database, when i use same code from create post function values are not saving to database
did i miss anything?
Here is the code:
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.MutableIssue; import com.atlassian.jira.ComponentManager; import com.atlassian.jira.issue.ModifiedValue; import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem; import com.atlassian.jira.issue.util.IssueChangeHolder; import com.atlassian.jira.issue.util.DefaultIssueChangeHolder; import com.atlassian.crowd.embedded.api.Group; import com.atlassian.jira.user.util.UserUtil; try{ customFieldManager = ComponentManager.getInstance().getCustomFieldManager() cfCustomerId = customFieldManager.getCustomFieldObjectByName("Customer ID") cfCustomerIdValue = issue.getCustomFieldValue(cfCustomerId) userUtil = ComponentManager.getInstance().getUserUtil() cfTestGroupPicker = customFieldManager.getCustomFieldObjectByName("Test Group Picker") cfTestGroupPickerValue = issue.getCustomFieldValue(cfTestGroupPicker) Map<String, ModifiedValue> modifiedFields = issue.getModifiedFields(); FieldLayoutItem fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(issue).getFieldLayoutItem( cfTestGroupPicker); DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder(); Group groupValue = userUtil.getGroupObject("customer_"+cfCustomerIdValue); List<Group> groupList = new ArrayList<Group>() groupList.add(groupValue) cfTestGroupPicker.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cfTestGroupPicker), groupList), issueChangeHolder); cfTestGroupPickerValue = issue.getCustomFieldValue(cfTestGroupPicker) log.debug("cfTestGroupPickerValue...."+cfTestGroupPickerValue) } catch(Exception all) { log.error("Exception While updating group custom field : "+all) }
I do not see method called issue.setCustomField ( cfTestGroupPicker ), assuming you are referring to setCustomFieldValue():
I have added following to my script, but when I create an issue I got the following error on UI, no error in the logs
Error creating issue: Error occurred while creating issue. This could be due to a plugin being incompatible with this version of JIRA. For more details please consult the logs, and see: http://confluence.atlassian.com/x/3McB
Any idea? Same script works fine from Script Fields
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.IssueManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.MutableIssue; import com.atlassian.jira.ComponentManager; import com.atlassian.jira.issue.ModifiedValue; import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem; import com.atlassian.jira.issue.util.IssueChangeHolder; import com.atlassian.jira.issue.util.DefaultIssueChangeHolder; import com.atlassian.crowd.embedded.api.Group; import com.atlassian.jira.user.util.UserUtil; try{ customFieldManager = ComponentManager.getInstance().getCustomFieldManager() cfCustomerId = customFieldManager.getCustomFieldObjectByName("Customer ID") cfCustomerIdValue = issue.getCustomFieldValue(cfCustomerId) userUtil = ComponentManager.getInstance().getUserUtil() cfTestGroupPicker = customFieldManager.getCustomFieldObjectByName("Test Group Picker") cfTestGroupPickerValue = issue.getCustomFieldValue(cfTestGroupPicker) log.debug("Before cfTestGroupPickerValue...."+cfTestGroupPickerValue) Object o = "customer_"+cfCustomerIdValue issue.setCustomFieldValue(cfTestGroupPicker, o) Map<String, ModifiedValue> modifiedFields = issue.getModifiedFields(); FieldLayoutItem fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(issue).getFieldLayoutItem( cfTestGroupPicker); DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder(); Group groupValue = userUtil.getGroupObject("customer_"+cfCustomerIdValue); log.debug("groupValue..."+groupValue); List<Group> groupList = new ArrayList<Group>() groupList.add(groupValue) cfTestGroupPicker.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cfTestGroupPicker), groupList), issueChangeHolder); cfTestGroupPickerValue = issue.getCustomFieldValue(cfTestGroupPicker) log.debug("After cfTestGroupPickerValue...."+cfTestGroupPickerValue) } catch(Exception all) { log.error("Exception While updating group custom field : "+all) }
Above script works fine with Script Fields by passing in Issue key in "Preview Issue Key". Using the same script in create Post function throws following error: Error creating issue: Error occurred while creating issue. This could be due to a plugin being incompatible with this version of JIRA. For more details please consult the logs, and see: http://confluence.atlassian.com/x/3McB Please suggest, did i miss any step while creation Note: my post function is at 3rd position in create Post functions
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I would use:
issue.setCustomField ( cfTestGroupPicker )
This should work providing this function comes before the one that is "saves the issue and reindexes", or similar.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
thanks Matheus... now I can actually read it.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
done
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
could you please explain what is {code} macro? i have never used it before. groovy script call at 3rd position
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please use the {code} macro to format this properly. What position is the post-function?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.