[jOOQ/jOOQ#8746] Add support for reversing the listener invocation order
In some cases, it may make sense to support reversing the invocation order for some listener lists, e.g. for TransactionListener (in this commit), depending on whether we're calling a [action]Start() or an [action]End() event.
This commit is contained in:
parent
0fba3e7564
commit
277b295cd0
@ -37,10 +37,13 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.TransactionContext;
|
||||
import org.jooq.TransactionListener;
|
||||
import org.jooq.TransactionListenerProvider;
|
||||
import org.jooq.conf.InvocationOrder;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
@ -59,37 +62,49 @@ class TransactionListeners implements TransactionListener {
|
||||
|
||||
@Override
|
||||
public final void beginStart(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerStartInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.beginStart(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void beginEnd(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerEndInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.beginEnd(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void commitStart(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerStartInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.commitStart(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void commitEnd(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerEndInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.commitEnd(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void rollbackStart(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerStartInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.rollbackStart(ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void rollbackEnd(TransactionContext ctx) {
|
||||
for (TransactionListener listener : listeners)
|
||||
for (TransactionListener listener : ctx.settings().getTransactionListenerEndInvocationOrder() == InvocationOrder.DEFAULT
|
||||
? Arrays.asList(listeners)
|
||||
: Tools.reverseIterable(listeners))
|
||||
listener.rollbackEnd(ctx);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user