var subHash = 'none';
if (subject.startsWith("Recall:"))
{
//create regexp pattern to extract the subject of the email after Recall: word
var pattern = Java.type("java.util.regex.Pattern").compile("Recall:\s?(.+)");
var matcher = pattern.matcher(subject);
//if able to extract the subject, set variable and set the custom field
if (matcher.find())
{
var subWithoutRecall = matcher.group(1).trim();
subHash = jemhUtils.hash(subWithoutRecall);
resultMap.put("summary_hash", subHash);
}
}
else if (subject !== null && !subject.isEmpty())
{
subHash = jemhUtils.hash(subject);
}
//get the user to run the JQL query as
var user = userManager.getUserByName("admin");
var filter = Java.type("com.atlassian.jira.web.bean.PagerFilter").getUnlimitedFilter();
var builder = Java.type("com.atlassian.jira.jql.builder.JqlQueryBuilder").newBuilder();
//construct the JQL query
var query = builder.where().field("summary_hash").like(subHash).buildQuery();
//get list of issues (could be empty)
var results = searchService.search(user, query, filter).getResults();
//get first issue if exists and delete it
if (results.size()>0) {
var issue = results[0];
var issueKey = issue.getKey();
var issueToDelet = issueManager.getIssueObject(issueKey);
issueManager.deleteIssueNoEvent(issueToDelet);
jemhUtils.dropMessage("Issue is recalled");
}else{
resultMap.put("summary_hash",subHash);
} |