From a664a9b752df04c88a9bdfdae50754ffa425654d Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 05 Dec 2014 14:24:50 +0000
Subject: [PATCH] OPENDJ-1602 (CR-5566) New pluggable storage based backend
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/JEBUtils.java | 4 ++++
opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java | 4 ----
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java | 4 ++--
opendj3-server-dev/src/server/org/opends/server/backends/jeb/PresenceIndexer.java | 42 ++++++++++++------------------------------
opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java | 2 +-
opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java | 3 +--
6 files changed, 20 insertions(+), 39 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index cbfd580..bb6b211 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -52,7 +52,6 @@
import org.opends.server.types.*;
import org.opends.server.util.StaticUtils;
-import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import static org.opends.messages.JebMessages.*;
@@ -113,9 +112,6 @@
* class in the SDK could implement the logic, I hope).
*/
- /** A database key for the presence index. */
- static final DatabaseEntry presenceKey = new DatabaseEntry("+".getBytes());
-
/** The entryContainer in which this attribute index resides. */
private final EntryContainer entryContainer;
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
index 7dd2eef..d9054e2 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
@@ -184,7 +184,7 @@
return new EntryIDSet();
}
- EntryIDSet entrySet = index.readKey(AttributeIndex.presenceKey, null, LockMode.DEFAULT);
+ EntryIDSet entrySet = index.readKey(JEBUtils.presenceKey, null, LockMode.DEFAULT);
if (debugMessage != null && !entrySet.isDefined())
{
updateStatsUndefinedResults(debugMessage, index);
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
index da2a4d3..2dd35de 100644
--- 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
@@ -25,6 +25,7 @@
package org.opends.server.backends.jeb;
import com.sleepycat.je.DatabaseConfig;
+import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.Environment;
/**
@@ -32,6 +33,9 @@
*/
final class JEBUtils
{
+ /** A database key for the presence index. */
+ static final DatabaseEntry presenceKey = new DatabaseEntry(PresenceIndexer.presenceKeyBytes);
+
private JEBUtils()
{
// Private for utility classes
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/PresenceIndexer.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/PresenceIndexer.java
index 550e9dc..be30cca 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/PresenceIndexer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/PresenceIndexer.java
@@ -26,6 +26,7 @@
*/
package org.opends.server.backends.jeb;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -42,11 +43,13 @@
*/
public class PresenceIndexer extends Indexer
{
+ /** The key bytes used for the presence index. */
+ static final byte[] presenceKeyBytes = "+".getBytes();
- /**
- * The attribute type for which this instance will
- * generate index keys.
- */
+ /** The key bytes used for the presence index as a {@link ByteString}. */
+ static final ByteString presenceKey = ByteString.wrap(presenceKeyBytes);
+
+ /** The attribute type for which this instance will generate index keys. */
private AttributeType attributeType;
/**
@@ -70,13 +73,12 @@
@Override
public void indexEntry(Entry entry, Set<ByteString> keys, IndexingOptions options)
{
- List<Attribute> attrList =
- entry.getAttribute(attributeType);
+ List<Attribute> attrList = entry.getAttribute(attributeType);
if (attrList != null)
{
if (!attrList.isEmpty())
{
- keys.add(getPresenceKeyData());
+ keys.add(presenceKey);
}
}
}
@@ -86,22 +88,7 @@
public void replaceEntry(Entry oldEntry, Entry newEntry,
Map<ByteString, Boolean> modifiedKeys, IndexingOptions options)
{
- List<Attribute> newAttributes = newEntry.getAttribute(attributeType, true);
- List<Attribute> oldAttributes = oldEntry.getAttribute(attributeType, true);
- if(oldAttributes == null)
- {
- if(newAttributes != null)
- {
- modifiedKeys.put(getPresenceKeyData(), true);
- }
- }
- else
- {
- if(newAttributes == null)
- {
- modifiedKeys.put(getPresenceKeyData(), false);
- }
- }
+ modifyEntry(oldEntry, newEntry, Collections.<Modification>emptyList(), modifiedKeys, options);
}
/** {@inheritDoc} */
@@ -116,20 +103,15 @@
{
if(newAttributes != null)
{
- modifiedKeys.put(getPresenceKeyData(), true);
+ modifiedKeys.put(presenceKey, true);
}
}
else
{
if(newAttributes == null)
{
- modifiedKeys.put(getPresenceKeyData(), false);
+ modifiedKeys.put(presenceKey, false);
}
}
}
-
- private ByteString getPresenceKeyData()
- {
- return ByteString.wrap(AttributeIndex.presenceKey.getData());
- }
}
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
index da9dcba..2e97bca 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/VerifyJob.java
@@ -1518,8 +1518,7 @@
if (presenceIndex != null)
{
- DatabaseEntry presenceKey = AttributeIndex.presenceKey;
- verifyAttributeInIndex(presenceIndex, txn, presenceKey, entryID);
+ verifyAttributeInIndex(presenceIndex, txn, JEBUtils.presenceKey, entryID);
}
final DatabaseEntry key = new DatabaseEntry();
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
index acd6d60..dc6ae17 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/backends/jeb/TestBackendImpl.java
@@ -975,12 +975,12 @@
// This current entry in the DB shouldn't be in the presence titleIndex.
addKeys = new HashSet<ByteString>();
- addKeys.add(ByteString.wrap(AttributeIndex.presenceKey.getData()));
+ addKeys.add(PresenceIndexer.presenceKey);
assertIndexContainsID(addKeys, titleIndex.getPresenceIndex(), entryID, FALSE);
// This current entry should be in the presence nameIndex.
addKeys = new HashSet<ByteString>();
- addKeys.add(ByteString.wrap(AttributeIndex.presenceKey.getData()));
+ addKeys.add(PresenceIndexer.presenceKey);
assertIndexContainsID(addKeys, nameIndex.getPresenceIndex(), entryID, TRUE);
List<Control> noControls = new ArrayList<Control>(0);
--
Gitblit v1.10.0