Hello
I am trying to copy logged work to specific customfield using Script listener with event "Issue Commented"
Here is my code
import com.atlassian.jira.issue.MutableIssue; import com.atlassian.jira.ComponentManager import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.comments.CommentManager def customFieldManager = ComponentAccessor.getCustomFieldManager() MutableIssue issueToUpdate = (MutableIssue) event.issue; def timeWorked = issueToUpdate.getTimeSpent(); def cf = customFieldManager.getCustomFieldObjects(issueToUpdate).find {it.name == 'customfieldName'}; issueToUpdate.setCustomFieldValue(cf, timeWorked)
After comenting issue I see that listener was executed, however custom field value was not changed.
(the same problem is here: https://answers.atlassian.com/questions/35781060 )
Could you help me understand what is wrong? Is "setCustomFieldValue" correct function to update fields?
Thank you in advance,
Fyodor
Instead of:
def cf = customFieldManager.getCustomFieldObjects(issueToUpdate).find {it.name == 'customfieldName'}; issueToUpdate.setCustomFieldValue(cf, timeWorked)
Try:
IssueManager issueManager = ComponentManager.getInstance().getIssueManager(); def cf = customFieldManager.getCustomFieldObjectByName('customfieldName'); issueToUpdate.setCustomFieldValue(cf, timeWorked); issueManager.updateIssue(event.getUser(), issueToUpdate, EventDispatchOption.ISSUE_UPDATED, false);
Hello Jeremy, Thanos
Thank you advises.
Example from Thanos with "cf.updateValue(...)" works, but it doesn't fire update event, so I assume I need to use example with "issueManager.updateIssue(...)" function.
Unfortunately I am not able to put updateIssue method
How can I do it?
1) These examples returns error: "cannot find matching method getIssueManager"
IssueManager issueManager = ComponentManager.getInstance().getIssueManager();
or
def componentManager = ComponentManager.getInstance() IssueManager issueManager = componentManager.getIssueManager()
2) This example returns error: "cannot find matching method updateIssue"
IssueManager issueManager = ComponentAccessor.getIssueManager(); issueManager.updateIssue(event.getUser(), issueToUpdate, EventDispatchOption.ISSUE_UPDATED, false);
Thanks,
Fyodor
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
What version of JIRA?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
version 7.0.10
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
That "updateIssue" should work in JIRA 7, according to the javadoc; however, in hindsight, you also have to import "com.atlassian.jira.event.type.EventDispatchOption" so you can reference ISSUE_UPDATED.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Jeremy,
thank you, now it works
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Fjodors,
Assuming that your field is a text field, try update the value like this
def timeWorked = issueToUpdate.getTimeSpent().toString() def changeHolder = new DefaultIssueChangeHolder() cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), timeWorked),changeHolder)
Please let me know if you use a different type of custom field. Also it would be useful to know JIRA and SR versions.
Kind regards
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.