Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Deleting Comments for Role Level

Don Schier March 11, 2021

Question, because I'm stuck... The log shows the <value> I am searching for but the comment does not delete--

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.comments.Comment
import com.atlassian.jira.issue.comments.CommentManager
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.security.roles.ProjectRole
import org.apache.log4j.Logger

def log = Logger.getLogger("com.acme.workflows")

IssueManager issueManager = ComponentAccessor.issueManager
CommentManager commentManager = ComponentAccessor.commentManager

def issueKeys = [<value1>,<value2>]
issueKeys.each
  {issueKey ->
     MutableIssue issue = issueManager.getIssueObject(issueKey)
     List<Comment> comments = commentManager.getComments(issue)
     comments.each
          {comment ->
               log.warn(comment.getRoleLevel())
               if (comment.getRoleLevel() == <value>)
                 {commentManager.delete(comment)
                 }
           }
   }

Anyone know why?

I can manually delete each comment, but there are thousands of tickets.

Any guidance is appreciated.

1 answer

0 votes
Tuncay Senturk _Snapbytes_
Community Champion
April 4, 2021

Hi @Don Schier 

There can be several reasons for this. But from the first look below if statement seems problematic:

if (comment.getRoleLevel() == <value>)

comment.getRoleLevel returns an instance of ProjectRole class, so you can't do such equality. Instead, you should be checking as below

if (null != comment.getRoleLevel() && <value>.equals(comment.getRoleLevel().getName()))

I also added a null check as it would be null if the comment is public.

I hope I was clear

Cheers

Tuncay

Suggest an answer

Log in or Sign up to answer