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