Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Adding Comment throwing error

Edited

Hi, I'm running a JQL using Escalation service (Scriptrunner), for the below code; having issues in resolving warning. any help !!

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.APKeys
import com.atlassian.jira.config.SubTaskManager
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.label.LabelManager
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.issue.comments.CommentManager
import com.atlassian.jira.ComponentManager

ComponentAccessor.commentManager.create(issue, "jira_admins","Hello [~${issueUser}], Please check the status of the RCA.", true)

 

Error: (though the comment gets added. still warning is thrown)

at com.onresolve.scriptrunner.jobs.JiraIdentitySwitchingService.switchIndentityAndExecute(JiraIdentitySwitchingService.groovy:27)
	at com.onresolve.scriptrunner.jobs.IdentitySwitchingService$switchIndentityAndExecute.call(Unknown Source)
	at com.onresolve.scriptrunner.canned.jira.jobs.EscalationService$_execute_closure2.doCall(EscalationService.groovy:129)
<<<<some deleted data>>>>>
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: There is no ID mapped for the user key 'JIRA_Admins'
	at com.atlassian.jira.user.DefaultUserPropertyManager.getPropertySetForUserKey(DefaultUserPropertyManager.java:32)
	at com.atlassian.jira.user.DefaultUserPropertyManager.getPropertySet(DefaultUserPropertyManager.java:25)
	at com.atlassian.jira.user.preferences.DefaultUserPreferencesManager.getExtendedPreferences(DefaultUserPreferencesManager.java:22)
	at com.atlassian.jira.bc.issue.watcher.AutoWatchService.isAutoWatchEnabledForUser(AutoWatchService.java:56)
	at com.atlassian.jira.bc.issue.watcher.AutoWatchService.onIssueEvent(AutoWatchService.java:43)
	at sun.reflect.GeneratedMethodAccessor2245.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:40)
	... 405 more

IssueUser is working fine; taking the current issue assignee else reporter. 

 

I tried with below, but no comment was posted; it took the wrong user. 

 issueInputParameters.setComment('Added comment')

 

Also, History shows that I've added all labels again; is there way to add comment (only 1) by a particular user only. ie. to replace the loggedinuser code below with ex/ jira_admins user key.

 

 LabelManager labelManager = ComponentAccessor.getComponent(LabelManager.class)
labelManager.addLabel(ComponentAccessor.jiraAuthenticationContext.getLoggedInUser(), issue.id, "RCA_AUTO", false)

 

1 answer

1 accepted

0 votes
Answer accepted

I think the fundamental issue you are seeing is with the selection of the user field in the escalation service configuration, not in the code. Try to re-select the user you want the job to run as.

Regarding your labels question, where is this used? Can you elaborate, your question is confusing? You are asking about labels, but say you want to add comment. Is this about labels or comment?

You can use ComponentAccessor.jiraAuthenticationContext.setLoggedInUser(applicationUser) to change the currently logged in user for the context of the script.

Hi Peter,

The Job is to have a add to label and comment too

 

Can you provide the way it required to code for ComponentAccessor.jiraAuthenticationContext.setLoggedInUser(applicationUser)

If you set up the user correctly in the Job configuration, you don't need to use setLoggedInUser, scriptrunner will take care of that for you

2020-05-26 09_12_09-Window.png

Hi Peter,

I'm updating the sub-task of the tickets too.

For the subtask I'm performing below: at the line below that's adding the comment to the ticket with the user I've stated below; but the error log still makes 300 lines+ making difficult to trace the logger I've added.

 

 if (subTaskManager.subTasksEnabled && !subTasks.empty) {
hasSubTask = true
subTasks.each {
if ((it.getStatus().getName() == "In Progress") || (it.getStatus().getName() == "Open")){ // || (it.getStatus().getName() == "Blocked")) {
hasSubTaskOpen = true
currentCMUser = it.assignee ? it.assigneeId : it.reporterId
commentBody = "Hello [~${currentCMUser}], Please update the status of Sub-Task. Please move it to Blocked, incase it will be done in upcoming sprint."
ComponentAccessor.commentManager.create(it, "JIRA_Admins", commentBody, true) //Comment on the ticket
log1.info(it.key)
getIssueUserEmail = it.assignee ? it.assignee.emailAddress : it.reporter.emailAddress
currentCMUserF = null
if(getUserIDfromSlack(getIssueUserEmail) != null)
notificationToSlackFunc(it, getUserIDfromSlack(getIssueUserEmail), "Task") //Comment via Slack to user
currentCMUserF = null
}

 

Log error:

Caused by: java.lang.IllegalStateException: There is no ID mapped for the user key 'JIRA_Admins'
 at com.atlassian.jira.user.DefaultUserPropertyManager.getPropertySetForUserKey(DefaultUserPropertyManager.java:32)
 at com.atlassian.jira.user.DefaultUserPropertyManager.getPropertySet(DefaultUserPropertyManager.java:25)
 at com.atlassian.jira.user.preferences.DefaultUserPreferencesManager.getExtendedPreferences(DefaultUserPreferencesManager.java:22)
 at com.atlassian.jira.bc.issue.watcher.AutoWatchService.isAutoWatchEnabledForUser(AutoWatchService.java:56)    

Perhaps the issue is as simple as Jira not finding the correct user for "JIRA_Admins".

The method where the author is specified as string is deprecated anyway.

Try to fetch that user using userManager

def adminUser = Componentaccessor.userManager.getUserByName('jira_admins')

or use the jiraAuthentication Context (as specified in your escalation)

def adminUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser

then use that to create the comment:

ComponentAccessor.commentManager.create(it, adminUser, commentBody, true)

Thanks Peter, post my question - I used below that worked.

 

def adminUser = ComponentAccessor.jiraAuthenticationContext.loggedInUse

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Confluence

Wouldn't it be nice to have this Jira-Confluence integration?

...ossibility became true in a not too far future, project/space access would be left in the hands of all team members. Don't get me wrong: I'd love it! However, it would also be nice to have a way in which j...

60 views 0 1
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you