@ExperimentalApi public interface


Known Indirect Subclasses


This interface is considered usable by external developers but its contracts have not stabilized.

Experimental APIs may be changed at any time before being marked @Internal or @PublicApi.

Class Overview

Provides the logic to build an SQL query for a clause.


Public Methods
@Internal @Nonnull DbQueryFactoryResult getQuery(QueryCreationContext queryCreationContext, TerminalClause terminalClause)
Generates parts of a query for the passed TerminalClause.

Public Methods

@Internal @Nonnull public DbQueryFactoryResult getQuery (QueryCreationContext queryCreationContext, TerminalClause terminalClause)


This method is an internal implementation detail and will change without notice.

Clients that depend on @Internal classes and interfaces can not expect to be compatible with any version other than the version they were compiled against (even minor version and milestone releases may break binary compatibility with respect to @Internal elements).

Generates parts of a query for the passed TerminalClause.

This method is only called after JIRA works out that the TerminalClause is relevant to this ClauseQueryFactory.

A ClauseFactory needs to be careful when implementing the NOT_LIKE, NOT_EQUALS or NOT_IN operators. These negative operators should not match what is considered EMPTY. For example, the query "resolution is EMPTY" will return all unresolved issues in JIRA. The query "resolution != fixed" will only return all resolved issues that have not been resolved as "fixed", that is, it will not return any unresolved issues. The user would have to enter the query "resolution != fixed or resolution is EMPTY" to find all issues that are either unresolved or not resolved as "fixed".

The ClauseQueryFactory must handle the situation when an invalid TerminalClause is passed. The ClauseQueryFactory must return an empty Lucene Search if the passed TerminalClause is invalid. Most importantly, ClauseQueryFactory may not throw an exception on the input of an invalid TerminalClause.

queryCreationContext the context of the query creation call; used to indicate that permissions should be ignored for "admin queries"
terminalClause the clause for which this factory is generating a query.
  • DbQueryFactoryResult contains parts of a query that can be used to search and metadata about the query. Null cannot be returned.