Forums

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

How do you use issueFunction with JqlClauseBuilder?

Nathon Fowlie
Contributor
April 3, 2014

I'm trying to build a JQL query using the JqlClauseBuilder that calls the "issueFieldExactMatch" function provided by script runner. Just wondering how to call this function, because I can't seem to work it out?

This was my first attempt:

JqlClauseBuilder builder = JqlQueryBuilder.newClauseBuilder();

Query query = builder.project(projectId).and().issueType().in(VALID_ISSUETYPES as Long[]).and().not().issue(issue.getKey()).and().field("issueFunction").inFunc("issueFieldExactMatch", "", "summary", currentSummary).buildQuery()

but it seems to generate the following jql (note the missing empty string in the "subquery" argument):

project = "10000" AND issuetype  in (10400,10401,10402,10403) AND issueFunction in issueFieldExactMatch(, summary, "Test")

What it should generate is:

project = "10000" AND issuetype  in (10400,10401,10402,10403) AND issueFunction in issueFieldExactMatch("", summary, "Test")

I've tried various escape methods but none of them have worked. The closest I've come is "\\\"\\\"" which generates the following error:

com.atlassian.jira.jql.parser.antlr.RuntimeRecognitionException: NoViableAltException(-1@[478:1: operator returns [Operator operator] : ( EQUALS | NOT_EQUALS | LIKE | NOT_LIKE | LT | GT | LTEQ | GTEQ | IN | IS NOT | IS | NOT IN | WAS | WAS NOT | WAS IN | WAS NOT IN | CHANGED );])

2 answers

0 votes
Fabio Racobaldo _Herzum_
Community Champion
April 4, 2014

Hi Nathon,

did you try to add "\"\"" instead of "" ?

Long[]).and().not().issue(issue.getKey()).and().field("issueFunction").inFunc("issueFieldExactMatch", "\"\"", "summary", currentSummary).buildQuery()

Nathon Fowlie
Contributor
April 6, 2014

Yeah originally I had "" and I've also tried "\"\"", "''" and various quantities of backslash characters. It's ok I'm using a work-around (use the standard .summary("foo") condition that generates a "contains" query, then loop through the results and try to find the exact match). Obviously not an efficient solution so would be good to find out how to make this work

0 votes
Boris Georgiev [Appfire]
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
April 3, 2014

Try passing com.atlassian.query.operand.EmptyOperand.OPERAND_NAME instead empty string.

Suggest an answer

Log in or Sign up to answer