Class AbstractVersionsFunction

java.lang.Object
com.atlassian.jira.plugin.jql.function.AbstractJqlFunction
com.atlassian.jira.plugin.jql.function.AbstractVersionsFunction
All Implemented Interfaces:
ClauseSanitisingJqlFunction, JqlFunction
Direct Known Subclasses:
AllReleasedVersionsFunction, AllUnreleasedVersionsFunction, EarliestUnreleasedVersionFunction, LatestReleasedVersionFunction

public abstract class AbstractVersionsFunction extends AbstractJqlFunction implements ClauseSanitisingJqlFunction
An abstract class for the versions system field flag functions
Since:
v4.0
  • Field Details

  • Constructor Details

  • Method Details

    • validate

      public MessageSet validate(ApplicationUser searcherUser, FunctionOperand operand, TerminalClause terminalClause)
      Description copied from interface: JqlFunction
      Will validate the function operand's arguments and report back any errors.
      Specified by:
      validate in interface JqlFunction
      Parameters:
      searcherUser - the user performing the search
      operand - the operand to validate
      terminalClause - the terminal clause that contains the operand
      Returns:
      a MessageSet which will contain any validation errors or warnings or will be empty if there is nothing to report; never null.
    • getValues

      @Nonnull public List<QueryLiteral> getValues(QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause)
      Description copied from interface: JqlFunction

      Gets the unexpanded values provided by the user on input. This is the output values that will later be transformed into index values.

      For example, a function who returns all the released versions of a specified project should return QueryLiterals representing the ids of those versions. For correctness, always opt to return the most specific identifier for the object; if you can return either the id (which is stored in the index) or a string name (that would require resolving to get the index value), choose the id.

      Specified by:
      getValues in interface JqlFunction
      Parameters:
      queryCreationContext - the context of query creation
      operand - the operand to get values from
      terminalClause - the terminal clause that contains the operand
      Returns:
      a List of objects that represent this Operands raw values. Cannot be null.
    • sanitiseOperand

      public FunctionOperand sanitiseOperand(ApplicationUser searcher, FunctionOperand operand)
      Description copied from interface: ClauseSanitisingJqlFunction
      Sanitise a function operand for the specified user, so that information is not leaked.
      Specified by:
      sanitiseOperand in interface ClauseSanitisingJqlFunction
      Parameters:
      searcher - the user performing the search
      operand - the operand to sanitise; will only be sanitised if valid
      Returns:
      the sanitised operand; never null.
    • getMinimumNumberOfExpectedArguments

      public int getMinimumNumberOfExpectedArguments()
      Description copied from interface: JqlFunction
      This method must return the number of arguments that the function expects to perform its operation correctly. If the function can accept a variable number of arguments this value should be the lower limit. It is perfectly legal for a function to take no arguments and return 0 for this method.
      Specified by:
      getMinimumNumberOfExpectedArguments in interface JqlFunction
      Returns:
      the number of arguments that the function expects to perform its operation correctly. Must be >=0.
    • getDataType

      public JiraDataType getDataType()
      Description copied from interface: JqlFunction
      Provides the JiraDataType that this function handles and creates values for. This allows us to infer some information about how it will interact with other elements in the system.

      For example, if this returns JiraDataTypes.DATE then we know that we can provide values for any clauses that also specify a data type of DATE.

      Specified by:
      getDataType in interface JqlFunction
      Returns:
      the JiraDataType that this function produces values for. Cannot be null.
      See Also:
    • createIndexInfoResolver

      protected IndexInfoResolver<Project> createIndexInfoResolver(NameResolver<Project> projectResolver)
    • getAllVersions

      protected abstract Collection<Version> getAllVersions(ApplicationUser user)
      Returns:
      all the versions relevant to this function.
    • getVersionsForProject

      protected abstract Collection<Version> getVersionsForProject(Long projectId)
      Parameters:
      projectId - the id of the Project which the versions belong to
      Returns:
      all the versions relevant to this function and the specified project