public static void TriggerBeforeCommit(bool readOnly)
 {
     foreach (var synchronization in TransactionSynchronizationManager.GetSynchronizations())
     {
         synchronization.BeforeCommit(readOnly);
     }
 }
 public static void InvokeAfterCommit(List <ITransactionSynchronization> synchronizations)
 {
     if (synchronizations != null)
     {
         foreach (var synchronization in TransactionSynchronizationManager.GetSynchronizations())
         {
             synchronization.AfterCommit();
         }
     }
 }
        private List <ITransactionSynchronization> DoSuspendSynchronization()
        {
            var suspendedSynchronizations = TransactionSynchronizationManager.GetSynchronizations();

            foreach (var synchronization in suspendedSynchronizations)
            {
                synchronization.Suspend();
            }

            TransactionSynchronizationManager.ClearSynchronization();
            return(suspendedSynchronizations);
        }
 public static void TriggerBeforeCompletion(ILogger logger = null)
 {
     foreach (var synchronization in TransactionSynchronizationManager.GetSynchronizations())
     {
         try
         {
             synchronization.BeforeCompletion();
         }
         catch (Exception ex)
         {
             logger?.LogError(ex, "TransactionSynchronization.beforeCompletion threw exception");
         }
     }
 }
 public static void InvokeAfterCompletion(List <ITransactionSynchronization> synchronizations, int completionStatus, ILogger logger = null)
 {
     if (synchronizations != null)
     {
         foreach (var synchronization in TransactionSynchronizationManager.GetSynchronizations())
         {
             try
             {
                 synchronization.AfterCompletion(completionStatus);
             }
             catch (Exception ex)
             {
                 logger.LogError("TransactionSynchronization.afterCompletion threw exception", ex);
             }
         }
     }
 }
        private void TriggerAfterCompletion(DefaultTransactionStatus status, int completionStatus)
        {
            if (status.IsNewSynchronization)
            {
                var synchronizations = TransactionSynchronizationManager.GetSynchronizations();
                TransactionSynchronizationManager.ClearSynchronization();
                if (!status.HasTransaction || status.IsNewTransaction)
                {
                    _logger?.LogTrace("Triggering afterCompletion synchronization");

                    // No transaction or new transaction for the current scope ->
                    // invoke the afterCompletion callbacks immediately
                    InvokeAfterCompletion(synchronizations, completionStatus);
                }
                else if (synchronizations.Count > 0)
                {
                    // Existing transaction that we participate in, controlled outside
                    // of the scope of this Spring transaction manager -> try to register
                    // an afterCompletion callback with the existing (JTA) transaction.
                    RegisterAfterCompletionWithExistingTransaction(status.Transaction, synchronizations);
                }
            }
        }
        public static void TriggerAfterCompletion(int completionStatus)
        {
            var synchronizations = TransactionSynchronizationManager.GetSynchronizations();

            InvokeAfterCompletion(synchronizations, completionStatus);
        }
 public static void TriggerAfterCommit()
 {
     InvokeAfterCommit(TransactionSynchronizationManager.GetSynchronizations());
 }