How to only sync public attachments from Jira Service Desk

Originally asked by Juan Grases on 19 May 2020 (original question)


I want to only sync attachments that are references from public comments


Answer by Juan Grases on 02 June 2020

This block should make it:

def publicComments = issue.comments.findAll{!it.internal}

def isMentionedInPublicComments(attachment, publicComments) {
	publicComments.any {c -> 
        c.body.contains("[^" + attachment.filename + "]") ||
        (c.body =~ (/!${java.util.regex.Pattern.quote(attachment.filename)}(\|.*!|!)/.toString())).find()
    }
}

replica.attachments = issue.attachments.filter{isMentionedInPublicComments(it, publicComments)}
  
    

def publicComments = issue.comments.findAll{!it.internal}

def isMentionedInPublicComments(attachment, publicComments) {

publicComments.any {c -> 

    c.body.contains("\[^" + attachment.filename + "\]") ||

    (c.body =\~ (/!${java.util.regex.Pattern.quote(attachment.filename)}(\\|.\*!|!)/.toString())).find()

}

}

if (publicComments)

{

replica.attachments = issue.attachments.filter{isMentionedInPublicComments(it, publicComments)}

}

This is giving me:

No signature of method: java.util.ArrayList.filter() is applicable for argume…

for the line:

replica.attachments = issue.attachments.filter{isMentionedInPublicComments(it, publicComments)}

.filter is not a method on a java.util.ArrayList

This is working:

def publicComments = issue.comments.findAll{!it.internal}
 
def isMentionedInPublicComments(attachment, publicComments) {
	publicComments.any {c -> 
        c.body.contains("[^" + attachment.filename + "]") ||
        (c.body =~ (/!${java.util.regex.Pattern.quote(attachment.filename)}(\|.*!|!)/.toString())).find()
    }
}
 
if (publicComments)
{
    replica.attachments = issue.attachments.findAll{isMentionedInPublicComments(it, publicComments)}
}