Class AbstractJournalIndexTaskQueue<T extends IndexTask>

java.lang.Object
com.atlassian.confluence.internal.search.queue.AbstractJournalIndexTaskQueue<T>
Type Parameters:
T - type of the index task
All Implemented Interfaces:
IndexTaskQueue<T>
Direct Known Subclasses:
JournalIndexTaskQueue

@Internal public abstract class AbstractJournalIndexTaskQueue<T extends IndexTask> extends Object implements IndexTaskQueue<T>
Abstract base class for IndexTaskQueue implementations that are backed by the journal.

Subclass implementations supply the type of IndexTask that is queued.

Subclass implementations also supply logic to convert from their supplied IndexTask type to a JournalEntry (and logic for the reverse).

Since:
5.9.
  • Field Details

    • CONTENT_JOURNAL_ID

      @Deprecated @Internal public static final JournalIdentifier CONTENT_JOURNAL_ID
      Deprecated.
      since 7.9.0. Use spring dependency injection to get this instead of reffering static field
    • CHANGE_JOURNAL_ID

      @Deprecated @Internal public static final JournalIdentifier CHANGE_JOURNAL_ID
      Deprecated.
      since 7.9.0. Use spring dependency injection to get this instead of reffering static field
    • journalService

      protected final JournalService journalService
    • anyTypeDao

      protected final AnyTypeDao anyTypeDao
    • indexFlushRequester

      protected final IndexFlushRequester indexFlushRequester
    • journalIdentifier

      protected final JournalIdentifier journalIdentifier
  • Constructor Details

  • Method Details

    • toTask

      protected abstract T toTask(JournalEntry entry)
      Convert an entry to a task.
      Parameters:
      entry - a journal entry.
      Returns:
      a task
    • prefetch

      protected Function<JournalEntry,T> prefetch(Iterable<JournalEntry> entries)
      Provide an entry point to allow concrete class to prefetch data for a collection of journal entry
      Parameters:
      entries -
      Returns:
    • toEntry

      protected abstract Optional<JournalEntry> toEntry(T task)
      Convert a task into a journal entry.
      Parameters:
      task - a task
      Returns:
      a journal entry
    • getSize

      public int getSize()
      Description copied from interface: IndexTaskQueue
      Retrieve the number of elements in the queue.
      Specified by:
      getSize in interface IndexTaskQueue<T extends IndexTask>
      Returns:
      size of the queue.
    • getQueuedEntries

      public List<T> getQueuedEntries()
      Description copied from interface: IndexTaskQueue
      Retrieve a list of all queued entries.
      Specified by:
      getQueuedEntries in interface IndexTaskQueue<T extends IndexTask>
      Returns:
      a list of IndexTask instances.
    • getQueuedEntries

      public List<T> getQueuedEntries(int limit)
      Description copied from interface: IndexTaskQueue
      Retrieve a list of the N of queued entries.
      Specified by:
      getQueuedEntries in interface IndexTaskQueue<T extends IndexTask>
      Parameters:
      limit - first N entries to retrieve.
      Returns:
      a list of IndexTask instances.
    • enqueue

      public void enqueue(T task)
      Description copied from interface: IndexTaskQueue
      Add a new task to this queue.
      Specified by:
      enqueue in interface IndexTaskQueue<T extends IndexTask>
    • enqueueAll

      public void enqueueAll(Collection<T> tasks)
      Description copied from interface: IndexTaskQueue
      Add a collection of tasks to this queue.
      Specified by:
      enqueueAll in interface IndexTaskQueue<T extends IndexTask>
    • flushQueue

      @Deprecated public List<T> flushQueue(int numberOfEntries)
      Deprecated.
      Description copied from interface: IndexTaskQueue
      Flush the contents of the queue, returning those elements currently queued as the result.

      Tasks that were added immediately before calling this method are not returned. See IndexTaskQueue.flushQueue() for an alternative.

      Specified by:
      flushQueue in interface IndexTaskQueue<T extends IndexTask>
      Parameters:
      numberOfEntries - the maximum number of entries to return. This should return the n first entries in the queue.
      Returns:
      the list of entries on the queue when it was flushed.
    • flushQueue

      @Deprecated public List<T> flushQueue()
      Deprecated.
      Description copied from interface: IndexTaskQueue
      Flush the contents of the queue, returning those elements currently queued as the result.

      This method waits until tasks that we added immediately before calling this method are available. See IndexTaskQueue.flushQueue(int) for an alternative.

      Specified by:
      flushQueue in interface IndexTaskQueue<T extends IndexTask>
      Returns:
      the list of entries on the queue when it was flushed.
    • flushAndExecute

      public int flushAndExecute(Consumer<T> action)
      Description copied from interface: IndexTaskQueue
      Flush the contents of the queue, applying the given action to each flushed entry.

      This method waits until tasks that we added immediately before calling this method are available. See IndexTaskQueue.flushAndExecute(Consumer, int) for an alternative.

      Specified by:
      flushAndExecute in interface IndexTaskQueue<T extends IndexTask>
      Parameters:
      action - action to perform for each entry
      Returns:
      the number of entries that were flushed.
    • flushAndExecute

      public int flushAndExecute(Consumer<T> action, int numberOfEntries)
      Description copied from interface: IndexTaskQueue
      Flush the contents of the queue, applying the given action to each flushed entry.

      Tasks that were added immediately before calling this method are not returned. See IndexTaskQueue.flushAndExecute(Consumer) for an alternative.

      Specified by:
      flushAndExecute in interface IndexTaskQueue<T extends IndexTask>
      Parameters:
      action - action to perform for each entry
      numberOfEntries - the maximum number of entries to flush. This should flush the n first entries in the queue.
      Returns:
      the number of entries that were flushed.
    • flushQueueWithActionOnIterableOfTasks

      public int flushQueueWithActionOnIterableOfTasks(Consumer<Iterable<T>> actionOnIterableOfTasks, int numberOfTasks)
      Description copied from interface: IndexTaskQueue
      Flush the contents of the queue, applying the given action to an iterable of tasks.

      applys an action to an individual task. In contrast, this method applies an action to an iterable of tasks.

      If the specified action throws a RuntimeException, tasks are returned to the queue so that they can be processed again. The exception will be propagated so clients must handle it accordingly.

      Specified by:
      flushQueueWithActionOnIterableOfTasks in interface IndexTaskQueue<T extends IndexTask>
      Parameters:
      actionOnIterableOfTasks - action on iterable of tasks
      numberOfTasks - the maximum number of tasks to retrieve from the queue
      Returns:
      the number of tasks that were flushed to the index.
    • reset

      public void reset()
      Description copied from interface: IndexTaskQueue
      Remove all queued index tasks from this queue.
      Specified by:
      reset in interface IndexTaskQueue<T extends IndexTask>
    • getJournalIdentifier

      public JournalIdentifier getJournalIdentifier()