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