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.
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.