Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
//create regexp pattern to extract external id
var pattern = Java.type("java.util.regex.Pattern").compile("Case\\s#:\\s([0-9]+)");
var matcher = pattern.matcher(body);
var foundExternalId = "";
 
//if able to extract issue key, set variable
if (matcher.find()) {
    var group = matcher.group(1);
    if (group) {
        foundExternalId = group;
    }
}
 
var issueWithExternalId = "";
if (foundExternalId) {
    print("external ID extracted: "+foundExternalId);
    //get the user to run the JQL query as
    var user = userManager.getUserByKey("admin");
      
    //note the use of "static" on the below 2 lines, see the additional information to the right
    var filter = PagerFilter.staticJava.type("com.atlassian.jira.web.bean.PagerFilter").getUnlimitedFilter();
    var builder = JqlQueryBuilder.staticJava.type("com.atlassian.jira.jql.builder.JqlQueryBuilder").newBuilder();
      
    //construct the JQL query
    var query = builder.where().field("External ID").like(foundExternalId).buildQuery();
      
    //get list of issues (could be empty)
    var results = searchService.search(user, query, filter).getResults();
      
    //get first issue if exists and add via issueKey directive
    if (results.size()>0) {
        var issue = results[0];
        issueWithExternalId = issue.getKey();
        print("Found issue using JQL "+query+" : "+issueWithExternalId);
    } else {
        print("No issues match using JQL: "+query);
    }
}
 
if (!issueWithExternalId.isEmpty()) {
        resultMap.put("issueKey",issueWithExternalId)
} else if (!foundExternalId.isEmpty()) {
        resultMap.put("External ID",foundExternalId);
}

...