View Javadoc
1   package com.atlassian.activeobjects.confluence.backup;
2   
3   import com.atlassian.activeobjects.spi.Backup;
4   import com.atlassian.activeobjects.spi.HotRestartEvent;
5   import com.atlassian.activeobjects.spi.TransactionSynchronisationManager;
6   import com.atlassian.confluence.importexport.ImportExportException;
7   import com.atlassian.confluence.importexport.plugin.BackupRestoreProvider;
8   import com.atlassian.event.api.EventPublisher;
9   import org.slf4j.Logger;
10  import org.slf4j.LoggerFactory;
11  
12  import java.io.InputStream;
13  import java.io.OutputStream;
14  
15  /**
16   * Backup and restore provider, implementing confluences backup and restore
17   * module component and bridging to active objects backup component.
18   */
19  public class ActiveObjectsBackupRestoreProvider implements BackupRestoreProvider {
20      private Backup backup;
21      private EventPublisher eventPublisher;
22      private TransactionSynchronisationManager transactionSyncManager;
23  
24      private static final Logger log = LoggerFactory.getLogger(ActiveObjectsBackupRestoreProvider.class);
25  
26      public void backup(OutputStream os) throws ImportExportException {
27          try {
28              backup.save(os, new LoggingBackupProgressMonitor());
29          } catch (Exception ex) {
30              throw new ImportExportException(ex);
31          }
32      }
33  
34      public void restore(InputStream is) throws ImportExportException {
35          try {
36              Runnable restartAoCallback = new Runnable() {
37                  @Override
38                  public void run() {
39                      log.info("Firing active objects hot restart event.");
40                      eventPublisher.publish(HotRestartEvent.INSTANCE);
41                  }
42              };
43  
44              transactionSyncManager.runOnSuccessfulCommit(restartAoCallback);
45              transactionSyncManager.runOnRollBack(restartAoCallback);
46  
47              backup.restore(is, new LoggingRestoreProgressMonitor());
48          } catch (Exception ex) {
49              throw new ImportExportException(ex);
50          }
51      }
52  
53      public void setBackup(Backup backup) {
54          this.backup = backup;
55      }
56  
57      public void setEventPublisher(EventPublisher eventPublisher) {
58          this.eventPublisher = eventPublisher;
59      }
60  
61      public void setTransactionSynchManager(TransactionSynchronisationManager tranSyncManager) {
62          this.transactionSyncManager = tranSyncManager;
63      }
64  }