}
}
if (wEntry == null)
{
throw new WorkspaceRestoreException("Workspace " + this.wEntry.getName()
+ " did not found in current repository " + repositoryName + " configuration");
}
boolean isSystem =
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
for (DataCleaner cleaner : dataCleaners)
{
cleaner.clean();
}
//clean index
indexCleanHelper.removeWorkspaceIndex(wEntry, isSystem);
//clean value storage
valueStorageCleaner.removeWorkspaceValueStorage(wEntry);
super.restore();
}
catch (Throwable t)
{
throw new WorkspaceRestoreException("Workspace " + wEntry.getName() + " was not restored", t);
}
}