new File(PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir()) + File.separator
+ configName);
if (!PrivilegedFileHelper.exists(configFile))
{
throw new WorkspaceRestoreExeption("The backup set is not contains original workspace configuration : "
+ PrivilegedFileHelper.getCanonicalPath(getBackupConfig().getBackupDir()));
}
IBindingFactory factory;
try
{
factory = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<IBindingFactory>()
{
public IBindingFactory run() throws Exception
{
return BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
}
});
}
catch (PrivilegedActionException pae)
{
Throwable cause = pae.getCause();
if (cause instanceof JiBXException)
{
throw (JiBXException)cause;
}
else if (cause instanceof RuntimeException)
{
throw (RuntimeException)cause;
}
else
{
throw new RuntimeException(cause);
}
}
IUnmarshallingContext uctx = factory.createUnmarshallingContext();
RepositoryServiceConfiguration conf =
(RepositoryServiceConfiguration) uctx.unmarshalDocument(PrivilegedFileHelper
.fileInputStream(configFile), null);
RepositoryEntry repositoryEntry = conf.getRepositoryConfiguration(getBackupConfig().getRepository());
if (repositoryEntry.getWorkspaceEntries().size() != 1)
{
throw new WorkspaceRestoreExeption(
"The oririginal configuration should be contains only one workspace entry :"
+ PrivilegedFileHelper.getCanonicalPath(configFile));
}
if (!repositoryEntry.getWorkspaceEntries().get(0).getName().equals(getBackupConfig().getWorkspace()))
{
throw new WorkspaceRestoreExeption(
"The oririginal configuration should be contains only one workspace entry with name \""
+ getBackupConfig().getWorkspace() + "\" :"
+ PrivilegedFileHelper.getCanonicalPath(configFile));
}