|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.kuali.rice.ken.service.impl.ConcurrentJob<T>
public abstract class ConcurrentJob<T>
Base class for jobs that must obtain a set of work items atomically
Field Summary | |
---|---|
protected java.util.concurrent.ExecutorService |
executor
|
protected org.apache.log4j.Logger |
LOG
|
protected org.springframework.transaction.PlatformTransactionManager |
txManager
|
Constructor Summary | |
---|---|
ConcurrentJob(org.springframework.transaction.PlatformTransactionManager txManager,
java.util.concurrent.ExecutorService executor)
Constructs a ConcurrentJob instance. |
Method Summary | |
---|---|
protected org.springframework.transaction.support.TransactionTemplate |
createNewTransaction()
Helper method for creating a TransactionTemplate initialized to create a new transaction |
protected java.util.Collection<java.util.Collection<T>> |
groupWorkItems(java.util.Collection<T> workItems,
ProcessingResult result)
Template method that subclasses should override to group work items into units of work |
protected abstract java.util.Collection<?> |
processWorkItems(java.util.Collection<T> items)
Template method that subclasses should override to process a given work item and mark it as untaken afterwards |
ProcessingResult |
run()
Main processing method which invokes subclass implementations of template methods to obtain available work items, and process them concurrently |
protected abstract java.util.Collection<T> |
takeAvailableWorkItems()
Template method that subclasses should override to obtain a set of available work items and mark them as taken |
protected abstract void |
unlockWorkItem(T item)
Template method that subclasses should override to unlock a given work item when procesing has failed. |
protected void |
unlockWorkItemAtomically(T workItem)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final org.apache.log4j.Logger LOG
protected java.util.concurrent.ExecutorService executor
protected org.springframework.transaction.PlatformTransactionManager txManager
Constructor Detail |
---|
public ConcurrentJob(org.springframework.transaction.PlatformTransactionManager txManager, java.util.concurrent.ExecutorService executor)
txManager
- PlatformTransactionManager to use for transactionsexecutor
- the ExecutorService to use to process work itemsMethod Detail |
---|
protected org.springframework.transaction.support.TransactionTemplate createNewTransaction()
protected abstract java.util.Collection<T> takeAvailableWorkItems()
protected java.util.Collection<java.util.Collection<T>> groupWorkItems(java.util.Collection<T> workItems, ProcessingResult result)
workItems
- list of work items to break into groupsresult
- ProcessingResult to modify if there are any failures...this is sort of a hack because previously
failure to obtain a deliverer was considered a work item failure, and now this method has been factored out...
but the tests still want to see the failure
protected abstract java.util.Collection<?> processWorkItems(java.util.Collection<T> items)
item
- the work item
protected abstract void unlockWorkItem(T item)
item
- the work item to unlockpublic ProcessingResult run()
protected void unlockWorkItemAtomically(T workItem)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |