This information would be useful in a scenario where you would like to create a custom field processor or project mapping rule which requires the location of an issue via JQL query.
Example
The following ECMAScript (JavaScript) code will run a JQL query to find an issue. The key of the first issue found in the results is set as a value for "issueKey" in the resultMap object. This "issueKey" directive would then ultimately direct JEMH to comment on the existing issue with the processed email. Note that this behaviour is just an example - you could do anything with the returned issue(s).
The below example would match against an issue that has all the following values:
Field A | Field B | Field C |
---|---|---|
apple | blueberry | carrot |
//get the user to run the JQL query as var user = userManager.getUserByName("admin"); //note the use of "static" on the below 2 lines, see the additional information below var filter = PagerFilter.static.getUnlimitedFilter(); var builder = JqlQueryBuilder.static.newBuilder(); //construct the JQL query var query = builder.where().defaultAnd() .field("Field A").like("apple") .field("Field B").like("blueberry") .field("Field C").like("carrot") .buildQuery(); //get list of issues (could be empty) var results = searchService.search(user, query, filter).getIssues(); //get first issue if exists and add via issueKey directive if (results.size()>0) { var issue = results[0]; resultMap.put("issueKey",issue.getKey()); print("Found using JQL: "+issue.getKey()); } else { print("No issues match using JQL."); }
Static class member access via ECMAScript
You may notice in the above example that the PagerFilter
and JqlQueryBuilder
context objects are used a bit differently to others. They refer to the Class objects of the classes, rather than an instance of a class which is normally the case for items of the script context. The static
pseudo-property is used in order to access the Java type. Then, the static methods of these two classes can be accessed.