diff --git a/jOOQ/src/main/java/org/jooq/impl/TransactionListeners.java b/jOOQ/src/main/java/org/jooq/impl/TransactionListeners.java index a810e766b9..7ca60dd945 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TransactionListeners.java +++ b/jOOQ/src/main/java/org/jooq/impl/TransactionListeners.java @@ -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); }