Class DefaultSearchHandlerManager

java.lang.Object
com.atlassian.jira.issue.search.managers.DefaultSearchHandlerManager
All Implemented Interfaces:
InitializingComponent, SearchHandlerManager, FieldIndexerAccessor, FieldIndexerStatCollectorAccessor

@ThreadSafe public final class DefaultSearchHandlerManager extends Object implements SearchHandlerManager, InitializingComponent, FieldIndexerAccessor, FieldIndexerStatCollectorAccessor
Default JIRA implementation of SearchHandlerManager.
Since:
v4.0
  • Constructor Details

  • Method Details

    • afterInstantiation

      public void afterInstantiation() throws Exception
      Description copied from interface: InitializingComponent
      Called after all the beans are constructed and the ApplicationContext is fully populated. Order of execution is order of bean creation, driven by InitializingComponentProcessor.
      Specified by:
      afterInstantiation in interface InitializingComponent
      Throws:
      Exception
    • onClearCache

      @EventListener public void onClearCache(ClearCacheEvent event)
    • onJiraPluginCacheResetEvent

      @EventListener public void onJiraPluginCacheResetEvent(JiraPluginCacheResetEvent event)
    • getClauseHandler

      @Nonnull public Collection<ClauseHandler> getClauseHandler(ApplicationUser user, String jqlClauseName)
      Description copied from interface: SearchHandlerManager
      Return a collection of ClauseHandlers registered against the passed JQL clause name. This will only return the handlers that the user has permission to see as specified by the
      invalid reference
      com.atlassian.jira.jql.permission.ClausePermissionHandler#hasPermissionToUseClause(User)
      method. The reason this is returning a collection is that custom fields can have the same JQL clause name and therefore resolve to multiple clause handlers. This will never be the case for System fields; we don't allow it!
      Specified by:
      getClauseHandler in interface SearchHandlerManager
      Parameters:
      user - that will be used to perform a permission check.
      jqlClauseName - the clause name to search for.
      Returns:
      A collection of ClauseHandler that are associated with the passed JQL clause name. An empty collection will be returned to indicate failure.
    • getClauseHandler

      @Nonnull public Collection<ClauseHandler> getClauseHandler(String jqlClauseName)
      Description copied from interface: SearchHandlerManager
      Return a collection of ClauseHandlers registered against the passed JQL clause name. This will return all available handlers, regardless of permissions. The reason this is returning a collection is that custom fields can have the same JQL clause name and therefore resolve to multiple clause handlers. This will never be the case for System fields; we don't allow it!
      Specified by:
      getClauseHandler in interface SearchHandlerManager
      Parameters:
      jqlClauseName - the clause name to search for.
      Returns:
      A collection of ClauseHandler that are associated with the passed JQL clause name. An empty collection will be returned to indicate failure.
    • getJqlClauseNames

      @Nonnull public Collection<ClauseNames> getJqlClauseNames(String fieldId)
      Description copied from interface: SearchHandlerManager
      Get the ClauseNames associated with the provided field name.

      A collection can be returned because it is possible for multiple clause handlers to register against the same field.

      Specified by:
      getJqlClauseNames in interface SearchHandlerManager
      Parameters:
      fieldId - the Field.getId().
      Returns:
      the ClauseNames associated with the provided field name. Empty collection is returned when the field has no JQL names (i.e. no clause handlers) associated with it.
    • getVisibleJqlClauseNames

      @Nonnull public Collection<ClauseNames> getVisibleJqlClauseNames(ApplicationUser searcher)
      Description copied from interface: SearchHandlerManager
      Get all the available clause names that the searcher can see.
      Specified by:
      getVisibleJqlClauseNames in interface SearchHandlerManager
      Parameters:
      searcher - that will be used to perform a permission check.
      Returns:
      the ClauseNames visible to the user. Empty collection is returned when the can see no clauses.
    • getVisibleClauseHandlers

      @Nonnull public Collection<ClauseHandler> getVisibleClauseHandlers(ApplicationUser searcher)
      Description copied from interface: SearchHandlerManager
      Get all the available clause handlers that the searcher can see.
      Specified by:
      getVisibleClauseHandlers in interface SearchHandlerManager
      Parameters:
      searcher - that will be used to perform a permission check.
      Returns:
      the ClauseHandler visible to the user. Empty collection is returned when the can see no clauses.
    • getFieldIds

      @Nonnull public Collection<String> getFieldIds(ApplicationUser searcher, String jqlClauseName)
      Description copied from interface: SearchHandlerManager
      Gets the field ids that are associated with the provided jqlClauseName. The reason this returns a collection is that custom fields can have the same JQL clause name and therefore resolve to multiple field ids. This will only return the fields associated with clause handlers that the user has permission to see as specified by the
      invalid reference
      com.atlassian.jira.jql.permission.ClausePermissionHandler#hasPermissionToUseClause(com.atlassian.crowd.embedded.api.User)
      method.
      Specified by:
      getFieldIds in interface SearchHandlerManager
      Parameters:
      searcher - that will be used to perform a permission check.
      jqlClauseName - the clause name to find the field id for.
      Returns:
      the field ids that are associated with the provided jqlClauseName, empty collection if not found
    • getFieldIds

      @Nonnull public Collection<String> getFieldIds(String jqlClauseName)
      Description copied from interface: SearchHandlerManager
      Gets the field ids that are associated with the provided jqlClauseName. The reason this returns a collection is that custom fields can have the same JQL clause name and therefore resolve to multiple field ids.
      Specified by:
      getFieldIds in interface SearchHandlerManager
      Parameters:
      jqlClauseName - the clause name to find the field id for.
      Returns:
      the field ids that are associated with the provided jqlClauseName, empty collection if not found
    • getSearchersByClauseName

      @Nonnull public Collection<IssueSearcher<?>> getSearchersByClauseName(ApplicationUser user, String jqlClauseName)
      Description copied from interface: SearchHandlerManager
      Return a collection of IssueSearchers registered against the passed JQL clause name. This will only return the IssueSearchers that the user has permission to see as specified by the
      invalid reference
      com.atlassian.jira.issue.search.searchers.renderer.SearchRenderer#isShown(User, com.atlassian.jira.issue.search.SearchContext)
      method.
      Specified by:
      getSearchersByClauseName in interface SearchHandlerManager
      Parameters:
      user - that will be used to perform a permission check.
      jqlClauseName - the clause name to search for.
      Returns:
      A collection of IssueSearchers that are associetd with the passed JQL clause name. An empty collection will be returned to indicate failure.
    • getSearchers

      public Collection<IssueSearcher<?>> getSearchers(ApplicationUser searcher, SearchContext context)
      Description copied from interface: SearchHandlerManager
      Get searchers that are applicable for a given context. This is found through the invalid input: '{@link com.atlassian.jira.issue.search.searchers.IssueSearcher#getSearchRenderer()#isShown(com.atlassian.jira.issue.search.SearchContext)'} method.
      Specified by:
      getSearchers in interface SearchHandlerManager
      Parameters:
      searcher - performing this action.
      context - for the list of searchers. Must not be null
      Returns:
      Collection of IssueSearcher
    • getAllSearchers

      public Collection<IssueSearcher<?>> getAllSearchers()
      Description copied from interface: SearchHandlerManager
      Return all the active searchers in JIRA. It will not return the searchers unless they are associated with a field.
      Specified by:
      getAllSearchers in interface SearchHandlerManager
      Returns:
      all the searchers in JIRA.
    • getSearcherGroups

      public Collection<SearcherGroup> getSearcherGroups()
      Description copied from interface: SearchHandlerManager
      Get all searcher groups. Note that the SearcherGroup will still appear even if no IssueSearcher are shown for the group.
      Specified by:
      getSearcherGroups in interface SearchHandlerManager
      Returns:
      Collection of SearcherGroup
    • getSearcher

      public IssueSearcher<?> getSearcher(String id)
      Description copied from interface: SearchHandlerManager
      Get a searcher by the searchers name.
      Specified by:
      getSearcher in interface SearchHandlerManager
      Parameters:
      id - the string identifier returned by
      invalid @link
      {@link com.atlassian.jira.issue.search.searchers.IssueSearcher#getSearchInformation()#getId()
      }
      Returns:
      the searcher matching the id, null if none is found.
    • getAllFieldIndexers

      public Collection<FieldIndexer> getAllFieldIndexers()
      Specified by:
      getAllFieldIndexers in interface FieldIndexerAccessor
    • getIndexerStatsCollectors

      public Collection<FieldIndexerStatsCollector> getIndexerStatsCollectors()
      Specified by:
      getIndexerStatsCollectors in interface FieldIndexerStatCollectorAccessor
    • refresh

      public void refresh()
      Description copied from interface: SearchHandlerManager
      Refreshes the SearchHandlerManager.
      Specified by:
      refresh in interface SearchHandlerManager