From 324c5e73fb7b0f7a76bc9ade87fde5f721d09ddd Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 20 Mar 2015 15:34:11 +0000
Subject: [PATCH] EntryContainer.java: In entryExists(), fixed NPE.
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java | 46 +++++++++++++---------------------------------
1 files changed, 13 insertions(+), 33 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
index d8c8117..6fd9fc7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/EntryContainer.java
@@ -912,7 +912,7 @@
if (baseID == null)
{
LocalizableMessage message = ERR_JEB_SEARCH_NO_SUCH_OBJECT.get(aBaseDN);
- DN matchedDN = getMatchedDN(aBaseDN);
+ DN matchedDN = getMatchedDN(txn, aBaseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
ByteString baseIDData = baseID.toByteString();
@@ -1522,7 +1522,7 @@
if (parentID == null)
{
LocalizableMessage message = ERR_JEB_ADD_NO_SUCH_OBJECT.get(entry.getName());
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
}
@@ -1815,7 +1815,7 @@
if (value == null)
{
LocalizableMessage message = ERR_JEB_DELETE_NO_SUCH_OBJECT.get(targetDN);
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
leafID = new EntryID(value);
@@ -1826,7 +1826,7 @@
{
// Do not expect to ever come through here.
LocalizableMessage message = ERR_JEB_DELETE_NO_SUCH_OBJECT.get(leafDNKey);
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
@@ -1902,7 +1902,7 @@
* @throws DirectoryException If a problem occurs while trying to make the
* determination.
*/
- private boolean entryExists(final DN entryDN) throws DirectoryException
+ private boolean entryExists(ReadableStorage txn, final DN entryDN) throws DirectoryException
{
// Try the entry cache first.
EntryCache<?> entryCache = DirectoryServer.getEntryCache();
@@ -1910,24 +1910,7 @@
{
return true;
}
-
- try
- {
- return storage.read(new ReadOperation<Boolean>()
- {
- @Override
- public Boolean run(ReadableStorage txn) throws Exception
- {
- EntryID id = dn2id.get(null, entryDN);
- return id != null;
- }
- });
- }
- catch (Exception e)
- {
- logger.traceException(e);
- return false;
- }
+ return dn2id.get(txn, entryDN) != null;
}
/**
@@ -2040,14 +2023,11 @@
{
try
{
- // Read dn2id.
EntryID entryID = dn2id.getRMW(txn, newEntry.getName());
if (entryID == null)
{
- // The entry does not exist.
- LocalizableMessage message =
- ERR_JEB_MODIFY_NO_SUCH_OBJECT.get(newEntry.getName());
- DN matchedDN = getMatchedDN(baseDN);
+ LocalizableMessage message = ERR_JEB_MODIFY_NO_SUCH_OBJECT.get(newEntry.getName());
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
message, matchedDN, null);
}
@@ -2200,7 +2180,7 @@
dn2uri.targetEntryReferrals(txn, currentDN, null);
LocalizableMessage message = ERR_JEB_MODIFYDN_NO_SUCH_OBJECT.get(currentDN);
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
}
@@ -2228,7 +2208,7 @@
if (newSuperiorID == null)
{
LocalizableMessage msg = ERR_JEB_NEW_SUPERIOR_NO_SUCH_OBJECT.get(newSuperiorDN);
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, msg, matchedDN, null);
}
@@ -3117,12 +3097,12 @@
* @throws DirectoryException If an error prevented the check of an
* existing entry from being performed.
*/
- private DN getMatchedDN(DN baseDN) throws DirectoryException
+ private DN getMatchedDN(ReadableStorage txn, DN baseDN) throws DirectoryException
{
DN parentDN = baseDN.getParentDNInSuffix();
while (parentDN != null && parentDN.isDescendantOf(getBaseDN()))
{
- if (entryExists(parentDN))
+ if (entryExists(txn, parentDN))
{
return parentDN;
}
@@ -3228,7 +3208,7 @@
dn2uri.targetEntryReferrals(txn, baseDN, searchScope);
LocalizableMessage message = ERR_JEB_SEARCH_NO_SUCH_OBJECT.get(baseDN);
- DN matchedDN = getMatchedDN(baseDN);
+ DN matchedDN = getMatchedDN(txn, baseDN);
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
message, matchedDN, null);
}
--
Gitblit v1.10.0