Hello,
Is there any specific reason for not removing any successful action
from the action list.
private void executeActions(List list) throws HibernateException {
for(Iterator actionIter =
list.iterator();actionIter.hasNext();){
execute( (Executable) actionIter .next());
actionIter.remove();
}
session.getBatcher().executeBatch();
}
In fact, I think that this doesn't cover all cases yet. It is possible
that a new event will be enqueued while processing other events
(through custom event listeners). So the action queue can grow.
But this can be solved easily with a FIFO queue:
private void executeActions(Queue queue) throws HibernateException {
while (!queue.empty()) {
execute(queue.remove());
}
session.getBatcher().executeBatch();
}
This would work both when events add new actions to the queue, and
when the executeActions() is called twice.
Adam