Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

How delete \ add current user from\into MultiUserPicker in groovy or java or ScriptRunner?

Дмитрий Тягунов December 29, 2016

I have one issue and two custom fields type MultiUserPicker: MUP1, MUP2.
initially
MUP1 = (user1, user2, user3)
MUP2 = null

in the post-function I need to do

MUP1 = MUP1 - CurrentUser
MUP2 = MUP2 + CurrentUser

if current user exist in first field.

as a result

MUP1 = null
MUP2 = (user1, user2, user3)

I broke my brain, but did not find methods.
May be Class MultiUserCFType and updateValue(customField, issue, value)? But how?

Does anyone know how to do?

Also, Happy New Year! :)

2 answers

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

Post a new question

2 votes
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 30, 2016

Here is code exmple to start with:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser

ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getUser()

CustomField customField1 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("FieldName1")
CustomField customField2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("FieldName2")

//Delete user
List<ApplicationUser> users = new ArrayList<>();

for(ApplicationUser multiUseruser: (List<ApplicationUser>) issue.getCustomFieldValue(customField1)){
        if(!multiUseruser.getKey().equals(user.getKey())){
                users.add(multiUseruser)
        }                
}

issue.setCustomFieldValue(customField1, users);

//add user
issue.setCustomFieldValue(customField2, ((List<ApplicationUser>) issue.getCustomFieldValue(customField1)).add(user))
Дмитрий Тягунов January 10, 2017

Hello, Vasiliy.

Your code gives the conversion error types.
Can you help solve this? 

Attlassian sends to the article: https://confluence.atlassian.com/jira/upgrading-workflow-plugins-for-jira-3-2-116700.html
but that's about 3 versions of the Jira, but we have 6.

 

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.util.Collection
	at com.atlassian.jira.issue.customfields.impl.AbstractMultiCFType.createValue(AbstractMultiCFType.java:41)
	at com.atlassian.jira.issue.fields.CustomFieldImpl.createValue(CustomFieldImpl.java:854)
	at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:522)
	at com.atlassian.jira.issue.fields.CustomFieldImpl.updateValue(CustomFieldImpl.java:504)
	at com.atlassian.jira.workflow.function.issue.GenerateChangeHistoryFunction.execute(GenerateChangeHistoryFunction.java:65)
	at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1050)
	at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1446)
	at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:564)
...
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 10, 2017

Could you provide where this error raise? Which line?

Дмитрий Тягунов January 10, 2017

error line

issue.setCustomFieldValue(customField2, ((List<ApplicationUser>) issue.getCustomFieldValue(customField1)).add(user))

in particular

issue.getCustomFieldValue(customField1)).add(user))
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
January 11, 2017

Hm, lets try this:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser

ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getUser()

CustomField customField1 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("FieldName1")
CustomField customField2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("FieldName2")

//Delete user
List<ApplicationUser> users = new ArrayList<>();

for(ApplicationUser multiUseruser: (List<ApplicationUser>) issue.getCustomFieldValue(customField1)){
    if(!multiUseruser.getKey().equals(user.getKey())){
        users.add(multiUseruser)
    }
}

issue.setCustomFieldValue(customField1, users);

//add user
issue.setCustomFieldValue(customField2, ((List<ApplicationUser>) issue.getCustomFieldValue(customField1)).add(users))
valeria cruz June 7, 2017

<p>I'm training to use this script, but its not deleting my currentUser .

 

workflow show me this message</p>

 

2017-06-07 12:43:39,622 ERROR [workflow.ScriptWorkflowFunction]: *************************************************************************************
2017-06-07 12:43:39,625 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: BRCH-53, actionId: 821, file: <inline script>
java.lang.NullPointerException
	at com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:896)
	at com.atlassian.jira.issue.Issue$getCustomFieldValue$2.call(Unknown Source)
	at Script281.run(Script281.groovy:18)

 

valeria cruz June 7, 2017

i'm training to use this script, but its not delete my current user . i receive this message

2017-06-07 12:43:39,622 ERROR [workflow.ScriptWorkflowFunction]: *************************************************************************************
2017-06-07 12:43:39,625 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: BRCH-53, actionId: 821, file: <inline script>
java.lang.NullPointerException
	at com.atlassian.jira.issue.IssueImpl.getCustomFieldValue(IssueImpl.java:896)
	at com.atlassian.jira.issue.Issue$getCustomFieldValue$2.call(Unknown Source)
	at Script281.run(Script281.groovy:18)
0 votes
Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 29, 2016

When you get the current content of the field, it will return a list type object, with each element of the list being a user.  You should be able to add or remove users on the list, and then post the modified list back into the custom field value.

TAGS
AUG Leaders

Atlassian Community Events