View Javadoc
1   package com.atlassian.activeobjects.backup;
2   
3   import com.atlassian.activeobjects.admin.PluginToTablesMapping;
4   import com.atlassian.activeobjects.osgi.ActiveObjectsServiceFactory;
5   import com.atlassian.activeobjects.spi.NullBackupProgressMonitor;
6   import com.atlassian.activeobjects.spi.NullRestoreProgressMonitor;
7   import com.atlassian.plugin.PluginAccessor;
8   import net.java.ao.EntityManager;
9   import net.java.ao.atlassian.AtlassianFieldNameConverter;
10  import net.java.ao.atlassian.AtlassianIndexNameConverter;
11  import net.java.ao.atlassian.AtlassianSequenceNameConverter;
12  import net.java.ao.atlassian.AtlassianTriggerNameConverter;
13  import net.java.ao.test.converters.NameConverters;
14  import net.java.ao.test.junit.ActiveObjectsJUnitRunner;
15  import org.apache.commons.io.IOUtils;
16  import org.junit.After;
17  import org.junit.Before;
18  import org.junit.runner.RunWith;
19  import org.slf4j.Logger;
20  import org.slf4j.LoggerFactory;
21  
22  import java.io.ByteArrayOutputStream;
23  import java.io.IOException;
24  import java.io.InputStream;
25  import java.io.UnsupportedEncodingException;
26  
27  import static org.mockito.Mockito.mock;
28  
29  @RunWith(ActiveObjectsJUnitRunner.class)
30  @NameConverters(
31          table = BackupActiveObjectsTableNameConverter.class,
32          field = AtlassianFieldNameConverter.class,
33          sequence = AtlassianSequenceNameConverter.class,
34          trigger = AtlassianTriggerNameConverter.class,
35          index = AtlassianIndexNameConverter.class)
36  public abstract class AbstractTestActiveObjectsBackup {
37      private static final String UTF_8 = "UTF-8";
38  
39      protected final Logger logger = LoggerFactory.getLogger(this.getClass());
40  
41      protected EntityManager entityManager;
42      private ActiveObjectsBackup aoBackup;
43  
44      @Before
45      public final void setUp() {
46          aoBackup = new ActiveObjectsBackup(entityManager.getProvider(), entityManager.getNameConverters(), new ImportExportErrorServiceImpl(new PluginInformationFactory(mock(PluginToTablesMapping.class), mock(PluginAccessor.class))), mock(ActiveObjectsServiceFactory.class));
47      }
48  
49      @After
50      public final void tearDown() {
51          aoBackup = null;
52      }
53  
54      protected final String save() {
55          final ByteArrayOutputStream os = new ByteArrayOutputStream();
56          aoBackup.save(os, NullBackupProgressMonitor.INSTANCE);
57          try {
58              return os.toString(UTF_8);
59          } catch (UnsupportedEncodingException e) {
60              throw new RuntimeException(e);
61          }
62      }
63  
64      protected final void restore(String xmlBackup) throws IOException {
65          aoBackup.restore(IOUtils.toInputStream(xmlBackup, UTF_8), NullRestoreProgressMonitor.INSTANCE);
66      }
67  
68      protected final String read(String resource) throws IOException {
69          logger.debug("Reading resource from '{}'", resource);
70          InputStream is = null;
71          try {
72              is = this.getClass().getResourceAsStream(resource);
73              return IOUtils.toString(is, UTF_8);
74          } finally {
75              IOUtils.closeQuietly(is);
76          }
77      }
78  }