From 333c7b4a76e819dec8d2b46a381e323266a16059 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 03 Apr 2014 13:53:49 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1308 Migrate schema support
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java | 94 +++++++++++++++++++++++++++++++----------------
1 files changed, 62 insertions(+), 32 deletions(-)
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 ffcdca7..92386d9 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
@@ -27,10 +27,9 @@
package org.opends.server.backends.jeb;
import java.util.Collection;
-import java.util.List;
import java.util.Map;
-import org.forgerock.i18n.LocalizableMessage;
+import org.forgerock.i18n.LocalizableMessageBuilder;
import org.forgerock.opendj.ldap.ByteSequence;
import org.forgerock.opendj.ldap.spi.IndexQueryFactory;
import org.forgerock.opendj.ldap.spi.IndexingOptions;
@@ -48,6 +47,8 @@
IndexQueryFactory<IndexQuery>
{
+ private static final String PRESENCE_INDEX_KEY = "presence";
+
/**
* The Map containing the string type identifier and the corresponding index.
*/
@@ -79,34 +80,35 @@
{
@Override
- public EntryIDSet evaluate(List<LocalizableMessage> debugMessages)
+ public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage)
{
// Read the database and get Record for the key.
DatabaseEntry key = new DatabaseEntry(value.toByteArray());
// Select the right index to be used.
Index index = indexMap.get(indexID);
- EntryIDSet entrySet =
- index.readKey(key, null, LockMode.DEFAULT);
- if(debugMessages != null && !entrySet.isDefined())
+ if (index == null)
+ {
+ if(debugMessage != null)
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID, ""));
+ }
+ return createMatchAllQuery().evaluate(debugMessage);
+ }
+ EntryIDSet entrySet = index.readKey(key, null, LockMode.DEFAULT);
+ if(debugMessage != null && !entrySet.isDefined())
{
if(!index.isTrusted())
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(index.getName()));
}
else if(index.isRebuildRunning())
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(index.getName()));
}
else
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(index.getName()));
}
}
return entrySet;
@@ -126,32 +128,33 @@
{
@Override
- public EntryIDSet evaluate(List<LocalizableMessage> debugMessages)
+ public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage)
{
// Find the right index.
Index index = indexMap.get(indexID);
- EntryIDSet entrySet =
- index.readRange(lowerBound.toByteArray(), upperBound
- .toByteArray(), includeLowerBound, includeUpperBound);
- if(debugMessages != null && !entrySet.isDefined())
+ if (index == null)
+ {
+ if(debugMessage != null)
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_TYPE_DISABLED.get(indexID, ""));
+ }
+ return createMatchAllQuery().evaluate(debugMessage);
+ }
+ EntryIDSet entrySet = index.readRange(lowerBound.toByteArray(), upperBound.toByteArray(),
+ includeLowerBound, includeUpperBound);
+ if(debugMessage != null && !entrySet.isDefined())
{
if(!index.isTrusted())
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(index.getName()));
}
else if(index.isRebuildRunning())
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(index.getName()));
}
else
{
- debugMessages.add(
- INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(
- index.getName()));
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(index.getName()));
}
}
return entrySet;
@@ -191,11 +194,38 @@
{
return new IndexQuery()
{
-
@Override
- public EntryIDSet evaluate(List<LocalizableMessage> debugMessages)
+ public EntryIDSet evaluate(LocalizableMessageBuilder debugMessage)
{
- return new EntryIDSet();
+ Index index = indexMap.get(PRESENCE_INDEX_KEY);
+ if (index == null)
+ {
+ if(debugMessage != null)
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_TYPE_DISABLED.get(index.getName(), ""));
+ }
+ return new EntryIDSet();
+ }
+
+ EntryIDSet entrySet = index.readKey(AttributeIndex.presenceKey, null, LockMode.DEFAULT);
+
+ if (debugMessage != null && !entrySet.isDefined())
+ {
+ if (!index.isTrusted())
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(index.getName()));
+ }
+ else if (index.isRebuildRunning())
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(index.getName()));
+ }
+ else
+ {
+ debugMessage.append(INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(index.getName()));
+ }
+ }
+
+ return entrySet;
}
};
}
--
Gitblit v1.10.0