From 98b2fea9a24a570461288fdeec7ae8788a9d07a1 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Fri, 19 Dec 2008 15:17:08 +0000
Subject: [PATCH] - implement removeBackup method in schema backend
---
opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java | 51 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 48 insertions(+), 3 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java b/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
index 89f10d0..99f2410 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -4855,9 +4855,54 @@
String backupID)
throws DirectoryException
{
- // This backend does not provide a backup/restore mechanism.
- Message message = ERR_SCHEMA_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
- throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
+ BackupInfo backupInfo = backupDirectory.getBackupInfo(backupID);
+ if (backupInfo == null)
+ {
+ Message message = ERR_BACKUP_MISSING_BACKUPID.get(
+ backupDirectory.getPath(), backupID);
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ message);
+ }
+
+ HashMap<String,String> backupProperties = backupInfo.getBackupProperties();
+
+ String archiveFilename =
+ backupProperties.get(BACKUP_PROPERTY_ARCHIVE_FILENAME);
+ File archiveFile = new File(backupDirectory.getPath(), archiveFilename);
+
+ try
+ {
+ backupDirectory.removeBackup(backupID);
+ }
+ catch (ConfigException e)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ e.getMessageObject());
+ }
+
+ try
+ {
+ backupDirectory.writeBackupDirectoryDescriptor();
+ }
+ catch (Exception e)
+ {
+ if (debugEnabled())
+ {
+ TRACER.debugCaught(DebugLogLevel.ERROR, e);
+ }
+
+ Message message = ERR_BACKUP_CANNOT_UPDATE_BACKUP_DESCRIPTOR.get(
+ backupDirectory.getDescriptorPath(), stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ message, e);
+ }
+
+ // Remove the archive file.
+ archiveFile.delete();
}
--
Gitblit v1.10.0