From a54fa3d78b427d7b8278442acbe86ebebcf6c2e7 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 27 Jan 2015 11:31:59 +0000
Subject: [PATCH] OPENDJ-1716 Various PluggableBackend/Storage refactorings Code review: Nicolas Capponi
---
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/spi/Storage.java | 67 ++++++++++++++++++++++++++++++++-
1 files changed, 64 insertions(+), 3 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/spi/Storage.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/spi/Storage.java
index 48ef1ac..c31844e 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/spi/Storage.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/spi/Storage.java
@@ -21,30 +21,91 @@
* CDDL HEADER END
*
*
- * Copyright 2014 ForgeRock AS
+ * Copyright 2014-2015 ForgeRock AS
*/
package org.opends.server.backends.pluggable.spi;
import java.io.Closeable;
-import org.opends.server.admin.std.server.PersistitBackendCfg;
+import org.opends.server.admin.std.server.PluggableBackendCfg;
+/**
+ * This interface abstracts the underlying storage engine,
+ * isolating the pluggable backend generic code from a particular storage engine implementation.
+ */
public interface Storage extends Closeable
{
- void initialize(PersistitBackendCfg cfg) throws Exception;
+ /**
+ * Initializes the storage engine before opening it.
+ *
+ * @param cfg
+ * the configuration object
+ * @throws Exception
+ * if a problem occurs with the underlying storage engine
+ * @see #open() to open the storage engine
+ */
+ void initialize(PluggableBackendCfg cfg) throws Exception;
+ /**
+ * Starts the import operation.
+ *
+ * @return a new Importer object which must be closed to release all resources
+ * @throws Exception
+ * if a problem occurs with the underlying storage engine
+ * @see #close() to release all resources once import is finished
+ */
Importer startImport() throws Exception;
+ /**
+ * Opens the storage engine to allow executing operations on it.
+ *
+ * @throws Exception
+ * if a problem occurs with the underlying storage engine
+ * @see #close() to release all resources once import is finished
+ */
void open() throws Exception;
+ /**
+ * Executes a read operation. In case of a read operation rollback, implementations must ensure
+ * the read operation is retried until it succeeds.
+ *
+ * @param <T>
+ * type of the value returned
+ * @param readOperation
+ * the read operation to execute
+ * @return the value read by the read operation
+ * @throws Exception
+ * if a problem occurs with the underlying storage engine
+ */
<T> T read(ReadOperation<T> readOperation) throws Exception;
+ /**
+ * Executes a write operation. In case of a write operation rollback, implementations must ensure
+ * the write operation is retried until it succeeds.
+ *
+ * @param writeOperation
+ * the write operation to execute
+ * @throws Exception
+ * if a problem occurs with the underlying storage engine
+ */
void write(WriteOperation writeOperation) throws Exception;
+ /**
+ * Closes the tree identified by the provided name.
+ *
+ * @param treeName
+ * the tree name
+ */
void closeTree(TreeName treeName);
+ /**
+ * Returns whether the storage engine is in a valid state, i.e. whether it can be used for processing.
+ *
+ * @return {@code true} if the storage engine is in a valid state, {@code false} otherwise
+ */
boolean isValid();
+ /** {@inheritDoc} */
@Override
void close();
}
\ No newline at end of file
--
Gitblit v1.10.0