Author: tolusha
Date: 2011-01-19 02:40:16 -0500 (Wed, 19 Jan 2011)
New Revision: 3817
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestore.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestore.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java
Log:
EXOJCR-1146: DBCleanerService should not relate on AbstractCacheableLockManager
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestore.java 2011-01-19
07:39:43 UTC (rev 3816)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedRepositoryRestore.java 2011-01-19
07:40:16 UTC (rev 3817)
@@ -16,11 +16,6 @@
*/
package org.exoplatform.services.jcr.ext.backup.impl;
-import java.util.ArrayList;
-import java.util.Map;
-
-import javax.jcr.RepositoryException;
-
import org.exoplatform.services.jcr.RepositoryService;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
@@ -32,8 +27,15 @@
import org.exoplatform.services.jcr.ext.backup.RepositoryRestoreExeption;
import org.exoplatform.services.jcr.impl.RepositoryServiceImpl;
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerService;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.Backupable;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.DataCleaner;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.RepositoryException;
+
/**
* Created by The eXo Platform SAS.
*
@@ -46,11 +48,6 @@
{
/**
- * Database cleaner.
- */
- private final DBCleanerService dbCleanerService;
-
- /**
* Value storage cleaner.
*/
private final ValueStorageCleanHelper valueStorageCleanHelper;
@@ -69,7 +66,6 @@
{
super(repoService, backupManagerImpl, repositoryEntry, workspacesMapping,
backupChainLog);
- this.dbCleanerService = new DBCleanerService();
this.valueStorageCleanHelper = new ValueStorageCleanHelper();
this.indexCleanHelper = new IndexCleanHelper();
}
@@ -105,6 +101,24 @@
forceCloseSession(repositoryEntry.getName(), wEntry.getName());
}
+ List<DataCleaner> dataCleaners = new ArrayList<DataCleaner>();
+
+ // collect all DataCleaners
+ for (WorkspaceEntry wEntry : workspaceList)
+ {
+ forceCloseSession(repositoryEntry.getName(), wEntry.getName());
+
+ List<Backupable> backupable =
+
repositoryService.getRepository(this.repositoryEntry.getName()).getWorkspaceContainer(wEntry.getName())
+ .getComponentInstancesOfType(Backupable.class);
+
+
+ for (Backupable component : backupable)
+ {
+ dataCleaners.add(component.getDataCleaner());
+ }
+ }
+
//remove repository
if (isDefault)
{
@@ -116,9 +130,10 @@
}
//clean database
- RepositoryEntry re = new RepositoryEntry();
- re.setWorkspaceEntries(workspaceList);
- dbCleanerService.cleanRepositoryData(re);
+ for (DataCleaner cleaner : dataCleaners)
+ {
+ cleaner.clean();
+ }
//clean index
for (WorkspaceEntry wEntry : workspaceList)
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestore.java 2011-01-19
07:39:43 UTC (rev 3816)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistedWorkspaceRestore.java 2011-01-19
07:40:16 UTC (rev 3817)
@@ -25,10 +25,14 @@
import org.exoplatform.services.jcr.ext.backup.BackupManager;
import org.exoplatform.services.jcr.ext.backup.WorkspaceRestoreException;
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerService;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.Backupable;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.DataCleaner;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.jcr.RepositoryException;
/**
@@ -47,11 +51,6 @@
private static Log log =
ExoLogger.getLogger("exo.jcr.component.ext.JobExistedWorkspaceRestore");
/**
- * Database cleaner.
- */
- private final DBCleanerService dbCleanerService;
-
- /**
* Value storage cleaner.
*/
private final ValueStorageCleanHelper valueStorageCleaner;
@@ -69,7 +68,6 @@
{
super(repositoryService, backupManager, repositoryName, log, wEntry);
- this.dbCleanerService = new DBCleanerService();
this.valueStorageCleaner = new ValueStorageCleanHelper();
this.indexCleanHelper = new IndexCleanHelper();
}
@@ -104,13 +102,27 @@
repositoryService.getRepository(repositoryName).getConfiguration().getSystemWorkspaceName()
.equals(wEntry.getName());
+ List<DataCleaner> dataCleaners = new ArrayList<DataCleaner>();
+
+ List<Backupable> backupable =
+
repositoryService.getRepository(repositoryName).getWorkspaceContainer(wEntry.getName())
+ .getComponentInstancesOfType(Backupable.class);
+
+ for (Backupable component : backupable)
+ {
+ dataCleaners.add(component.getDataCleaner());
+ }
+
//close all session
forceCloseSession(repositoryName, wEntry.getName());
repositoryService.getRepository(repositoryName).removeWorkspace(wEntry.getName());
//clean database
- dbCleanerService.cleanWorkspaceData(wEntry);
+ for (DataCleaner cleaner : dataCleaners)
+ {
+ cleaner.clean();
+ }
//clean index
indexCleanHelper.removeWorkspaceIndex(wEntry, isSystem);
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java 2011-01-19
07:39:43 UTC (rev 3816)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java 2011-01-19
07:40:16 UTC (rev 3817)
@@ -28,8 +28,8 @@
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.CacheableWorkspaceDataManager;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.CleanException;
import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerException;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -98,7 +98,7 @@
{
log.error("Can't rollback changes", e1);
}
- catch (DBCleanerException e1)
+ catch (CleanException e1)
{
log.error("Can't rollback changes", e1);
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-01-19
07:39:43 UTC (rev 3816)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-01-19
07:40:16 UTC (rev 3817)
@@ -41,11 +41,10 @@
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.CacheableWorkspaceDataManager;
import org.exoplatform.services.jcr.impl.storage.jdbc.backup.Backupable;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.CleanException;
import org.exoplatform.services.jcr.impl.storage.jdbc.backup.RestoreException;
import org.exoplatform.services.jcr.impl.storage.value.fs.FileValueStorage;
import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerException;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerService;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -118,7 +117,7 @@
{
log.error("Can't rollback changes", e1);
}
- catch (DBCleanerException e1)
+ catch (CleanException e1)
{
log.error("Can't rollback changes", e1);
}
@@ -239,10 +238,10 @@
*
* @throws RepositoryConfigurationException
* @throws RepositoryException
- * @throws DBCleanerException
+ * @throws CleanException
* @throws IOException
*/
- protected void rollback() throws RepositoryException,
RepositoryConfigurationException, DBCleanerException,
+ protected void rollback() throws RepositoryException,
RepositoryConfigurationException, CleanException,
IOException
{
boolean isSystem =
@@ -252,8 +251,15 @@
//close all session
forceCloseSession(repositoryEntry.getName(), workspaceEntry.getName());
+ List<Backupable> backupable =
+
repositoryService.getRepository(repositoryEntry.getName()).getWorkspaceContainer(workspaceEntry.getName())
+ .getComponentInstancesOfType(Backupable.class);
+
//clean database
- new DBCleanerService().cleanWorkspaceData(workspaceEntry);
+ for (Backupable component : backupable)
+ {
+ component.getDataCleaner().clean();
+ }
//clean index
new IndexCleanHelper().removeWorkspaceIndex(workspaceEntry, isSystem);
Modified:
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java 2011-01-19
07:39:43 UTC (rev 3816)
+++
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupTestCase.java 2011-01-19
07:40:16 UTC (rev 3817)
@@ -37,7 +37,8 @@
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
-import org.exoplatform.services.jcr.impl.util.jdbc.cleaner.DBCleanerService;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.Backupable;
+import org.exoplatform.services.jcr.impl.storage.jdbc.backup.DataCleaner;
import java.io.File;
import java.io.FileFilter;
@@ -47,6 +48,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import javax.jcr.ItemExistsException;
@@ -67,8 +69,7 @@
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
Nedonosko</a>
* @version $Id: AbstractBackupTestCase.java 760 2008-02-07 15:08:07Z pnedonosko $
*/
-public abstract class AbstractBackupTestCase
- extends BaseStandaloneTest
+public abstract class AbstractBackupTestCase extends BaseStandaloneTest
{
protected SessionImpl ws1Session;
@@ -94,11 +95,6 @@
protected String workspaceNameToRestore = "ws1backup";
/**
- * Database cleaner.
- */
- private DBCleanerService dbCleanerService = new DBCleanerService();
-
- /**
* Value storage cleaner.
*/
private ValueStorageCleanHelper valueStorageCleanHelper = new
ValueStorageCleanHelper();
@@ -499,7 +495,6 @@
repositoryService.getRepository(repositoryName).removeWorkspace(wEntry.getName());
//clean database
- // dbCleanerService.cleanWorkspaceData(wEntry);
DataSource ds =
(DataSource)new
InitialContext().lookup(wEntry.getContainer().getParameterValue(
JDBCWorkspaceDataContainer.SOURCE_NAME));
@@ -557,13 +552,27 @@
repositoryService.getRepository(repositoryName).getConfiguration().getSystemWorkspaceName()
.equals(wEntry.getName());
+ List<DataCleaner> dataCleaners = new ArrayList<DataCleaner>();
+
+ List<Backupable> backupable =
+
repositoryService.getRepository(repositoryName).getWorkspaceContainer(wEntry.getName())
+ .getComponentInstancesOfType(Backupable.class);
+
+ for (Backupable component : backupable)
+ {
+ dataCleaners.add(component.getDataCleaner());
+ }
+
//close all session
forceCloseSession(repositoryName, wEntry.getName());
repositoryService.getRepository(repositoryName).removeWorkspace(wEntry.getName());
//clean database
- dbCleanerService.cleanWorkspaceData(wEntry);
+ for (DataCleaner cleaner : dataCleaners)
+ {
+ cleaner.clean();
+ }
//clean index
indexCleanHelper.removeWorkspaceIndex(wEntry, isSystem);
@@ -595,6 +604,23 @@
forceCloseSession(repositoryEntry.getName(), wEntry.getName());
}
+ List<DataCleaner> dataCleaners = new ArrayList<DataCleaner>();
+
+ // collect all DataCleaners
+ for (WorkspaceEntry wEntry : workspaceList)
+ {
+ forceCloseSession(repositoryEntry.getName(), wEntry.getName());
+
+ List<Backupable> backupable =
+
repositoryService.getRepository(repositoryEntry.getName()).getWorkspaceContainer(wEntry.getName())
+ .getComponentInstancesOfType(Backupable.class);
+
+ for (Backupable component : backupable)
+ {
+ dataCleaners.add(component.getDataCleaner());
+ }
+ }
+
//remove repository
if (isDefault)
{
@@ -606,9 +632,10 @@
}
//clean database
- RepositoryEntry re = new RepositoryEntry();
- re.setWorkspaceEntries(workspaceList);
- dbCleanerService.cleanRepositoryData(re);
+ for (DataCleaner cleaner : dataCleaners)
+ {
+ cleaner.clean();
+ }
//clean index
for (WorkspaceEntry wEntry : workspaceList)