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
17
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 }