We have a request to copy values from two user picker fields to the Watcher filed whenever these fleds are updated. I have created a script listener which runs on issue update:
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.component.ComponentAccessor
def issue = event.issue as Issue
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def sourceField = customFieldManager.getCustomFieldObjects(event.issue).find {it.name == "Technical Lead"}
def tgtField = customFieldManager.getCustomFieldObjects(event.issue).find {it.name == "Watchers"}
def changeHolder = new DefaultIssueChangeHolder()
tgtField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(tgtField), issue.getCustomFieldValue(sourceField)),changeHolder)
But this does not update the watcher filed. We get the following error:
2017-12-13 10:21:39,209 ERROR [runner.AbstractScriptListener]: *************************************************************************************
2017-12-13 10:21:39,209 ERROR [runner.AbstractScriptListener]: Script function failed on event: com.atlassian.jira.event.issue.IssueEvent, file: <inline script>
java.lang.NullPointerException
at com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:896)
at com.atlassian.jira.issue.Issue$getCustomFieldValue$9.call(Unknown Source)
at Script48.run(Script48.groovy:11
I guess that the method for get and set Watchers filed is not correct. Can you please help us with that?
Regards,
Nadica