From 189ff674ee16060a20b401f808f99fb9020adba2 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 27 Nov 2014 09:23:22 +0000
Subject: [PATCH] OPENDJ-1602 New pluggable storage based backend

---
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/SuffixContainer.java |   45 +++++++++++++++
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/package-info.java    |   32 ++++++++++
 opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java   |   55 ++++++++++++++++++
 3 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
new file mode 100644
index 0000000..d824138
--- /dev/null
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
@@ -0,0 +1,55 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *      Copyright 2014 ForgeRock AS
+ */
+package org.opends.server.backends.pluggable;
+
+import java.util.Map;
+
+import org.opends.server.types.DN;
+
+/**
+ * Container for a whole database environment. A single database environment
+ * contains data for one or several suffixes. Each suffix has a set of key-value
+ * stores a.k.a indexes.
+ * <p>
+ * A root container is in a 1-1 relationship with a backend. This design allows
+ * a single backend to support several baseDNs inside the same database
+ * environment.
+ * <p>
+ * A root container is composed of suffix containers, one for each base DN and
+ * manages their lifecycle.
+ *
+ * @param <T>
+ *          the type of the suffix containers
+ */
+public interface RootContainer<T extends SuffixContainer>
+{
+
+  /**
+   * Returns a Map of baseDN to suffix containers.
+   *
+   * @return a Map of baseDN to suffix containers
+   */
+  Map<DN, T> getSuffixContainers();
+}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/SuffixContainer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/SuffixContainer.java
new file mode 100644
index 0000000..0e196c0
--- /dev/null
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/SuffixContainer.java
@@ -0,0 +1,45 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *      Copyright 2014 ForgeRock AS
+ */
+package org.opends.server.backends.pluggable;
+
+import org.opends.server.types.DN;
+
+/**
+ * Container for a whole suffix environment which stores all entries from the
+ * subtree of the suffix' baseDN. A suffix container has a set of key-value
+ * stores a.k.a indexes. It stores entries in these key-values stores and
+ * maintain the indexes all in sync on updates.
+ */
+public interface SuffixContainer
+{
+
+  /**
+   * Returns the suffix's baseDN.
+   *
+   * @return the suffix's baseDN
+   */
+  DN getBaseDN();
+
+}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/package-info.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/package-info.java
new file mode 100644
index 0000000..dcf04f7
--- /dev/null
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/package-info.java
@@ -0,0 +1,32 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
+ * or http://forgerock.org/license/CDDLv1.0.html.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2014 ForgeRock AS
+ */
+
+/**
+ * Contains the code for implementing Directory Server pluggable storage backends.
+ */
+@org.opends.server.types.PublicAPI(
+     stability=org.opends.server.types.StabilityLevel.PRIVATE)
+package org.opends.server.backends.pluggable;

--
Gitblit v1.10.0