From 225aaf491fb097f9ab165de1c4d24aaa68670784 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 24 Sep 2013 09:19:20 +0000
Subject: [PATCH] OPENDJ-1116 Introduce abstraction for the changelog DB

---
 opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java |   75 ++++++++++++++++++-------------------
 1 files changed, 37 insertions(+), 38 deletions(-)

diff --git a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
index b5e51e5..e7981f3 100644
--- a/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
+++ b/opends/src/server/org/opends/server/replication/server/changelog/je/JEChangelogDB.java
@@ -66,8 +66,8 @@
   private final Map<DN, Map<Integer, DbHandler>> sourceDbHandlers =
       new ConcurrentHashMap<DN, Map<Integer, DbHandler>>();
   private ReplicationDbEnv dbEnv;
-  private String dbDirName = null;
-  private File dbDirectory;
+  private final String dbDirectoryName;
+  private final File dbDirectory;
 
   /** The local replication server. */
   private final ReplicationServer replicationServer;
@@ -77,10 +77,40 @@
    *
    * @param replicationServer
    *          the local replication server.
+   * @param dbDirName
+   *          the directory for use by the replication database
+   * @throws ConfigException
+   *           if a problem occurs opening the supplied directory
    */
-  public JEChangelogDB(ReplicationServer replicationServer)
+  public JEChangelogDB(ReplicationServer replicationServer, String dbDirName)
+      throws ConfigException
   {
     this.replicationServer = replicationServer;
+    this.dbDirectoryName = dbDirName != null ? dbDirName : "changelogDb";
+    this.dbDirectory = makeDir(this.dbDirectoryName);
+  }
+
+  private File makeDir(String dbDirName) throws ConfigException
+  {
+    // Check that this path exists or create it.
+    File dbDirectory = getFileForPath(dbDirName);
+    try
+    {
+      if (!dbDirectory.exists())
+      {
+        dbDirectory.mkdir();
+      }
+      return dbDirectory;
+    }
+    catch (Exception e)
+    {
+      MessageBuilder mb = new MessageBuilder();
+      mb.append(e.getLocalizedMessage());
+      mb.append(" ");
+      mb.append(String.valueOf(dbDirectory));
+      Message msg = ERR_FILE_CHECK_CREATE_FAILED.get(mb.toString());
+      throw new ConfigException(msg, e);
+    }
   }
 
   private Map<Integer, DbHandler> getDomainMap(DN baseDN)
@@ -146,8 +176,8 @@
   {
     try
     {
-      dbEnv = new ReplicationDbEnv(getFileForPath(dbDirName).getAbsolutePath(),
-          replicationServer);
+      dbEnv = new ReplicationDbEnv(
+          getFileForPath(dbDirectoryName).getAbsolutePath(), replicationServer);
       initializeChangelogState(dbEnv.readChangelogState());
     }
     catch (ChangelogException e)
@@ -369,40 +399,9 @@
 
   /** {@inheritDoc} */
   @Override
-  public void setReplicationDBDirectory(String dbDirName)
-      throws ConfigException
+  public String getDBDirectoryName()
   {
-    if (dbDirName == null)
-    {
-      dbDirName = "changelogDb";
-    }
-    this.dbDirName = dbDirName;
-
-    // Check that this path exists or create it.
-    dbDirectory = getFileForPath(this.dbDirName);
-    try
-    {
-      if (!dbDirectory.exists())
-      {
-        dbDirectory.mkdir();
-      }
-    }
-    catch (Exception e)
-    {
-      MessageBuilder mb = new MessageBuilder();
-      mb.append(e.getLocalizedMessage());
-      mb.append(" ");
-      mb.append(String.valueOf(dbDirectory));
-      Message msg = ERR_FILE_CHECK_CREATE_FAILED.get(mb.toString());
-      throw new ConfigException(msg, e);
-    }
-  }
-
-  /** {@inheritDoc} */
-  @Override
-  public String getDBDirName()
-  {
-    return this.dbDirName;
+    return this.dbDirectoryName;
   }
 
   /** {@inheritDoc} */

--
Gitblit v1.10.0