From 12262caeda60050c11b1c730fc9b02ed86a55fcf Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 05 Dec 2014 13:17:19 +0000
Subject: [PATCH] OPENDJ-1602 (CR-5566) New pluggable storage based backend

---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java           |   23 ----
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEBUtils.java           |  104 ++++++++++++++++++++
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java           |   22 ----
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java |   20 ---
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java              |   21 ----
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2ID.java              |   26 -----
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2URI.java             |   25 ----
 opendj3-server-dev/src/server/org/opends/server/backends/jeb/State.java              |   23 ----
 8 files changed, 111 insertions(+), 153 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2ID.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2ID.java
index 5a02a04..594d304 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2ID.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2ID.java
@@ -64,36 +64,12 @@
 
     comparator = new AttributeIndex.KeyComparator();
     prefixRDNComponents = entryContainer.getBaseDN().size();
-    DatabaseConfig dn2idConfig = new DatabaseConfig();
 
-    if(env.getConfig().getReadOnly())
-    {
-      dn2idConfig.setReadOnly(true);
-      dn2idConfig.setAllowCreate(false);
-      dn2idConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dn2idConfig.setAllowCreate(true);
-      dn2idConfig.setTransactional(false);
-      dn2idConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dn2idConfig.setAllowCreate(true);
-      dn2idConfig.setTransactional(true);
-    }
-
-    this.dbConfig = dn2idConfig;
+    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
     this.dbConfig.setKeyPrefixing(true);
-
-    //This line causes an unchecked cast error if the SuppressWarnings
-    //annotation is removed at the beginning of this method.
     this.dbConfig.setBtreeComparator((Class<? extends Comparator<byte[]>>) comparator.getClass());
   }
 
