View Javadoc
1   package com.atlassian.activeobjects.confluence.transaction;
2   
3   import com.atlassian.activeobjects.spi.TransactionSynchronisationManager;
4   import com.atlassian.confluence.core.SynchronizationManager;
5   import org.springframework.transaction.support.TransactionSynchronization;
6   import org.springframework.transaction.support.TransactionSynchronizationAdapter;
7   
8   /**
9    * An implementation that mostly delegates to confluence core SynchronisationManager.
10   *
11   * Handles the adaption between Runnables and springs TransactionSynchronization.
12   */
13  public class ConfluenceAOSynchronisationManager implements TransactionSynchronisationManager {
14      private SynchronizationManager synchronisationManager;
15  
16      public ConfluenceAOSynchronisationManager(SynchronizationManager synchManager) {
17          this.synchronisationManager = synchManager;
18      }
19  
20      @Override
21      public boolean runOnRollBack(final Runnable callback) {
22          if (synchronisationManager.isTransactionActive()) {
23              synchronisationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
24                  @Override
25                  public void afterCompletion(int status) {
26                      if (status == TransactionSynchronization.STATUS_ROLLED_BACK) {
27                          callback.run();
28                      }
29                  }
30              });
31              return true;
32          } else {
33              return false;
34          }
35      }
36  
37      @Override
38      public boolean runOnSuccessfulCommit(Runnable callback) {
39          if (synchronisationManager.isTransactionActive()) {
40              synchronisationManager.runOnSuccessfulCommit(callback);
41              return true;
42          } else {
43              return false;
44          }
45      }
46  
47      @Override
48      public boolean isActiveSynchronisedTransaction() {
49          return synchronisationManager.isTransactionActive();
50      }
51  }