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