-
-
   /**
    * Insert a new record into the DN database.
    * @param txn A JE database transaction to be used for the database operation,
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2URI.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2URI.java
index ba37734..f025007 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2URI.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/DN2URI.java
@@ -103,31 +103,8 @@
 
     dn2uriComparator = new AttributeIndex.KeyComparator();
     prefixRDNComponents = entryContainer.getBaseDN().size();
-    DatabaseConfig dn2uriConfig = new DatabaseConfig();
 
-    if(env.getConfig().getReadOnly())
-    {
-      dn2uriConfig.setReadOnly(true);
-      dn2uriConfig.setSortedDuplicates(true);
-      dn2uriConfig.setAllowCreate(false);
-      dn2uriConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dn2uriConfig.setSortedDuplicates(true);
-      dn2uriConfig.setAllowCreate(true);
-      dn2uriConfig.setTransactional(false);
-      dn2uriConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dn2uriConfig.setSortedDuplicates(true);
-      dn2uriConfig.setAllowCreate(true);
-      dn2uriConfig.setTransactional(true);
-    }
-    this.dbConfig = dn2uriConfig;
-    //This line causes an unchecked cast error if the SuppressWarnings
-    //annotation is removed at the beginning of this method.
+    this.dbConfig = JEBUtils.toDatabaseConfigAllowDuplicates(env);
     this.dbConfig.setBtreeComparator((Class<? extends Comparator<byte[]>>)
                                   dn2uriComparator.getClass());
   }
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
index 1a1cae0..95fa0da 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
@@ -235,28 +235,7 @@
   {
     super(name, env, entryContainer);
     this.dataConfig = dataConfig;
-
-    DatabaseConfig dbNodupsConfig = new DatabaseConfig();
-
-    if(env.getConfig().getReadOnly())
-    {
-      dbNodupsConfig.setReadOnly(true);
-      dbNodupsConfig.setAllowCreate(false);
-      dbNodupsConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(false);
-      dbNodupsConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(true);
-    }
-
-    this.dbConfig = dbNodupsConfig;
+    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
index aad9ba6..5bf9e81 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/Index.java
@@ -144,26 +144,7 @@
     this.newImportIDSet = new ImportIDSet(indexEntryLimit,
                                           indexEntryLimit, maintainCount);
 
-    final DatabaseConfig dbNodupsConfig = new DatabaseConfig();
-    if(env.getConfig().getReadOnly())
-    {
-      dbNodupsConfig.setReadOnly(true);
-      dbNodupsConfig.setAllowCreate(false);
-      dbNodupsConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(false);
-      dbNodupsConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(true);
-    }
-
-    this.dbConfig = dbNodupsConfig;
+    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
     this.dbConfig.setOverrideBtreeComparator(true);
     this.dbConfig.setBtreeComparator((Class<? extends Comparator<byte[]>>)
                                      comparator.getClass());
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEBUtils.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEBUtils.java
new file mode 100644
index 0000000..da2a4d3
--- /dev/null
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEBUtils.java
@@ -0,0 +1,104 @@
+/*
+ * 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.jeb;
+
+import com.sleepycat.je.DatabaseConfig;
+import com.sleepycat.je.Environment;
+
+/**
+ * JE Backend utility methods.
+ */
+final class JEBUtils
+{
+  private JEBUtils()
+  {
+    // Private for utility classes
+  }
+
+  /**
+   * Converts the provided JE environment to a {@link DatabaseConfig} object
+   * that disallows duplicates.
+   *
+   * @param env
+   *          the environment object to convert
+   * @return a new {@link DatabaseConfig} object
+   */
+  static DatabaseConfig toDatabaseConfigNoDuplicates(Environment env)
+  {
+    final DatabaseConfig result = new DatabaseConfig();
+    if (env.getConfig().getReadOnly())
+    {
+      result.setReadOnly(true);
+      result.setAllowCreate(false);
+      result.setTransactional(false);
+    }
+    else if (!env.getConfig().getTransactional())
+    {
+      result.setAllowCreate(true);
+      result.setTransactional(false);
+      result.setDeferredWrite(true);
+    }
+    else
+    {
+      result.setAllowCreate(true);
+      result.setTransactional(true);
+    }
+    return result;
+  }
+
+  /**
+   * Converts the provided JE environment to a {@link DatabaseConfig} object
+   * that allows duplicates.
+   *
+   * @param env
+   *          the environment object to convert
+   * @return a new {@link DatabaseConfig} object
+   */
+  static DatabaseConfig toDatabaseConfigAllowDuplicates(Environment env)
+  {
+    final DatabaseConfig result = new DatabaseConfig();
+    if (env.getConfig().getReadOnly())
+    {
+      result.setReadOnly(true);
+      result.setSortedDuplicates(true);
+      result.setAllowCreate(false);
+      result.setTransactional(false);
+    }
+    else if (!env.getConfig().getTransactional())
+    {
+      result.setSortedDuplicates(true);
+      result.setAllowCreate(true);
+      result.setTransactional(false);
+      result.setDeferredWrite(true);
+    }
+    else
+    {
+      result.setSortedDuplicates(true);
+      result.setAllowCreate(true);
+      result.setTransactional(true);
+    }
+    return result;
+  }
+}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
index 030dbf1..5bc5bff 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/JECompressedSchema.java
@@ -196,25 +196,7 @@
    */
   private void load() throws DatabaseException, InitializationException
   {
-    final DatabaseConfig dbConfig = new DatabaseConfig();
-
-    if (environment.getConfig().getReadOnly())
-    {
-      dbConfig.setReadOnly(true);
-      dbConfig.setAllowCreate(false);
-      dbConfig.setTransactional(false);
-    }
-    else if (!environment.getConfig().getTransactional())
-    {
-      dbConfig.setAllowCreate(true);
-      dbConfig.setTransactional(false);
-      dbConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dbConfig.setAllowCreate(true);
-      dbConfig.setTransactional(true);
-    }
+    final DatabaseConfig dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(environment);
 
     adDatabase = environment.openDatabase(null, DB_NAME_AD, dbConfig);
     ocDatabase = environment.openDatabase(null, DB_NAME_OC, dbConfig);
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/State.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/State.java
index 2defca3..18a556b 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/State.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/State.java
@@ -58,28 +58,7 @@
       throws DatabaseException
   {
     super(name, env, entryContainer);
-
-    DatabaseConfig dbNodupsConfig = new DatabaseConfig();
-
-    if(env.getConfig().getReadOnly())
-    {
-      dbNodupsConfig.setReadOnly(true);
-      dbNodupsConfig.setAllowCreate(false);
-      dbNodupsConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(false);
-      dbNodupsConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(true);
-    }
-
-    this.dbConfig = dbNodupsConfig;
+    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
   }
 
   /**
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
index 7a33220..7083882 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VLVIndex.java
@@ -187,27 +187,7 @@
     this.sortOrder = new SortOrder(sortKeys);
     this.comparator = new VLVKeyComparator(orderingRules, ascending);
 
-    DatabaseConfig dbNodupsConfig = new DatabaseConfig();
-
-    if(env.getConfig().getReadOnly())
-    {
-      dbNodupsConfig.setReadOnly(true);
-      dbNodupsConfig.setAllowCreate(false);
-      dbNodupsConfig.setTransactional(false);
-    }
-    else if(!env.getConfig().getTransactional())
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(false);
-      dbNodupsConfig.setDeferredWrite(true);
-    }
-    else
-    {
-      dbNodupsConfig.setAllowCreate(true);
-      dbNodupsConfig.setTransactional(true);
-    }
-
-    this.dbConfig = dbNodupsConfig;
+    this.dbConfig = JEBUtils.toDatabaseConfigNoDuplicates(env);
     this.dbConfig.setOverrideBtreeComparator(true);
     this.dbConfig.setBtreeComparator(this.comparator);
 

--
Gitblit v1.10.0