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 forIndexTaskQueue
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 aJournalEntry
(and logic for the reverse).- Since:
- 5.9.
-
-
Field Summary
Fields Modifier and Type Field Description protected AnyTypeDao
anyTypeDao
static JournalIdentifier
CHANGE_JOURNAL_ID
Deprecated.since 7.9.0.static JournalIdentifier
CONTENT_JOURNAL_ID
Deprecated.since 7.9.0.protected IndexFlushRequester
indexFlushRequester
protected JournalIdentifier
journalIdentifier
protected JournalService
journalService
-
Constructor Summary
Constructors Constructor Description AbstractJournalIndexTaskQueue(JournalService journalService, AnyTypeDao anyTypeDao, IndexFlushRequester indexFlushRequester, JournalIdentifier journalIdentifier)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
enqueue(T task)
Add a new task to this queue.void
enqueueAll(Collection<T> tasks)
Add a collection of tasks to this queue.List<T>
flushQueue()
Deprecated.List<T>
flushQueue(int numberOfEntries)
Deprecated.int
flushQueue(com.atlassian.fugue.Effect<T> action)
Deprecated.since 7.0.1.int
flushQueue(com.atlassian.fugue.Effect<T> action, int numberOfEntries)
Deprecated.since 7.0.1.int
flushQueueWithActionOnIterableOfTasks(Consumer<Iterable<T>> actionOnIterableOfTasks, int numberOfTasks)
Flush the contents of the queue, applying the given action to an iterable of tasks.JournalIdentifier
getJournalIdentifier()
List<T>
getQueuedEntries()
Retrieve a list of all queued entries.List<T>
getQueuedEntries(int limit)
Retrieve a list of the N of queued entries.int
getSize()
Retrieve the number of elements in the queue.void
reset()
Remove all queued index tasks from this queue.protected abstract Optional<JournalEntry>
toEntry(T task)
Convert a task into a journal entry.protected abstract T
toTask(JournalEntry entry)
Convert an entry to a task.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.atlassian.confluence.search.IndexTaskQueue
flushAndExecute, flushAndExecute
-
-
-
-
Field Detail
-
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 Detail
-
AbstractJournalIndexTaskQueue
public AbstractJournalIndexTaskQueue(JournalService journalService, AnyTypeDao anyTypeDao, IndexFlushRequester indexFlushRequester, JournalIdentifier journalIdentifier)
-
-
Method Detail
-
toTask
protected abstract T toTask(JournalEntry entry)
Convert an entry to a task.- Parameters:
entry
- a journal entry.- Returns:
- a task
-
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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<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 interfaceIndexTaskQueue<T extends IndexTask>
- Returns:
- the list of entries on the queue when it was flushed.
-
flushQueue
@Deprecated public int flushQueue(com.atlassian.fugue.Effect<T> action)
Deprecated.since 7.0.1. UseIndexTaskQueue.flushAndExecute(Consumer)
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:
flushQueue
in interfaceIndexTaskQueue<T extends IndexTask>
- Parameters:
action
- action to perform for each entry- Returns:
- the number of entries that were flushed.
-
flushQueue
@Deprecated public int flushQueue(com.atlassian.fugue.Effect<T> action, int numberOfEntries)
Deprecated.since 7.0.1. UseIndexTaskQueue.flushAndExecute(Consumer, int)
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:
flushQueue
in interfaceIndexTaskQueue<T extends IndexTask>
- Parameters:
action
- action to perform for each entrynumberOfEntries
- 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.IndexTaskQueue.flushQueue(Effect, int)
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 interfaceIndexTaskQueue<T extends IndexTask>
- Parameters:
actionOnIterableOfTasks
- action on iterable of tasksnumberOfTasks
- 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 interfaceIndexTaskQueue<T extends IndexTask>
-
getJournalIdentifier
public JournalIdentifier getJournalIdentifier()
-
-