From 17ec2cfa9d04e6942a694ab5c3778ac26f17bb35 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 19 Apr 2016 12:59:39 +0000
Subject: [PATCH] code cleanup
---
opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java | 220 +++-----
opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java | 14
opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java | 40 -
opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java | 193 +-----
opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java | 173 -----
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java | 28 -
opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java | 115 +--
opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java | 7
opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java | 53 -
opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java | 156 +---
opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java | 586 ++++++++-------------
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendMonitor.java | 4
12 files changed, 460 insertions(+), 1,129 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
index 37386cd..b1e9e9d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/BackupBackend.java
@@ -88,8 +88,6 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-
/** The current configuration state. */
private BackupBackendCfg currentConfig;
@@ -158,7 +156,6 @@
}
}
-
/**
* Creates a new backend with the provided information. All backend
* implementations must implement a default constructor that use
@@ -171,9 +168,6 @@
// Perform all initialization in initializeBackend.
}
-
-
- /** {@inheritDoc} */
@Override
public void configureBackend(BackupBackendCfg config, ServerContext serverContext) throws ConfigException
{
@@ -186,9 +180,6 @@
currentConfig = config;
}
-
-
- /** {@inheritDoc} */
@Override
public void openBackend()
throws ConfigException, InitializationException
@@ -210,7 +201,6 @@
this.baseDNs = Collections.singleton(backupBaseDN);
-
// Determine the set of backup directories that we will use by default.
Set<String> values = currentConfig.getBackupDirectory();
backupDirectories = new LinkedHashMap<>(values.size());
@@ -220,7 +210,6 @@
backupDirectories.put(dir, new CachedBackupDirectory(dir));
}
-
// Construct the backup base entry.
LinkedHashMap<ObjectClass,String> objectClasses = new LinkedHashMap<>(2);
objectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
@@ -257,9 +246,6 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public void closeBackend()
{
@@ -312,9 +298,6 @@
return numEntries;
}
-
-
- /** {@inheritDoc} */
@Override
public boolean isIndexed(AttributeType attributeType, IndexType indexType)
{
@@ -322,9 +305,6 @@
return true;
}
-
-
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException
{
@@ -336,14 +316,12 @@
return ConditionResult.valueOf(ret != 0);
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException {
checkNotNull(baseDN, "baseDN must not be null");
return getNumberOfSubordinates(baseDN, true) + 1;
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException {
checkNotNull(parentDN, "parentDN must not be null");
@@ -430,7 +408,6 @@
}
}
- /** {@inheritDoc} */
@Override
public Entry getEntry(DN entryDN)
throws DirectoryException
@@ -442,14 +419,12 @@
ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID()));
}
-
// If the requested entry was the backend base entry, then retrieve it.
if (entryDN.equals(backupBaseDN))
{
return backupBaseEntry.duplicate(true);
}
-
// See if the requested entry was one level below the backend base entry.
// If so, then it must point to a backup directory. Otherwise, it must be
// two levels below the backup base entry and must point to a specific
@@ -476,8 +451,6 @@
}
}
-
-
/**
* Generates an entry for a backup directory based on the provided DN. The
* DN must contain an RDN component that specifies the path to the backup
@@ -505,7 +478,6 @@
backupBaseDN, null);
}
-
// Get a handle to the backup directory and the information that it
// contains.
BackupDirectory backupDirectory;
@@ -531,7 +503,6 @@
message);
}
-
// Construct the backup directory entry to return.
LinkedHashMap<ObjectClass,String> ocMap = new LinkedHashMap<>(2);
ocMap.put(DirectoryServer.getTopObjectClass(), OC_TOP);
@@ -552,8 +523,6 @@
return e;
}
-
-
/**
* Generates an entry for a backup based on the provided DN. The DN must
* have an RDN component that specifies the backup ID, and the parent DN must
@@ -694,7 +663,6 @@
return new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
- /** {@inheritDoc} */
@Override
public void addEntry(Entry entry, AddOperation addOperation)
throws DirectoryException
@@ -703,9 +671,6 @@
ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
}
-
-
- /** {@inheritDoc} */
@Override
public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
throws DirectoryException
@@ -714,9 +679,6 @@
ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
}
-
-
- /** {@inheritDoc} */
@Override
public void replaceEntry(Entry oldEntry, Entry newEntry,
ModifyOperation modifyOperation) throws DirectoryException
@@ -725,9 +687,6 @@
ERR_BACKEND_MODIFY_NOT_SUPPORTED.get(oldEntry.getName(), getBackendID()));
}
-
-
- /** {@inheritDoc} */
@Override
public void renameEntry(DN currentDN, Entry entry,
ModifyDNOperation modifyDNOperation)
@@ -737,9 +696,6 @@
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
}
-
-
- /** {@inheritDoc} */
@Override
public void search(SearchOperation searchOperation)
throws DirectoryException
@@ -749,7 +705,6 @@
DN baseDN = searchOperation.getBaseDN();
Entry baseEntry = getEntry(baseDN);
-
// Look at the base DN and see if it's the backup base DN, a backup
// directory entry DN, or a backup entry DN.
DN parentDN;
@@ -777,7 +732,6 @@
continue;
}
-
DN backupDirDN = makeChildDN(backupBaseDN, backupPathType,
dir.getAbsolutePath());
@@ -816,7 +770,6 @@
searchOperation.returnEntry(backupDirEntry, null);
}
-
if (scope != SearchScope.BASE_OBJECT)
{
AttributeType t =
@@ -907,7 +860,6 @@
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
@@ -916,7 +868,6 @@
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void createBackup(BackupConfig backupConfig)
throws DirectoryException
@@ -925,7 +876,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory,
String backupID)
@@ -935,7 +885,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig)
throws DirectoryException
@@ -944,7 +893,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
BackupBackendCfg cfg, List<LocalizableMessage> unacceptableReasons)
@@ -955,7 +903,6 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(BackupBackendCfg cfg)
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
index fcfa3b8..7410ac7 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/LDIFBackend.java
@@ -22,6 +22,7 @@
import static org.opends.server.util.StaticUtils.*;
import java.io.File;
+import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -36,12 +37,12 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.server.config.server.LDIFBackendCfg;
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.Backend;
@@ -84,8 +85,6 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-
/** The base DNs for this backend. */
private Set<DN> baseDNs;
@@ -117,7 +116,6 @@
{
}
- /** {@inheritDoc} */
@Override
public void openBackend()
throws ConfigException, InitializationException
@@ -152,8 +150,6 @@
readLDIF();
}
-
-
/**
* Reads the contents of the LDIF backing file into memory.
*
@@ -178,7 +174,6 @@
return;
}
-
try
{
importLDIF(new LDIFImportConfig(ldifFile.getAbsolutePath()), false);
@@ -189,8 +184,6 @@
}
}
-
-
/**
* Writes the current set of entries to the target LDIF file. The new LDIF
* will first be created as a temporary file and then renamed into place. The
@@ -207,7 +200,6 @@
File tempFile = new File(ldifFile.getAbsolutePath() + ".new");
File oldFile = new File(ldifFile.getAbsolutePath() + ".old");
-
// Write the new data to a temporary file.
LDIFWriter writer;
try
@@ -231,7 +223,6 @@
m, e);
}
-
for (Entry entry : entryMap.values())
{
try
@@ -332,7 +323,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void closeBackend()
{
@@ -387,7 +377,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean isIndexed(AttributeType attributeType, IndexType indexType)
{
@@ -395,7 +384,6 @@
return true;
}
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(DN entryDN)
throws DirectoryException
@@ -430,7 +418,6 @@
}
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException
{
@@ -438,7 +425,6 @@
return getNumberOfSubordinates(parentDN, false);
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException
{
@@ -490,7 +476,6 @@
}
}
- /** {@inheritDoc} */
@Override
public Entry getEntry(DN entryDN)
{
@@ -506,7 +491,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean entryExists(DN entryDN)
{
@@ -522,7 +506,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void addEntry(Entry entry, AddOperation addOperation)
throws DirectoryException
@@ -565,27 +548,8 @@
}
else
{
- DN matchedDN = null;
- if (parentDN != null)
- {
- while (true)
- {
- parentDN = DirectoryServer.getParentDNInSuffix(parentDN);
- if (parentDN == null)
- {
- break;
- }
-
- if (entryMap.containsKey(parentDN))
- {
- matchedDN = parentDN;
- break;
- }
- }
- }
-
LocalizableMessage m = ERR_LDIF_BACKEND_ADD_MISSING_PARENT.get(entryDN);
- throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, m, matchedDN, null);
+ throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, m, findMatchedDN(parentDN), null);
}
}
}
@@ -595,7 +559,26 @@
}
}
- /** {@inheritDoc} */
+ private DN findMatchedDN(DN parentDN)
+ {
+ if (parentDN != null)
+ {
+ while (true)
+ {
+ parentDN = DirectoryServer.getParentDNInSuffix(parentDN);
+ if (parentDN == null)
+ {
+ return null;
+ }
+ else if (entryMap.containsKey(parentDN))
+ {
+ return parentDN;
+ }
+ }
+ }
+ return null;
+ }
+
@Override
public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
throws DirectoryException
@@ -628,7 +611,6 @@
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, m, matchedDN, null);
}
-
// See if the target entry has any children. If so, then we'll only
// delete it if the request contains the subtree delete control (in
// which case we'll delete the entire subtree).
@@ -693,8 +675,6 @@
}
}
-
-
/**
* Removes the specified entry and any subordinates that it may have from
* the backend. This method assumes that the caller holds the backend write
@@ -716,7 +696,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void replaceEntry(Entry oldEntry, Entry newEntry,
ModifyOperation modifyOperation) throws DirectoryException
@@ -756,7 +735,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void renameEntry(DN currentDN, Entry entry,
ModifyDNOperation modifyDNOperation)
@@ -823,7 +801,6 @@
}
parentChildDNs.add(newDN);
-
// If the entry has children, then we'll need to work on the whole
// subtree. Otherwise, just work on the target entry.
Set<DN> childDNSet = childDNs.remove(currentDN);
@@ -844,8 +821,6 @@
}
}
-
-
/**
* Moves the specified entry and all of its children so that they are
* appropriately placed below the given new parent DN. This method assumes
@@ -893,7 +868,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void search(SearchOperation searchOperation)
throws DirectoryException
@@ -907,7 +881,6 @@
SearchScope scope = searchOperation.getScope();
SearchFilter filter = searchOperation.getFilter();
-
// Make sure the base entry exists if it's supposed to be in this backend.
Entry baseEntry = entryMap.get(baseDN);
if (baseEntry == null && handlesEntry(baseDN))
@@ -961,21 +934,18 @@
}
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
return supportedControls;
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
@@ -990,53 +960,33 @@
}
}
- /** {@inheritDoc} */
@Override
public void exportLDIF(LDIFExportConfig exportConfig)
throws DirectoryException
{
backendLock.readLock().lock();
- try
+ try (LDIFWriter ldifWriter = newLDIFWriter(exportConfig))
{
- // Create the LDIF writer.
- LDIFWriter ldifWriter;
- try
- {
- ldifWriter = new LDIFWriter(exportConfig);
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage m = ERR_LDIF_BACKEND_CANNOT_CREATE_LDIF_WRITER.get(
- stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- m, e);
- }
-
-
// Walk through all the entries and write them to LDIF.
- DN entryDN = null;
- try
+ for (Entry entry : entryMap.values())
{
- for (Entry entry : entryMap.values())
+ DN entryDN = entry.getName();
+ try
{
- entryDN = entry.getName();
ldifWriter.writeEntry(entry);
}
+ catch (Exception e)
+ {
+ LocalizableMessage m =
+ ERR_LDIF_BACKEND_CANNOT_WRITE_ENTRY_TO_LDIF.get(entryDN, stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m, e);
+ }
}
- catch (Exception e)
- {
- LocalizableMessage m = ERR_LDIF_BACKEND_CANNOT_WRITE_ENTRY_TO_LDIF.get(
- entryDN, stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- m, e);
- }
- finally
- {
- StaticUtils.close(ldifWriter);
- }
+ }
+ catch (IOException ignoreOnClose)
+ {
+ logger.traceException(ignoreOnClose);
}
finally
{
@@ -1044,7 +994,20 @@
}
}
- /** {@inheritDoc} */
+ private LDIFWriter newLDIFWriter(LDIFExportConfig exportConfig) throws DirectoryException
+ {
+ try
+ {
+ return new LDIFWriter(exportConfig);
+ }
+ catch (Exception e)
+ {
+ logger.traceException(e);
+ LocalizableMessage m = ERR_LDIF_BACKEND_CANNOT_CREATE_LDIF_WRITER.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m, e);
+ }
+ }
+
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
@@ -1068,25 +1031,11 @@
{
backendLock.writeLock().lock();
- try
+ try (LDIFReader reader = newLDIFReader(importConfig))
{
- LDIFReader reader;
- try
- {
- reader = new LDIFReader(importConfig);
- }
- catch (Exception e)
- {
- LocalizableMessage m = ERR_LDIF_BACKEND_CANNOT_CREATE_LDIF_READER.get(
- stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- m, e);
- }
-
entryMap.clear();
childDNs.clear();
-
try
{
while (true)
@@ -1109,10 +1058,7 @@
throw new DirectoryException(
DirectoryServer.getServerErrorResultCode(), m, le);
}
- else
- {
- continue;
- }
+ continue;
}
// Make sure that we don't already have an entry with the same DN. If
@@ -1127,7 +1073,6 @@
continue;
}
-
// If the entry DN is a base DN, then add it with no more processing.
if (baseDNs.contains(entryDN))
{
@@ -1135,19 +1080,8 @@
continue;
}
-
// Make sure that the parent exists. If not, then reject the entry.
- boolean isBelowBaseDN = false;
- for (DN baseDN : baseDNs)
- {
- if (baseDN.isSuperiorOrEqualTo(entryDN))
- {
- isBelowBaseDN = true;
- break;
- }
- }
-
- if (! isBelowBaseDN)
+ if (!isBelowBaseDN(entryDN))
{
LocalizableMessage m = ERR_LDIF_BACKEND_ENTRY_OUT_OF_SCOPE.get(
ldifFilePath, currentConfig.dn(), entryDN);
@@ -1166,7 +1100,6 @@
continue;
}
-
// The entry does not exist but its parent does, so add it and update
// the set of children for the parent.
entryMap.put(entryDN, e);
@@ -1181,7 +1114,6 @@
childDNSet.add(entryDN);
}
-
if (writeLDIF)
{
writeLDIF();
@@ -1197,14 +1129,8 @@
}
catch (Exception e)
{
- LocalizableMessage m = ERR_LDIF_BACKEND_ERROR_READING_LDIF.get(
- stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- m, e);
- }
- finally
- {
- StaticUtils.close(reader);
+ LocalizableMessage m = ERR_LDIF_BACKEND_ERROR_READING_LDIF.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m, e);
}
}
finally
@@ -1213,7 +1139,31 @@
}
}
- /** {@inheritDoc} */
+ private boolean isBelowBaseDN(DN entryDN)
+ {
+ for (DN baseDN : baseDNs)
+ {
+ if (baseDN.isSuperiorOrEqualTo(entryDN))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private LDIFReader newLDIFReader(LDIFImportConfig importConfig) throws DirectoryException
+ {
+ try
+ {
+ return new LDIFReader(importConfig);
+ }
+ catch (Exception e)
+ {
+ LocalizableMessage m = ERR_LDIF_BACKEND_CANNOT_CREATE_LDIF_READER.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), m, e);
+ }
+ }
+
@Override
public void createBackup(BackupConfig backupConfig)
throws DirectoryException
@@ -1222,7 +1172,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory, String backupID)
throws DirectoryException
@@ -1231,7 +1180,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig)
throws DirectoryException
@@ -1240,7 +1188,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- /** {@inheritDoc} */
@Override
public void configureBackend(LDIFBackendCfg config, ServerContext serverContext) throws ConfigException
{
@@ -1259,7 +1206,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(LDIFBackendCfg configuration,
List<LocalizableMessage> unacceptableReasons)
@@ -1276,7 +1222,6 @@
return configAcceptable;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
LDIFBackendCfg configuration)
@@ -1307,21 +1252,18 @@
return ccr;
}
- /** {@inheritDoc} */
@Override
public DN getComponentEntryDN()
{
return currentConfig.dn();
}
- /** {@inheritDoc} */
@Override
public String getClassName()
{
return LDIFBackend.class.getName();
}
- /** {@inheritDoc} */
@Override
public Map<String,String> getAlerts()
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
index 91c9b16..e72c593 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MemoryBackend.java
@@ -26,12 +26,14 @@
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
+import java.util.Map;
import java.util.Set;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ConditionResult;
+import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
@@ -48,7 +50,6 @@
import org.opends.server.types.BackupConfig;
import org.opends.server.types.BackupDirectory;
import org.opends.server.types.Control;
-import org.forgerock.opendj.ldap.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.Entry;
import org.opends.server.types.IndexType;
@@ -95,23 +96,16 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
+ /** The set of supported controls for this backend. */
+ private static final Set<String> supportedControls = Collections.singleton(OID_SUBTREE_DELETE_CONTROL);
/** The base DNs for this backend. */
private Set<DN> baseDNs;
-
/** The mapping between parent DNs and their immediate children. */
- private HashMap<DN,HashSet<DN>> childDNs;
-
- /** The set of supported controls for this backend. */
- private final Set<String> supportedControls =
- Collections.singleton(OID_SUBTREE_DELETE_CONTROL);
-
+ private Map<DN, HashSet<DN>> childDNs;
/** The mapping between entry DNs and the corresponding entries. */
private LinkedHashMap<DN,Entry> entryMap;
-
-
/**
* Creates a new backend with the provided information. All backend
* implementations must implement a default constructor that use
@@ -124,7 +118,6 @@
// Perform all initialization in initializeBackend.
}
-
/**
* Set the base DNs for this backend. This is used by the unit tests
* to set the base DNs without having to provide a configuration
@@ -177,18 +170,13 @@
}
}
-
-
- /**
- * Removes any data that may have been stored in this backend.
- */
+ /** Removes any data that may have been stored in this backend. */
public synchronized void clearMemoryBackend()
{
entryMap.clear();
childDNs.clear();
}
- /** {@inheritDoc} */
@Override
public synchronized void closeBackend()
{
@@ -224,7 +212,6 @@
return -1;
}
- /** {@inheritDoc} */
@Override
public boolean isIndexed(AttributeType attributeType, IndexType indexType)
{
@@ -232,7 +219,6 @@
return true;
}
- /** {@inheritDoc} */
@Override
public synchronized ConditionResult hasSubordinates(DN entryDN)
throws DirectoryException
@@ -245,14 +231,12 @@
return ConditionResult.valueOf(ret != 0);
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException {
checkNotNull(baseDN, "baseDN must not be null");
return getNumberOfSubordinates(baseDN, true) + 1;
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException {
checkNotNull(parentDN, "parentDN must not be null");
@@ -286,7 +270,6 @@
return count;
}
- /** {@inheritDoc} */
@Override
public synchronized Entry getEntry(DN entryDN)
{
@@ -299,14 +282,12 @@
return entry;
}
- /** {@inheritDoc} */
@Override
public synchronized boolean entryExists(DN entryDN)
{
return entryMap.containsKey(entryDN);
}
- /** {@inheritDoc} */
@Override
public synchronized void addEntry(Entry entry, AddOperation addOperation)
throws DirectoryException
@@ -321,7 +302,6 @@
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS.get(entryDN));
}
-
// If the entry is one of the base DNs, then add it.
if (baseDNs.contains(entryDN))
{
@@ -329,7 +309,6 @@
return;
}
-
// Get the parent DN and ensure that it exists in the backend.
DN parentDN = DirectoryServer.getParentDNInSuffix(entryDN);
if (parentDN == null)
@@ -354,7 +333,6 @@
children.add(entryDN);
}
- /** {@inheritDoc} */
@Override
public synchronized void deleteEntry(DN entryDN,
DeleteOperation deleteOperation)
@@ -367,41 +345,34 @@
ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID()));
}
-
// Check to see if the entry contains a subtree delete control.
boolean subtreeDelete = deleteOperation != null
&& deleteOperation.getRequestControl(SubtreeDeleteControl.DECODER) != null;
- HashSet<DN> children = childDNs.get(entryDN);
- if (subtreeDelete)
+ Set<DN> children = childDNs.get(entryDN);
+ if (children != null && !children.isEmpty())
{
- if (children != null)
- {
- HashSet<DN> childrenCopy = new HashSet<>(children);
- for (DN childDN : childrenCopy)
- {
- try
- {
- deleteEntry(childDN, null);
- }
- catch (Exception e)
- {
- // This shouldn't happen, but we want the delete to continue anyway
- // so just ignore it if it does for some reason.
- logger.traceException(e);
- }
- }
- }
- }
- else
- {
- // Make sure the entry doesn't have any children. If it does, then throw
- // an exception.
- if (children != null && !children.isEmpty())
+ // children exist
+ if (!subtreeDelete)
{
throw new DirectoryException(ResultCode.NOT_ALLOWED_ON_NONLEAF,
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN.get(entryDN));
}
+
+ Set<DN> childrenCopy = new HashSet<>(children);
+ for (DN childDN : childrenCopy)
+ {
+ try
+ {
+ deleteEntry(childDN, null);
+ }
+ catch (Exception ignore)
+ {
+ // This shouldn't happen, but we want the delete to continue anyway
+ // so just ignore it if it does for some reason.
+ logger.traceException(ignore);
+ }
+ }
}
@@ -425,7 +396,6 @@
}
}
- /** {@inheritDoc} */
@Override
public synchronized void replaceEntry(Entry oldEntry, Entry newEntry,
ModifyOperation modifyOperation) throws DirectoryException
@@ -440,12 +410,10 @@
ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID()));
}
-
// Replace the old entry with the new one.
entryMap.put(entryDN, e);
}
- /** {@inheritDoc} */
@Override
public synchronized void renameEntry(DN currentDN, Entry entry,
ModifyDNOperation modifyDNOperation)
@@ -460,9 +428,8 @@
ERR_BACKEND_ENTRY_DOESNT_EXIST.get(currentDN, getBackendID()));
}
-
// Make sure that the target entry doesn't have any children.
- HashSet<DN> children = childDNs.get(currentDN);
+ Set<DN> children = childDNs.get(currentDN);
if (children != null)
{
if (children.isEmpty())
@@ -476,7 +443,6 @@
}
}
-
// Make sure that no entry exists with the new DN.
if (entryMap.containsKey(e.getName()))
{
@@ -484,25 +450,13 @@
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS.get(e.getName()));
}
-
// Make sure that the new DN is in this backend.
- boolean matchFound = false;
- for (DN dn : baseDNs)
- {
- if (dn.isSuperiorOrEqualTo(e.getName()))
- {
- matchFound = true;
- break;
- }
- }
-
- if (! matchFound)
+ if (!superiorExistsInBackend(e.getName()))
{
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
ERR_MEMORYBACKEND_CANNOT_RENAME_TO_ANOTHER_BACKEND.get(currentDN));
}
-
// Make sure that the parent of the new entry exists.
DN parentDN = DirectoryServer.getParentDNInSuffix(e.getName());
if (parentDN == null || !entryMap.containsKey(parentDN))
@@ -511,13 +465,23 @@
ERR_MEMORYBACKEND_RENAME_PARENT_DOESNT_EXIST.get(currentDN, parentDN));
}
-
// Delete the current entry and add the new one.
deleteEntry(currentDN, null);
addEntry(e, null);
}
- /** {@inheritDoc} */
+ private boolean superiorExistsInBackend(DN dnToFind)
+ {
+ for (DN dn : baseDNs)
+ {
+ if (dn.isSuperiorOrEqualTo(dnToFind))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Override
public synchronized void search(SearchOperation searchOperation)
throws DirectoryException
@@ -527,7 +491,6 @@
SearchScope scope = searchOperation.getScope();
SearchFilter filter = searchOperation.getFilter();
-
// Make sure the base entry exists if it's supposed to be in this backend.
Entry baseEntry = entryMap.get(baseDN);
if (baseEntry == null && handlesEntry(baseDN))
@@ -554,7 +517,6 @@
baseEntry = baseEntry.duplicate(true);
}
-
// If it's a base-level search, then just get that entry and return it if it
// matches the filter.
if (scope == SearchScope.BASE_OBJECT)
@@ -578,21 +540,18 @@
}
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
return supportedControls;
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
@@ -607,7 +566,6 @@
}
}
- /** {@inheritDoc} */
@Override
public synchronized void exportLDIF(LDIFExportConfig exportConfig)
throws DirectoryException
@@ -626,7 +584,6 @@
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER.get(e), e);
}
-
// Walk through all the entries and write them to LDIF.
DN entryDN = null;
try
@@ -648,26 +605,14 @@
}
}
- /** {@inheritDoc} */
@Override
public synchronized LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
{
clearMemoryBackend();
- LDIFReader reader;
- try
- {
- reader = new LDIFReader(importConfig);
- }
- catch (Exception e)
- {
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_READER.get(e), e);
- }
-
- try
+ try (LDIFReader reader = newLDIFReader(importConfig))
{
while (true)
{
@@ -687,10 +632,7 @@
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
ERR_MEMORYBACKEND_ERROR_READING_LDIF.get(e), le);
}
- else
- {
- continue;
- }
+ continue;
}
try
@@ -716,13 +658,21 @@
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
ERR_MEMORYBACKEND_ERROR_DURING_IMPORT.get(e), e);
}
- finally
+ }
+
+ private LDIFReader newLDIFReader(LDIFImportConfig importConfig) throws DirectoryException
+ {
+ try
{
- reader.close();
+ return new LDIFReader(importConfig);
+ }
+ catch (Exception e)
+ {
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_READER.get(e), e);
}
}
- /** {@inheritDoc} */
@Override
public void createBackup(BackupConfig backupConfig)
throws DirectoryException
@@ -731,7 +681,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory,
String backupID)
@@ -741,7 +690,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig)
throws DirectoryException
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
index 2495ede..1fbfc0f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/MonitorBackend.java
@@ -24,6 +24,7 @@
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -89,7 +90,7 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
- /** The set of user-defined attributes that will be included in the base monitor entry. */
+ /** The set of user-defined attributes that will be included in the base monitor entry. */
private ArrayList<Attribute> userDefinedAttributes;
/** The set of objectclasses that will be used in monitor entries. */
private final HashMap<ObjectClass, String> monitorObjectClasses = new LinkedHashMap<>(2);
@@ -112,7 +113,6 @@
super();
}
- /** {@inheritDoc} */
@Override
public void addEntry(final Entry entry, final AddOperation addOperation)
throws DirectoryException
@@ -121,7 +121,6 @@
ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(
final MonitorBackendCfg backendCfg)
@@ -226,7 +225,6 @@
addAllNonMonitorConfigAttributes(attributes, attributesToAdd);
}
- /** {@inheritDoc} */
@Override
public void createBackup(final BackupConfig backupConfig)
throws DirectoryException
@@ -235,7 +233,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void deleteEntry(final DN entryDN,
final DeleteOperation deleteOperation) throws DirectoryException
@@ -244,77 +241,69 @@
ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
}
- /** {@inheritDoc} */
@Override
public boolean entryExists(final DN entryDN) throws DirectoryException
{
return getDIT().containsKey(entryDN);
}
- /** {@inheritDoc} */
@Override
public void exportLDIF(final LDIFExportConfig exportConfig)
throws DirectoryException
{
// TODO export-ldif reports nonsense for upTime etc.
-
- // Create the LDIF writer.
- LDIFWriter ldifWriter;
- try
+ try (LDIFWriter ldifWriter = newLDIFWriter(exportConfig))
{
- ldifWriter = new LDIFWriter(exportConfig);
- }
- catch (final Exception e)
- {
- logger.traceException(e);
-
- final LocalizableMessage message = ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER
- .get(stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
- }
-
- // Write the base monitor entry to the LDIF.
- try
- {
- ldifWriter.writeEntry(getBaseMonitorEntry());
- }
- catch (final Exception e)
- {
- logger.traceException(e);
-
- close(ldifWriter);
-
- final LocalizableMessage message = ERR_MONITOR_UNABLE_TO_EXPORT_BASE
- .get(stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
- }
-
- // Get all the monitor providers, convert them to entries, and write them to
- // LDIF.
- for (final MonitorProvider<?> monitorProvider : DirectoryServer
- .getMonitorProviders().values())
- {
+ // Write the base monitor entry to the LDIF.
try
{
- // TODO implementation of export is incomplete
+ ldifWriter.writeEntry(getBaseMonitorEntry());
}
catch (final Exception e)
{
logger.traceException(e);
+ final LocalizableMessage message = ERR_MONITOR_UNABLE_TO_EXPORT_BASE.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
+ }
- close(ldifWriter);
-
- final LocalizableMessage message = ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY
- .get(monitorProvider.getMonitorInstanceName(), stackTraceToSingleLineString(e));
- throw new DirectoryException(
- DirectoryServer.getServerErrorResultCode(), message);
+ // Get all the monitor providers, convert them to entries, and write them to LDIF.
+ for (final MonitorProvider<?> monitorProvider : DirectoryServer.getMonitorProviders().values())
+ {
+ try
+ {
+ // TODO implementation of export is incomplete
+ }
+ catch (final Exception e)
+ {
+ logger.traceException(e);
+ final LocalizableMessage message =
+ ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY.get(monitorProvider.getMonitorInstanceName(),
+ stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
+ }
}
}
-
- close(ldifWriter);
+ catch (IOException ignoreOnClose)
+ {
+ logger.traceException(ignoreOnClose);
+ }
}
- /** {@inheritDoc} */
+ private LDIFWriter newLDIFWriter(final LDIFExportConfig exportConfig) throws DirectoryException
+ {
+ try
+ {
+ return new LDIFWriter(exportConfig);
+ }
+ catch (final Exception e)
+ {
+ logger.traceException(e);
+
+ final LocalizableMessage message = ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
+ }
+ }
+
@Override
public void closeBackend()
{
@@ -364,28 +353,24 @@
return getEntry(entryDN, dit);
}
- /** {@inheritDoc} */
@Override
public long getEntryCount()
{
return getDIT().size();
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(final DN entryDN)
throws DirectoryException
@@ -399,7 +384,6 @@
return ConditionResult.UNDEFINED;
}
- /** {@inheritDoc} */
@Override
public LDIFImportResult importLDIF(final LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
@@ -408,7 +392,6 @@
ERR_BACKEND_IMPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void openBackend() throws ConfigException, InitializationException
{
@@ -430,7 +413,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
final MonitorBackendCfg backendCfg,
@@ -441,7 +423,6 @@
return true;
}
- /** {@inheritDoc} */
@Override
public boolean isIndexed(final AttributeType attributeType,
final IndexType indexType)
@@ -450,14 +431,12 @@
return true;
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(final DN baseDN) throws DirectoryException {
checkNotNull(baseDN, "baseDN must not be null");
return getNumberOfSubordinates(baseDN, true) + 1;
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(final DN parentDN) throws DirectoryException {
checkNotNull(parentDN, "parentDN must not be null");
@@ -487,7 +466,6 @@
return count;
}
- /** {@inheritDoc} */
@Override
public void removeBackup(final BackupDirectory backupDirectory,
final String backupID) throws DirectoryException
@@ -496,7 +474,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void renameEntry(final DN currentDN, final Entry entry,
final ModifyDNOperation modifyDNOperation) throws DirectoryException
@@ -505,7 +482,6 @@
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void replaceEntry(final Entry oldEntry, final Entry newEntry,
final ModifyOperation modifyOperation) throws DirectoryException
@@ -514,7 +490,6 @@
ERR_MONITOR_MODIFY_NOT_SUPPORTED.get(newEntry.getName(), configEntryDN));
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(final RestoreConfig restoreConfig)
throws DirectoryException
@@ -523,7 +498,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void search(final SearchOperation searchOperation)
throws DirectoryException
@@ -574,7 +548,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
@@ -709,8 +682,6 @@
return dit;
}
-
-
/**
* Creates the monitor entry having the specified DN.
*
@@ -741,8 +712,6 @@
}
}
-
-
/**
* Generates and returns a monitor entry based on the contents of the provided
* monitor provider.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
index f8feced..d5475a8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/RootDSEBackend.java
@@ -127,8 +127,6 @@
*/
private ConcurrentHashMap<DN, Backend<?>> subordinateBaseDNs;
-
-
/**
* Creates a new backend with the provided information. All backend
* implementations must implement a default constructor that use
@@ -165,13 +163,11 @@
userDefinedAttributes = new ArrayList<>();
addAllUserDefinedAttrs(userDefinedAttributes, configEntry);
-
// Create the set of base DNs that we will handle. In this case, it's just
// the root DSE.
rootDSEDN = DN.rootDN();
baseDNs = Collections.singleton(rootDSEDN);
-
// Create the set of subordinate base DNs. If this is specified in the
// configuration, then use that set. Otherwise, use the set of non-private
// backends defined in the server.
@@ -189,13 +185,13 @@
for (DN baseDN : subDNs)
{
Backend<?> backend = DirectoryServer.getBackend(baseDN);
- if (backend == null)
+ if (backend != null)
{
- logger.warn(WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE, baseDN);
+ subordinateBaseDNs.put(baseDN, backend);
}
else
{
- subordinateBaseDNs.put(baseDN, backend);
+ logger.warn(WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE, baseDN);
}
}
}
@@ -209,12 +205,10 @@
throw new InitializationException(message, e);
}
-
// Determine whether all root DSE attributes should be treated as user
// attributes.
showAllAttributes = currentConfig.isShowAllAttributes();
-
// Construct the set of "static" attributes that will always be present in
// the root DSE.
staticDSEAttributes = new ArrayList<>();
@@ -240,12 +234,10 @@
}
dseObjectClasses.put(rootDSEOC, OC_ROOT_DSE);
-
// Set the backend ID for this backend. The identifier needs to be
// specific enough to avoid conflict with user backend identifiers.
setBackendID("__root.dse__");
-
// Register as a change listener.
currentConfig.addChangeListener(this);
}
@@ -284,8 +276,6 @@
currentConfig.removeChangeListener(this);
}
-
-
/**
* Indicates whether the provided attribute is one that is used in the
* configuration of this backend.
@@ -392,12 +382,10 @@
return getRootDSE();
}
-
// This method should never be used to get anything other than the root DSE.
// If we got here, then that appears to be the case, so log a message.
logger.warn(WARN_ROOTDSE_GET_ENTRY_NONROOT, entryDN);
-
// Go ahead and check the subordinate backends to see if we can find the
// entry there. Note that in order to avoid potential loop conditions, this
// will only work if the set of subordinate bases has been explicitly
@@ -413,13 +401,10 @@
}
}
-
// If we've gotten here, then we couldn't find the entry so return null.
return null;
}
-
-
/**
* Retrieves the root DSE entry for the Directory Server.
*
@@ -430,8 +415,6 @@
return getRootDSE(null);
}
-
-
/**
* Retrieves the root DSE entry for the Directory Server.
*
@@ -489,7 +472,6 @@
ATTR_SUPPORTED_AUTH_PW_SCHEMES, DirectoryServer.getAuthPasswordStorageSchemes().keySet());
addAttribute(supportedAuthPWSchemesAttr, dseUserAttrs, dseOperationalAttrs);
-
// Obtain TLS protocol and cipher support.
Collection<String> supportedTlsProtocols;
Collection<String> supportedTlsCiphers;
@@ -604,7 +586,6 @@
return true;
}
-
// If it was not the null DN, then iterate through the associated
// subordinate backends to make the determination.
for (Map.Entry<DN, Backend<?>> entry : getSubordinateBaseDNs().entrySet())
@@ -664,7 +645,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
SearchFilter filter = searchOperation.getFilter();
switch (searchOperation.getScope().asEnum())
{
@@ -676,7 +656,6 @@
}
break;
-
case SINGLE_LEVEL:
for (Map.Entry<DN, Backend<?>> entry : getSubordinateBaseDNs().entrySet())
{
@@ -692,7 +671,6 @@
}
break;
-
case WHOLE_SUBTREE:
case SUBORDINATES:
try
@@ -785,7 +763,7 @@
public boolean supports(BackendOperation backendOperation)
{
// We will only export the DSE entry itself.
- return backendOperation.equals(BackendOperation.LDIF_EXPORT);
+ return BackendOperation.LDIF_EXPORT.equals(backendOperation);
}
@Override
@@ -808,7 +786,6 @@
message);
}
-
// Write the root DSE entry itself to it. Make sure to close the LDIF
// writer when we're done.
try
@@ -872,7 +849,6 @@
{
boolean configIsAcceptable = true;
-
try
{
Set<DN> subDNs = cfg.getSubordinateBaseDN();
@@ -902,7 +878,6 @@
configIsAcceptable = false;
}
-
return configIsAcceptable;
}
@@ -911,7 +886,6 @@
{
final ConfigChangeResult ccr = new ConfigChangeResult();
-
// Check to see if we should apply a new set of base DNs.
ConcurrentHashMap<DN, Backend<?>> subBases;
try
@@ -952,10 +926,8 @@
subBases = null;
}
-
boolean newShowAll = cfg.isShowAllAttributes();
-
// Check to see if there is a new set of user-defined attributes.
ArrayList<Attribute> userAttrs = new ArrayList<>();
try
@@ -972,7 +944,6 @@
ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
}
-
if (ccr.getResultCode() == ResultCode.SUCCESS)
{
subordinateBaseDNs = subBases;
@@ -987,7 +958,6 @@
ccr.addMessage(INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS.get(basesStr));
}
-
if (showAllAttributes != newShowAll)
{
showAllAttributes = newShowAll;
@@ -995,12 +965,10 @@
ATTR_ROOTDSE_SHOW_ALL_ATTRIBUTES, showAllAttributes));
}
-
userDefinedAttributes = userAttrs;
ccr.addMessage(INFO_ROOTDSE_USING_NEW_USER_ATTRS.get());
}
-
return ccr;
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
index 1acfde5..a8b82a9 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/SchemaBackend.java
@@ -52,6 +52,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.ldap.AVA;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ConditionResult;
@@ -64,13 +65,11 @@
import org.forgerock.opendj.ldap.schema.CoreSchema;
import org.forgerock.opendj.ldap.schema.MatchingRule;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
-import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.server.config.server.SchemaBackendCfg;
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.Backend;
import org.opends.server.api.Backupable;
import org.opends.server.api.ClientConnection;
-import org.opends.server.types.Entry;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
@@ -96,6 +95,7 @@
import org.opends.server.types.DITContentRule;
import org.opends.server.types.DITStructureRule;
import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
import org.opends.server.types.ExistingFileBehavior;
import org.opends.server.types.IndexType;
import org.opends.server.types.InitializationException;
@@ -256,7 +256,6 @@
ObjectClass subschemaOC = DirectoryServer.getObjectClass(OC_SUBSCHEMA, true);
schemaObjectClasses.put(subschemaOC, OC_SUBSCHEMA);
-
configEntryDN = configEntry.getName();
baseDNs = cfg.getBaseDN();
@@ -273,7 +272,6 @@
modifyTimestamp =
GeneralizedTimeSyntax.createGeneralizedTimeValue(newModifyTime);
-
// Get the set of user-defined attributes for the configuration entry. Any
// attributes that we don't recognize will be included directly in the
// schema entry.
@@ -318,7 +316,6 @@
}
}
-
// Identify any differences that may exist between the concatenated schema
// file from the last online modification and the current schema files. If
// there are any differences, then they should be from making changes to the
@@ -417,7 +414,6 @@
logger.error(ERR_SCHEMA_ERROR_DETERMINING_SCHEMA_CHANGES, getExceptionMessage(e));
}
-
// Register with the Directory Server as a configurable component.
currentConfig.addSchemaChangeListener(this);
}
@@ -440,8 +436,6 @@
}
}
-
-
/**
* Indicates whether the provided attribute is one that is used in the
* configuration of this backend.
@@ -522,7 +516,6 @@
return null;
}
-
/**
* Generates and returns a schema entry for the Directory Server.
*
@@ -571,9 +564,7 @@
}
}
- /*
- * Add the schema definition attributes.
- */
+ /* Add the schema definition attributes. */
Schema schema = DirectoryServer.getSchema();
buildSchemaAttribute(schema.getAttributeTypes(), userAttrs,
operationalAttrs, attributeTypesType, includeSchemaFile,
@@ -642,8 +633,6 @@
return e;
}
-
-
private void addAttributeToSchemaEntry(Attribute attribute,
Map<AttributeType, List<Attribute>> userAttrs,
Map<AttributeType, List<Attribute>> operationalAttrs)
@@ -659,8 +648,6 @@
attrs.add(attribute);
}
-
-
private void buildSchemaAttribute(Collection<?> elements,
Map<AttributeType, List<Attribute>> userAttrs,
Map<AttributeType, List<Attribute>> operationalAttrs,
@@ -676,10 +663,7 @@
AttributeBuilder builder = new AttributeBuilder(schemaAttributeType);
for (Object element : elements)
{
- /*
- * Add the file name to the description of the element if this was
- * requested by the caller.
- */
+ /* Add the file name to the description of the element if this was requested by the caller. */
String value;
if (includeSchemaFile && element instanceof CommonSchemaElements)
{
@@ -748,7 +732,6 @@
message);
}
-
ArrayList<Modification> mods = new ArrayList<>(modifyOperation.getModifications());
if (mods.isEmpty())
{
@@ -918,7 +901,6 @@
break;
-
case DELETE:
if (a.isEmpty())
{
@@ -1073,7 +1055,6 @@
break;
-
case REPLACE:
if (!m.isInternal()
&& !modifyOperation.isSynchronizationOperation())
@@ -1100,7 +1081,6 @@
}
}
-
// If we've gotten here, then everything looks OK, re-write all the
// modified Schema Files.
updateSchemaFiles(newSchema, modifiedSchemaFiles);
@@ -1108,7 +1088,6 @@
// Finally set DirectoryServer to use the new Schema.
DirectoryServer.setSchema(newSchema);
-
DN authzDN = modifyOperation.getAuthorizationDN();
if (authzDN == null)
{
@@ -1120,8 +1099,6 @@
System.currentTimeMillis());
}
-
-
/**
* Re-write all schema files using the provided new Schema and list of
* modified files.
@@ -1170,15 +1147,12 @@
cleanUpTempSchemaFiles(tempSchemaFiles);
}
-
// Create a single file with all of the concatenated schema information
// that we can use on startup to detect whether the schema files have been
// edited with the server offline.
Schema.writeConcatenatedSchema();
}
-
-
/**
* Handles all processing required for adding the provided attribute type to
* the given schema, replacing an existing type if necessary, and ensuring all
@@ -1460,8 +1434,6 @@
}
}
-
-
/**
* Handles all processing required for adding the provided objectclass to the
* given schema, replacing an existing class if necessary, and ensuring
@@ -1513,7 +1485,6 @@
}
}
-
// Make sure that the new objectclass doesn't reference an undefined
// superior class, or an undefined required or optional attribute type,
// and that none of them are OBSOLETE.
@@ -1565,7 +1536,6 @@
}
}
-
// If there is no existing class, then we're adding a new objectclass.
// Otherwise, we're replacing an existing one.
if (existingClass == null)
@@ -1582,8 +1552,6 @@
}
}
-
-
/**
* Handles all processing required to remove the provided objectclass from the
* server schema, ensuring all other metadata is properly updated. Note that
@@ -1626,7 +1594,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// See if there is another modification later to add the objectclass back
// into the schema. If so, then it's a replace and we should ignore the
// remove because adding it back will handle the replace.
@@ -1667,7 +1634,6 @@
}
}
-
// Make sure that the objectclass isn't used as the superior class for any
// other objectclass.
for (ObjectClass oc : schema.getObjectClasses().values())
@@ -1684,7 +1650,6 @@
}
}
-
// Make sure that the objectclass isn't used as the structural class for
// any name form.
List<NameForm> mappedForms = schema.getNameForm(removeClass);
@@ -1701,7 +1666,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// Make sure that the objectclass isn't used as a structural or auxiliary
// class for any DIT content rule.
for (DITContentRule dcr : schema.getDITContentRules().values())
@@ -1715,7 +1679,6 @@
}
}
-
// If we've gotten here, then it's OK to remove the objectclass from the
// schema.
schema.deregisterObjectClass(removeClass);
@@ -1726,8 +1689,6 @@
}
}
-
-
/**
* Handles all processing required for adding the provided name form to the
* the given schema, replacing an existing name form if necessary, and
@@ -1778,7 +1739,6 @@
}
}
-
// Make sure that the new name form doesn't reference an undefined
// structural class, or an undefined required or optional attribute type, or
// that any of them are marked OBSOLETE.
@@ -1834,7 +1794,6 @@
}
}
-
// If there is no existing class, then we're adding a new name form.
// Otherwise, we're replacing an existing one.
if (existingNF == null)
@@ -1851,8 +1810,6 @@
}
}
-
-
/**
* Handles all processing required to remove the provided name form from the
* server schema, ensuring all other metadata is properly updated. Note that
@@ -1894,7 +1851,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// See if there is another modification later to add the name form back
// into the schema. If so, then it's a replace and we should ignore the
// remove because adding it back will handle the replace.
@@ -1935,7 +1891,6 @@
}
}
-
// Make sure that the name form isn't referenced by any DIT structure
// rule.
DITStructureRule dsr = schema.getDITStructureRule(removeNF);
@@ -1946,7 +1901,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// If we've gotten here, then it's OK to remove the name form from the
// schema.
schema.deregisterNameForm(removeNF);
@@ -1957,8 +1911,6 @@
}
}
-
-
/**
* Handles all processing required for adding the provided DIT content rule to
* the given schema, replacing an existing rule if necessary, and ensuring
@@ -2007,7 +1959,6 @@
}
}
-
// Get the structural class for the new DIT content rule and see if there's
// already an existing rule that is associated with that class. If there
// is, then it will only be acceptable if it's the DIT content rule that we
@@ -2023,7 +1974,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// Make sure that the new DIT content rule doesn't reference an undefined
// structural or auxiliary class, or an undefined required, optional, or
// prohibited attribute type.
@@ -2118,7 +2068,6 @@
}
}
-
// If there is no existing rule, then we're adding a new DIT content rule.
// Otherwise, we're replacing an existing one.
if (existingDCR == null)
@@ -2136,8 +2085,6 @@
}
}
-
-
/**
* Handles all processing required to remove the provided DIT content rule
* from the server schema, ensuring all other metadata is properly updated.
@@ -2174,7 +2121,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// Since DIT content rules don't have any dependencies, then we don't need
// to worry about the difference between a remove or a replace. We can
// just remove the DIT content rule now, and if it is added back later then
@@ -2187,8 +2133,6 @@
}
}
-
-
/**
* Handles all processing required for adding the provided DIT structure rule
* to the given schema, replacing an existing rule if necessary, and ensuring
@@ -2270,7 +2214,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// Make sure that the new DIT structure rule doesn't reference an undefined
// name form or superior DIT structure rule.
if (! schema.hasNameForm(nameForm.getOID()))
@@ -2286,7 +2229,6 @@
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
-
// If there are any superior rules, then make sure none of them are marked
// OBSOLETE.
for (DITStructureRule dsr : ditStructureRule.getSuperiorRules())
@@ -2299,7 +2241,6 @@
}
}
-
// If there is no existing rule, then we're adding a new DIT structure rule.
// Otherwise, we're replacing an existing one.
if (existingDSR == null)
@@ -2317,8 +2258,6 @@
}
}
-
-
/**
* Handles all processing required to remove the provided DIT structure rule
* from the server schema, ensuring all other metadata is properly updated.
@@ -2363,7 +2302,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// See if there is another modification later to add the DIT structure rule
// back into the schema. If so, then it's a replace and we should ignore
// the remove because adding it back will handle the replace.
@@ -2404,7 +2342,6 @@
}
}
-
// Make sure that the DIT structure rule isn't the superior for any other
// DIT structure rule.
for (DITStructureRule dsr : schema.getDITStructureRulesByID().values())
@@ -2417,7 +2354,6 @@
}
}
-
// If we've gotten here, then it's OK to remove the DIT structure rule from
// the schema.
schema.deregisterDITStructureRule(removeDSR);
@@ -2428,8 +2364,6 @@
}
}
-
-
/**
* Handles all processing required for adding the provided matching rule use
* to the given schema, replacing an existing use if necessary, and ensuring
@@ -2482,7 +2416,6 @@
}
}
-
// Get the matching rule for the new matching rule use and see if there's
// already an existing matching rule use that is associated with that
// matching rule. If there is, then it will only be acceptable if it's the
@@ -2506,7 +2439,6 @@
throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message);
}
-
// Make sure that the new matching rule use doesn't reference an undefined
// attribute type.
for (AttributeType at : matchingRuleUse.getAttributes())
@@ -2525,7 +2457,6 @@
}
}
-
// If there is no existing matching rule use, then we're adding a new one.
// Otherwise, we're replacing an existing matching rule use.
if (existingMRU == null)
@@ -2543,8 +2474,6 @@
}
}
-
-
/**
* Handles all processing required to remove the provided matching rule use
* from the server schema, ensuring all other metadata is properly updated.
@@ -2583,7 +2512,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
// Since matching rule uses don't have any dependencies, then we don't need
// to worry about the difference between a remove or a replace. We can
// just remove the DIT content rule now, and if it is added back later then
@@ -2661,8 +2589,6 @@
}
}
-
-
/** Gets rid of the ldap syntax description. */
private void removeLdapSyntaxDescription(String definition, Schema schema, Set<String> modifiedSchemaFiles)
throws DirectoryException
@@ -2692,8 +2618,6 @@
}
}
-
-
/**
* Creates an empty entry that may be used as the basis for a new schema file.
*
@@ -2721,9 +2645,6 @@
return new Entry(dn, objectClasses, userAttributes, operationalAttributes);
}
-
-
-
/**
* Writes a temporary version of the specified schema file.
*
@@ -2790,7 +2711,6 @@
schemaEntry.putAttribute(attributeTypesType, newArrayList(builder.toAttribute()));
}
-
// Add all of the appropriate objectclasses to the schema entry. We need
// to be careful of the ordering to ensure that any superior classes in the
// same file are written before the subordinate classes.
@@ -2812,7 +2732,6 @@
schemaEntry.putAttribute(objectClassesType, newArrayList(builder.toAttribute()));
}
-
// Add all of the appropriate name forms to the schema entry. Since there
// is no hierarchical relationship between name forms, we don't need to
// worry about ordering.
@@ -2835,7 +2754,6 @@
schemaEntry.putAttribute(nameFormsType, newArrayList(builder.toAttribute()));
}
-
// Add all of the appropriate DIT content rules to the schema entry. Since
// there is no hierarchical relationship between DIT content rules, we don't
// need to worry about ordering.
@@ -2855,7 +2773,6 @@
schemaEntry.putAttribute(ditContentRulesType, newArrayList(builder.toAttribute()));
}
-
// Add all of the appropriate DIT structure rules to the schema entry. We
// need to be careful of the ordering to ensure that any superior rules in
// the same file are written before the subordinate rules.
@@ -2877,7 +2794,6 @@
schemaEntry.putAttribute(ditStructureRulesType, newArrayList(builder.toAttribute()));
}
-
// Add all of the appropriate matching rule uses to the schema entry. Since
// there is no hierarchical relationship between matching rule uses, we
// don't need to worry about ordering.
@@ -2897,7 +2813,6 @@
schemaEntry.putAttribute(matchingRuleUsesType, newArrayList(builder.toAttribute()));
}
-
if (FILE_USER_SCHEMA_ELEMENTS.equals(schemaFile))
{
Map<String, Attribute> attributes = schema.getExtraAttributes();
@@ -2913,15 +2828,14 @@
LDIFExportConfig exportConfig =
new LDIFExportConfig(tempFile.getAbsolutePath(),
ExistingFileBehavior.OVERWRITE);
- LDIFWriter ldifWriter = new LDIFWriter(exportConfig);
- ldifWriter.writeEntry(schemaEntry);
- ldifWriter.close();
+ try (LDIFWriter ldifWriter = new LDIFWriter(exportConfig))
+ {
+ ldifWriter.writeEntry(schemaEntry);
+ }
return tempFile;
}
-
-
/**
* Adds the definition for the specified attribute type to the provided set of
* attribute values, recursively adding superior types as appropriate.
@@ -2970,8 +2884,6 @@
addedTypes.add(attributeType);
}
-
-
/**
* Adds the definition for the specified objectclass to the provided set of
* attribute values, recursively adding superior classes as appropriate.
@@ -3020,8 +2932,6 @@
addedClasses.add(objectClass);
}
-
-
/**
* Adds the definition for the specified DIT structure rule to the provided
* set of attribute values, recursively adding superior rules as appropriate.
@@ -3070,8 +2980,6 @@
addedDSRs.add(ditStructureRule);
}
-
-
/**
* Moves the specified temporary schema files in place of the active versions.
* If an error occurs in the process, then this method will attempt to restore
@@ -3102,7 +3010,6 @@
origFileList.add(new File(schemaInstanceDir, name + ".orig"));
}
-
// If there are any old ".orig" files laying around from a previous
// attempt, then try to clean them up.
for (File f : origFileList)
@@ -3113,7 +3020,6 @@
}
}
-
// Copy all of the currently-installed files with a ".orig" extension. If
// this fails, then try to clean up the copies.
try
@@ -3167,7 +3073,6 @@
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, e);
}
-
// Try to copy all of the temporary files into place over the installed
// files. If this fails, then try to restore the originals.
try
@@ -3247,8 +3152,6 @@
}
}
-
-
/**
* Creates a copy of the specified file.
*
@@ -3259,14 +3162,10 @@
*/
private void copyFile(File from, File to) throws IOException
{
- byte[] buffer = new byte[4096];
- FileInputStream inputStream = null;
- FileOutputStream outputStream = null;
- try
+ try (FileInputStream inputStream = new FileInputStream(from);
+ FileOutputStream outputStream = new FileOutputStream(to, false))
{
- inputStream = new FileInputStream(from);
- outputStream = new FileOutputStream(to, false);
-
+ byte[] buffer = new byte[4096];
int bytesRead = inputStream.read(buffer);
while (bytesRead > 0)
{
@@ -3274,14 +3173,8 @@
bytesRead = inputStream.read(buffer);
}
}
- finally
- {
- close(inputStream, outputStream);
- }
}
-
-
/**
* Performs any necessary cleanup in an attempt to delete any temporary schema
* files that may have been left over after trying to install the new schema.
@@ -3332,7 +3225,6 @@
matchedDN, null);
}
-
// If it's a onelevel or subordinate subtree search, then we will never
// match anything since there isn't anything below the schema.
SearchScope scope = searchOperation.getScope();
@@ -3342,7 +3234,6 @@
return;
}
-
// Get the schema entry and see if it matches the filter. If so, then send
// it to the client.
Entry schemaEntry = getSchemaEntry(baseDN, false);
@@ -3385,7 +3276,6 @@
message);
}
-
// Write the root schema entry to it. Make sure to close the LDIF
// writer when we're done.
try
@@ -3429,19 +3319,7 @@
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
{
- LDIFReader reader;
- try
- {
- reader = new LDIFReader(importConfig);
- }
- catch (Exception e)
- {
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_READER.get(e), e);
- }
-
-
- try
+ try (LDIFReader reader = newLDIFReader(importConfig))
{
while (true)
{
@@ -3481,12 +3359,20 @@
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
ERR_MEMORYBACKEND_ERROR_DURING_IMPORT.get(e), e);
}
- finally
- {
- close(reader);
- }
}
+ private LDIFReader newLDIFReader(LDIFImportConfig importConfig) throws DirectoryException
+ {
+ try
+ {
+ return new LDIFReader(importConfig);
+ }
+ catch (Exception e)
+ {
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
+ ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_READER.get(e), e);
+ }
+ }
/**
* Import an entry in a new schema by :
@@ -3689,7 +3575,6 @@
{
final ConfigChangeResult ccr = new ConfigChangeResult();
-
// Check to see if we should apply a new set of base DNs.
Set<DN> newBaseDNs;
try
@@ -3710,12 +3595,10 @@
newBaseDNs = null;
}
-
// Check to see if we should change the behavior regarding whether to show
// all schema attributes.
boolean newShowAllAttributes = backendCfg.isShowAllAttributes();
-
// Check to see if there is a new set of user-defined attributes.
ArrayList<Attribute> newUserAttrs = new ArrayList<>();
try
@@ -3753,7 +3636,6 @@
ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
}
-
if (ccr.getResultCode() == ResultCode.SUCCESS)
{
// Determine the set of DNs to add and delete. When this is done, the
@@ -3802,22 +3684,17 @@
}
}
-
showAllAttributes = newShowAllAttributes;
-
userDefinedAttributes = newUserAttrs;
LocalizableMessage message = INFO_SCHEMA_USING_NEW_USER_ATTRS.get();
ccr.addMessage(message);
}
-
currentConfig = backendCfg;
return ccr;
}
-
-
/**
* Indicates whether to treat common schema attributes like user attributes
* rather than operational attributes.
@@ -3830,8 +3707,6 @@
return showAllAttributes;
}
-
-
/**
* Specifies whether to treat common schema attributes like user attributes
* rather than operational attributes.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
index 8013a55..d4d0cba 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/TrustStoreBackend.java
@@ -101,31 +101,23 @@
{
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-
/** The current configuration state. */
private TrustStoreBackendCfg configuration;
-
/** The set of base DNs for this backend. */
private SortedSet<DN> baseDNs;
-
/** The base entry. */
private Entry baseEntry;
/** The PIN needed to access the trust store backing file. */
private char[] trustStorePIN;
-
/** The path to the trust store backing file. */
private String trustStoreFile;
-
/** The type of trust store backing file to use. */
private String trustStoreType;
/** The certificate manager for the trust store. */
private CertificateManager certificateManager;
-
-
/**
* Creates a new backend. All backend
* implementations must implement a default constructor that use
@@ -185,109 +177,8 @@
trustStoreType, configEntryDN, getExceptionMessage(kse)));
}
+ trustStorePIN = getTrustStorePIN(configEntryDN);
- // Get the PIN needed to access the contents of the trust store file. We
- // will offer several places to look for the PIN, and we will do so in the
- // following order:
- // - In a specified Java property
- // - In a specified environment variable
- // - In a specified file on the server filesystem.
- // - As the value of a configuration attribute.
- // In any case, the PIN must be in the clear. If no PIN is provided, then
- // it will be assumed that none is required to access the information in the
- // trust store.
- String pinProperty = configuration.getTrustStorePinProperty();
- if (pinProperty == null)
- {
- String pinEnVar = configuration.getTrustStorePinEnvironmentVariable();
- if (pinEnVar == null)
- {
- String pinFilePath = configuration.getTrustStorePinFile();
- if (pinFilePath == null)
- {
- String pinStr = configuration.getTrustStorePin();
- if (pinStr == null)
- {
- // This should be an Error. Otherwise, programs fails.
- // Is there a Unit Test?
- trustStorePIN = null;
- }
- else
- {
- trustStorePIN = pinStr.toCharArray();
- }
- }
- else
- {
- File pinFile = getFileForPath(pinFilePath);
- if (! pinFile.exists())
- {
- try
- {
- // Generate a PIN.
- trustStorePIN = createKeystorePassword();
-
- // Store the PIN in the pin file.
- createPINFile(pinFile.getPath(), new String(trustStorePIN));
- }
- catch (Exception e)
- {
- throw new InitializationException(
- ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(pinFilePath, configEntryDN));
- }
- }
- else
- {
- String pinStr;
-
- BufferedReader br = null;
- try
- {
- br = new BufferedReader(new FileReader(pinFile));
- pinStr = br.readLine();
- }
- catch (IOException ioe)
- {
- LocalizableMessage message = ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.
- get(pinFilePath, configEntryDN, getExceptionMessage(ioe));
- throw new InitializationException(message, ioe);
- }
- finally
- {
- close(br);
- }
-
- if (pinStr == null)
- {
- throw new InitializationException(
- ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(pinFilePath, configEntryDN));
- }
- trustStorePIN = pinStr.toCharArray();
- }
- }
- }
- else
- {
- String pinStr = System.getenv(pinEnVar);
- if (pinStr == null)
- {
- throw new InitializationException(
- ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinProperty, configEntryDN));
- }
- trustStorePIN = pinStr.toCharArray();
- }
- }
- else
- {
- String pinStr = System.getProperty(pinProperty);
- if (pinStr == null)
- {
- throw new InitializationException(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProperty, configEntryDN));
- }
- trustStorePIN = pinStr.toCharArray();
- }
-
- // Create a certificate manager.
certificateManager =
new CertificateManager(getFileForPath(trustStoreFile).getPath(),
trustStoreType,
@@ -316,7 +207,6 @@
// Register this as a change listener.
configuration.addTrustStoreChangeListener(this);
-
// Register the trust store base as a private suffix.
try
{
@@ -329,7 +219,74 @@
}
}
- /** {@inheritDoc} */
+ /**
+ * Get the PIN needed to access the contents of the trust store file. We will offer several places
+ * to look for the PIN, and we will do so in the following order:
+ * <ol>
+ * <li>In a specified Java property</li>
+ * <li>In a specified environment variable</li>
+ * <li>In a specified file on the server filesystem</li>
+ * <li>As the value of a configuration attribute</li>
+ * </ol>
+ * In any case, the PIN must be in the clear. If no PIN is provided, then it will be assumed that
+ * none is required to access the information in the trust store.
+ */
+ private char[] getTrustStorePIN(DN configEntryDN) throws InitializationException
+ {
+ final String pinProperty = configuration.getTrustStorePinProperty();
+ if (pinProperty != null)
+ {
+ String pinStr = System.getProperty(pinProperty);
+ if (pinStr == null)
+ {
+ throw new InitializationException(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProperty, configEntryDN));
+ }
+ return pinStr.toCharArray();
+ }
+
+ final String pinEnVar = configuration.getTrustStorePinEnvironmentVariable();
+ if (pinEnVar != null)
+ {
+ String pinStr = System.getenv(pinEnVar);
+ if (pinStr == null)
+ {
+ throw new InitializationException(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinProperty, configEntryDN));
+ }
+ return pinStr.toCharArray();
+ }
+
+ final String pinFilePath = configuration.getTrustStorePinFile();
+ if (pinFilePath != null)
+ {
+ File pinFile = getFileForPath(pinFilePath);
+ if (pinFile.exists())
+ {
+ String pinStr = readPinFromFile(pinFile, configEntryDN);
+ if (pinStr == null)
+ {
+ throw new InitializationException(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(pinFilePath, configEntryDN));
+ }
+ return pinStr.toCharArray();
+ }
+
+ try
+ {
+ // Generate and store the PIN in the pin file.
+ final char[] trustStorePIN = createKeystorePassword();
+ createPINFile(pinFile.getPath(), new String(trustStorePIN));
+ return trustStorePIN;
+ }
+ catch (Exception e)
+ {
+ throw new InitializationException(ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(pinFilePath, configEntryDN));
+ }
+ }
+
+ String pinStr = configuration.getTrustStorePin();
+ // else branch should be an Error. Otherwise, programs fails. Is there a Unit Test?
+ return pinStr != null ? pinStr.toCharArray() : null;
+ }
+
@Override
public void closeBackend()
{
@@ -372,7 +329,6 @@
return numEntries;
}
- /** {@inheritDoc} */
@Override
public boolean isIndexed(AttributeType attributeType, IndexType indexType)
{
@@ -380,7 +336,6 @@
return true;
}
- /** {@inheritDoc} */
@Override
public Entry getEntry(DN entryDN) throws DirectoryException
{
@@ -391,14 +346,12 @@
ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID()));
}
-
// If the requested entry was the backend base entry, then retrieve it.
if (entryDN.equals(getBaseDN()))
{
return baseEntry.duplicate(true);
}
-
// See if the requested entry was one level below the backend base entry.
// If so, then it must point to a trust store entry.
DN parentDN = DirectoryServer.getParentDNInSuffix(entryDN);
@@ -416,8 +369,6 @@
return null;
}
-
-
/**
* Generates an entry for a certificate based on the provided DN. The
* DN must contain an RDN component that specifies the alias of the
@@ -476,20 +427,17 @@
userAttrs.put(t, Attributes.createAsList(t, v));
-
t = DirectoryServer.getAttributeType(ATTR_CRYPTO_PUBLIC_KEY_CERTIFICATE);
AttributeBuilder builder = new AttributeBuilder(t);
builder.setOption("binary");
builder.add(certValue);
userAttrs.put(t, builder.toAttributeList());
-
Entry e = new Entry(entryDN, ocMap, userAttrs, opAttrs);
e.processVirtualAttributes();
return e;
}
- /** {@inheritDoc} */
@Override
public void addEntry(Entry entry, AddOperation addOperation)
throws DirectoryException
@@ -520,7 +468,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
throws DirectoryException
@@ -541,7 +488,6 @@
deleteCertificate(entryDN);
}
- /** {@inheritDoc} */
@Override
public void replaceEntry(Entry oldEntry, Entry newEntry,
ModifyOperation modifyOperation) throws DirectoryException
@@ -550,7 +496,6 @@
ERR_BACKEND_MODIFY_NOT_SUPPORTED.get(oldEntry.getName(), getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void renameEntry(DN currentDN, Entry entry,
ModifyDNOperation modifyDNOperation)
@@ -560,7 +505,6 @@
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void search(SearchOperation searchOperation)
throws DirectoryException
@@ -570,7 +514,6 @@
DN baseDN = searchOperation.getBaseDN();
Entry baseEntry = getEntry(baseDN);
-
// Look at the base DN and see if it's the trust store base DN, or a
// trust store entry DN.
SearchScope scope = searchOperation.getScope();
@@ -603,7 +546,7 @@
AttributeType certAliasType = DirectoryServer.getAttributeType(ATTR_CRYPTO_KEY_ID);
for (String alias : aliases)
{
- DN certDN = makeChildDN(this.getBaseDN(), certAliasType, alias);
+ DN certDN = makeChildDN(getBaseDN(), certAliasType, alias);
Entry certEntry;
try
@@ -623,7 +566,7 @@
}
}
}
- else if (this.getBaseDN().equals(DirectoryServer.getParentDNInSuffix(baseDN)))
+ else if (getBaseDN().equals(DirectoryServer.getParentDNInSuffix(baseDN)))
{
Entry certEntry = getCertEntry(baseDN);
@@ -640,28 +583,24 @@
}
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
return false;
}
- /** {@inheritDoc} */
@Override
public void exportLDIF(LDIFExportConfig exportConfig)
throws DirectoryException
@@ -670,7 +609,6 @@
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
@@ -679,7 +617,6 @@
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void createBackup(BackupConfig backupConfig)
throws DirectoryException
@@ -688,7 +625,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory,
String backupID)
@@ -698,7 +634,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig)
throws DirectoryException
@@ -707,7 +642,6 @@
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(DN entryDN)
throws DirectoryException
@@ -716,7 +650,6 @@
ERR_HAS_SUBORDINATES_NOT_SUPPORTED.get());
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException
{
@@ -724,7 +657,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_NUM_SUBORDINATES_NOT_SUPPORTED.get());
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException
{
@@ -732,14 +664,12 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_NUM_SUBORDINATES_NOT_SUPPORTED.get());
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(
TrustStoreBackendCfg configuration, List<LocalizableMessage> unacceptableReasons)
{
- boolean configAcceptable = true;
- DN cfgEntryDN = configuration.dn();
-
+ final ConfigChangeResult ccr = new ConfigChangeResult();
+ final DN cfgEntryDN = configuration.dn();
// Get the path to the trust store file.
String newTrustStoreFile = configuration.getTrustStoreFile();
@@ -748,19 +678,16 @@
File f = getFileForPath(newTrustStoreFile);
if (!f.exists() || !f.isFile())
{
- unacceptableReasons.add(ERR_TRUSTSTORE_NO_SUCH_FILE.get(newTrustStoreFile, cfgEntryDN));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_NO_SUCH_FILE.get(newTrustStoreFile, cfgEntryDN));
}
}
catch (Exception e)
{
logger.traceException(e);
- unacceptableReasons.add(ERR_TRUSTSTORE_CANNOT_DETERMINE_FILE.get(cfgEntryDN, getExceptionMessage(e)));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_CANNOT_DETERMINE_FILE.get(cfgEntryDN, getExceptionMessage(e)));
}
-
// Check to see if the trust store type is acceptable.
String storeType = configuration.getTrustStoreType();
if (storeType != null)
@@ -773,33 +700,26 @@
{
logger.traceException(kse);
- unacceptableReasons.add(ERR_TRUSTSTORE_INVALID_TYPE.get(
- storeType, cfgEntryDN, getExceptionMessage(kse)));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_INVALID_TYPE.get(storeType, cfgEntryDN, getExceptionMessage(kse)));
}
}
-
// If there is a PIN property, then make sure the corresponding
// property is set.
String pinProp = configuration.getTrustStorePinProperty();
if (pinProp != null && System.getProperty(pinProp) == null)
{
- unacceptableReasons.add(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProp, cfgEntryDN));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProp, cfgEntryDN));
}
-
// If there is a PIN environment variable, then make sure the corresponding
// environment variable is set.
String pinEnVar = configuration.getTrustStorePinEnvironmentVariable();
if (pinEnVar != null && System.getenv(pinEnVar) == null)
{
- unacceptableReasons.add(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinEnVar, cfgEntryDN));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinEnVar, cfgEntryDN));
}
-
// If there is a PIN file, then make sure the file is readable if it exists.
String pinFile = configuration.getTrustStorePinFile();
if (pinFile != null)
@@ -807,38 +727,19 @@
File f = new File(pinFile);
if (f.exists())
{
- String pinStr = null;
-
- BufferedReader br = null;
- try
- {
- br = new BufferedReader(new FileReader(pinFile));
- pinStr = br.readLine();
- }
- catch (IOException ioe)
- {
- unacceptableReasons.add(ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(
- pinFile, cfgEntryDN, getExceptionMessage(ioe)));
- configAcceptable = false;
- }
- finally
- {
- close(br);
- }
-
+ String pinStr = readPinFromFile2(f, cfgEntryDN, ccr);
if (pinStr == null)
{
- unacceptableReasons.add(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(pinFile, cfgEntryDN));
- configAcceptable = false;
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(pinFile, cfgEntryDN));
}
}
}
-
- return configAcceptable;
+ final List<LocalizableMessage> messages = ccr.getMessages();
+ unacceptableReasons.addAll(messages);
+ return messages.isEmpty();
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(TrustStoreBackendCfg cfg)
{
@@ -854,7 +755,6 @@
ccr.addMessage(ERR_TRUSTSTORE_NO_SUCH_FILE.get(newTrustStoreFile, configEntryDN));
}
-
// Get the trust store type. If none is specified, then use the default
// type.
String newTrustStoreType = cfg.getTrustStoreType();
@@ -875,117 +775,7 @@
ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
}
-
- // Get the PIN needed to access the contents of the trust store file. We
- // will offer several places to look for the PIN, and we will do so in the
- // following order:
- // - In a specified Java property
- // - In a specified environment variable
- // - In a specified file on the server filesystem.
- // - As the value of a configuration attribute.
- // In any case, the PIN must be in the clear. If no PIN is provided, then
- // it will be assumed that none is required to access the information in the
- // trust store.
- char[] newPIN = null;
- String newPINProperty = cfg.getTrustStorePinProperty();
- if (newPINProperty == null)
- {
- String newPINEnVar = cfg.getTrustStorePinEnvironmentVariable();
- if (newPINEnVar == null)
- {
- String newPINFile = cfg.getTrustStorePinFile();
- if (newPINFile == null)
- {
- String pinStr = cfg.getTrustStorePin();
- if (pinStr == null)
- {
- newPIN = null;
- }
- else
- {
- newPIN = pinStr.toCharArray();
- }
- }
- else
- {
- File pinFile = getFileForPath(newPINFile);
- if (! pinFile.exists())
- {
- try
- {
- // Generate a PIN.
- newPIN = createKeystorePassword();
-
- // Store the PIN in the pin file.
- createPINFile(pinFile.getPath(), new String(newPIN));
- }
- catch (Exception e)
- {
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
- ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(newPINFile, configEntryDN));
- }
- }
- else
- {
- String pinStr = null;
-
- BufferedReader br = null;
- try
- {
- br = new BufferedReader(new FileReader(pinFile));
- pinStr = br.readLine();
- }
- catch (IOException ioe)
- {
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
- ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(
- newPINFile, configEntryDN, getExceptionMessage(ioe)));
- }
- finally
- {
- close(br);
- }
-
- if (pinStr == null)
- {
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
- ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(newPINFile, configEntryDN));
- }
- else
- {
- newPIN = pinStr.toCharArray();
- }
- }
- }
- }
- else
- {
- String pinStr = System.getenv(newPINEnVar);
- if (pinStr == null)
- {
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
- ccr.addMessage(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(newPINEnVar, configEntryDN));
- }
- else
- {
- newPIN = pinStr.toCharArray();
- }
- }
- }
- else
- {
- String pinStr = System.getProperty(newPINProperty);
- if (pinStr == null)
- {
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
- ccr.addMessage(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(newPINProperty, configEntryDN));
- }
- else
- {
- newPIN = pinStr.toCharArray();
- }
- }
-
+ char[] newPIN = getTrustStorePIN2(cfg, ccr);
if (ccr.getResultCode() == ResultCode.SUCCESS)
{
@@ -1003,6 +793,123 @@
}
/**
+ * Get the PIN needed to access the contents of the trust store file. We will offer several places
+ * to look for the PIN, and we will do so in the following order:
+ * <ol>
+ * <li>In a specified Java property</li>
+ * <li>In a specified environment variable</li>
+ * <li>In a specified file on the server filesystem.</li>
+ * <li>As the value of a configuration attribute.</li>
+ * </ol>
+ * In any case, the PIN must be in the clear. If no PIN is provided, then it will be assumed that
+ * none is required to access the information in the trust store.
+ */
+ private char[] getTrustStorePIN2(TrustStoreBackendCfg cfg, ConfigChangeResult ccr)
+ {
+ String newPINProperty = cfg.getTrustStorePinProperty();
+ if (newPINProperty == null)
+ {
+ String newPINEnVar = cfg.getTrustStorePinEnvironmentVariable();
+ if (newPINEnVar == null)
+ {
+ String newPINFile = cfg.getTrustStorePinFile();
+ if (newPINFile == null)
+ {
+ String pinStr = cfg.getTrustStorePin();
+ return pinStr != null ? pinStr.toCharArray() : null;
+ }
+ else
+ {
+ File pinFile = getFileForPath(newPINFile);
+ if (! pinFile.exists())
+ {
+ try
+ {
+ // Generate and store a PIN in the pin file.
+ final char[] newPIN = createKeystorePassword();
+ createPINFile(pinFile.getPath(), new String(newPIN));
+ return newPIN;
+ }
+ catch (Exception e)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE.get(newPINFile, cfg.dn()));
+ }
+ }
+ else
+ {
+ String pinStr = readPinFromFile2(pinFile, cfg.dn(), ccr);
+ if (pinStr == null)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_EMPTY.get(newPINFile, cfg.dn()));
+ }
+ else
+ {
+ return pinStr.toCharArray();
+ }
+ }
+ }
+ }
+ else
+ {
+ String pinStr = System.getenv(newPINEnVar);
+ if (pinStr == null)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(newPINEnVar, cfg.dn()));
+ }
+ else
+ {
+ return pinStr.toCharArray();
+ }
+ }
+ }
+ else
+ {
+ String pinStr = System.getProperty(newPINProperty);
+ if (pinStr == null)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(newPINProperty, cfg.dn()));
+ }
+ else
+ {
+ return pinStr.toCharArray();
+ }
+ }
+ return null;
+ }
+
+ private String readPinFromFile(File pinFile, DN cfgEntryDN) throws InitializationException
+ {
+ try (BufferedReader br = new BufferedReader(new FileReader(pinFile)))
+ {
+ return br.readLine();
+ }
+ catch (IOException ioe)
+ {
+ LocalizableMessage message =
+ ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(pinFile, cfgEntryDN, getExceptionMessage(ioe));
+ throw new InitializationException(message, ioe);
+ }
+ }
+
+ private String readPinFromFile2(File pinFile, DN cfgEntryDN, ConfigChangeResult ccr)
+ {
+ try (BufferedReader br = new BufferedReader(new FileReader(pinFile)))
+ {
+ return br.readLine();
+ }
+ catch (IOException ioe)
+ {
+ ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.addMessage(ERR_TRUSTSTORE_PIN_FILE_CANNOT_READ.get(pinFile, cfgEntryDN, getExceptionMessage(ioe)));
+ return null;
+ }
+ }
+
+ /**
* Create a new child DN from a given parent DN. The child RDN is formed
* from a given attribute type and string value.
* @param parentDN The DN of the parent.
@@ -1017,7 +924,6 @@
return parentDN.child(new RDN(rdnAttrType, attrValue));
}
-
/**
* Retrieves a set of <CODE>KeyManager</CODE> objects that may be used for
* interactions requiring access to a key manager.
@@ -1031,19 +937,7 @@
public KeyManager[] getKeyManagers()
throws DirectoryException
{
- final KeyStore keyStore;
- try (final FileInputStream inputStream = new FileInputStream(getFileForPath(trustStoreFile)))
- {
- keyStore = KeyStore.getInstance(trustStoreType);
- keyStore.load(inputStream, trustStorePIN);
- }
- catch (Exception e)
- {
- LocalizableMessage message = ERR_TRUSTSTORE_CANNOT_LOAD.get(
- trustStoreFile, getExceptionMessage(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- message, e);
- }
+ final KeyStore keyStore = loadKeyStore();
try
{
@@ -1064,6 +958,20 @@
}
}
+ private KeyStore loadKeyStore() throws DirectoryException
+ {
+ try (FileInputStream inputStream = new FileInputStream(getFileForPath(trustStoreFile)))
+ {
+ final KeyStore keyStore = KeyStore.getInstance(trustStoreType);
+ keyStore.load(inputStream, trustStorePIN);
+ return keyStore;
+ }
+ catch (Exception e)
+ {
+ LocalizableMessage message = ERR_TRUSTSTORE_CANNOT_LOAD.get(trustStoreFile, getExceptionMessage(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, e);
+ }
+ }
/**
* Retrieves a set of {@code TrustManager} objects that may be used
@@ -1078,30 +986,7 @@
public TrustManager[] getTrustManagers()
throws DirectoryException
{
- KeyStore trustStore;
- FileInputStream inputStream = null;
- try
- {
- trustStore = KeyStore.getInstance(trustStoreType);
-
- inputStream =
- new FileInputStream(getFileForPath(trustStoreFile));
- trustStore.load(inputStream, trustStorePIN);
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage message = ERR_TRUSTSTORE_CANNOT_LOAD.get(
- trustStoreFile, getExceptionMessage(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- message, e);
- }
- finally
- {
- close(inputStream);
- }
-
+ KeyStore trustStore = loadKeyStore();
try
{
@@ -1122,7 +1007,6 @@
}
}
-
/**
* Returns the key associated with the given alias, using the trust
* store pin to recover it.
@@ -1137,29 +1021,7 @@
public Key getKey(String alias)
throws DirectoryException
{
- KeyStore trustStore;
- FileInputStream inputStream = null;
- try
- {
- trustStore = KeyStore.getInstance(trustStoreType);
-
- inputStream =
- new FileInputStream(getFileForPath(trustStoreFile));
- trustStore.load(inputStream, trustStorePIN);
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage message = ERR_TRUSTSTORE_CANNOT_LOAD.get(
- trustStoreFile, getExceptionMessage(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- message, e);
- }
- finally
- {
- close(inputStream);
- }
+ KeyStore trustStore = loadKeyStore();
try
{
@@ -1176,7 +1038,6 @@
}
}
-
private void addCertificate(Entry entry)
throws DirectoryException
{
@@ -1268,16 +1129,10 @@
certAlias, tempDir);
try
{
- FileOutputStream outputStream =
- new FileOutputStream(tempFile.getPath(), false);
- try
+ try (FileOutputStream outputStream = new FileOutputStream(tempFile.getPath(), false))
{
certBytes.copyTo(outputStream);
}
- finally
- {
- outputStream.close();
- }
certificateManager.addCertificate(certAlias, tempFile);
}
@@ -1302,10 +1157,8 @@
throw new DirectoryException(
DirectoryServer.getServerErrorResultCode(), message, e);
}
-
}
-
private void deleteCertificate(DN entryDN)
throws DirectoryException
{
@@ -1338,7 +1191,6 @@
}
}
-
/**
* Returns the validity period to be used to generate the ADS certificate.
* @return The validity period to be used to generate the ADS certificate.
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
index 50b5c6b..6833762 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -163,7 +163,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void configureBackend(C cfg, ServerContext serverContext) throws ConfigException
{
@@ -175,7 +174,6 @@
storage = new TracedStorage(configureStorage(cfg, serverContext), cfg.getBackendId());
}
- /** {@inheritDoc} */
@Override
public void openBackend() throws ConfigException, InitializationException
{
@@ -218,7 +216,6 @@
cfg.addPluggableChangeListener(this);
}
- /** {@inheritDoc} */
@Override
public void closeBackend()
{
@@ -279,7 +276,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
@@ -295,14 +291,12 @@
}
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
@@ -315,7 +309,6 @@
return baseDNs;
}
- /** {@inheritDoc} */
@Override
public long getEntryCount()
{
@@ -333,7 +326,6 @@
return -1;
}
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException
{
@@ -366,7 +358,6 @@
}
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException
{
@@ -389,7 +380,6 @@
}
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException
{
@@ -428,7 +418,6 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean entryExists(final DN entryDN) throws DirectoryException
{
@@ -449,7 +438,6 @@
}
}
- /** {@inheritDoc} */
@Override
public Entry getEntry(DN entryDN) throws DirectoryException
{
@@ -470,7 +458,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException, CanceledOperationException
{
@@ -492,7 +479,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
throws DirectoryException, CanceledOperationException
@@ -515,7 +501,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation)
throws DirectoryException, CanceledOperationException
@@ -539,7 +524,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation)
throws DirectoryException, CanceledOperationException
@@ -571,7 +555,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void search(SearchOperation searchOperation) throws DirectoryException, CanceledOperationException
{
@@ -603,7 +586,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void exportLDIF(LDIFExportConfig exportConfig)
throws DirectoryException
@@ -644,7 +626,6 @@
return rootContainer == null;
}
- /** {@inheritDoc} */
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext)
throws DirectoryException
@@ -721,7 +702,6 @@
return new OnDiskMergeImporter.StrategyImpl(serverContext, rootContainer, cfg);
}
- /** {@inheritDoc} */
@Override
public long verifyBackend(VerifyConfig verifyConfig)
throws InitializationException, ConfigException, DirectoryException
@@ -767,7 +747,6 @@
}
}
- /** {@inheritDoc} */
@Override
public void rebuildBackend(RebuildConfig rebuildConfig, ServerContext serverContext)
throws InitializationException, ConfigException, DirectoryException
@@ -824,14 +803,12 @@
}
}
- /** {@inheritDoc} */
@Override
public void createBackup(BackupConfig backupConfig) throws DirectoryException
{
storage.createBackup(backupConfig);
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory, String backupID)
throws DirectoryException
@@ -839,7 +816,6 @@
storage.removeBackup(backupDirectory, backupID);
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException
{
@@ -860,7 +836,6 @@
*/
protected abstract Storage configureStorage(C cfg, ServerContext serverContext) throws ConfigException;
- /** {@inheritDoc} */
@Override
public boolean isConfigurationAcceptable(C config, List<LocalizableMessage> unacceptableReasons,
ServerContext serverContext)
@@ -868,14 +843,12 @@
return isConfigurationChangeAcceptable(config, unacceptableReasons);
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(PluggableBackendCfg cfg, List<LocalizableMessage> unacceptableReasons)
{
return true;
}
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(final PluggableBackendCfg newCfg)
{
@@ -1020,5 +993,4 @@
throw new InitializationException(ERR_OPEN_ENV_FAIL.get(e.getMessage()), e);
}
}
-
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendMonitor.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendMonitor.java
index 2d4e19c..5803a83 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendMonitor.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendMonitor.java
@@ -25,8 +25,8 @@
import java.util.concurrent.atomic.AtomicInteger;
import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.api.MonitorData;
import org.forgerock.opendj.server.config.server.MonitorProviderCfg;
+import org.opends.server.api.MonitorData;
import org.opends.server.api.MonitorProvider;
import org.opends.server.types.SearchFilter;
import org.opends.server.util.TimeThread;
@@ -105,7 +105,7 @@
MonitorData monitorAttrs = new MonitorData(5);
Collection<String> needReindexValues = createNeedReindexValues();
- if (needReindexValues.size() > 0)
+ if (!needReindexValues.isEmpty())
{
monitorAttrs.add("need-reindex", needReindexValues);
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
index e1edd45..3a8d2ee 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/task/TaskBackend.java
@@ -36,6 +36,7 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.config.server.ConfigChangeResult;
import org.forgerock.opendj.config.server.ConfigException;
+import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.DN;
@@ -43,9 +44,8 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.AttributeType;
-import org.forgerock.util.Reject;
-import org.forgerock.opendj.config.server.ConfigurationChangeListener;
import org.forgerock.opendj.server.config.server.TaskBackendCfg;
+import org.forgerock.util.Reject;
import org.opends.server.api.Backend;
import org.opends.server.api.Backupable;
import org.opends.server.core.AddOperation;
@@ -85,29 +85,17 @@
extends Backend<TaskBackendCfg>
implements ConfigurationChangeListener<TaskBackendCfg>, Backupable
{
-
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
-
/** The current configuration state. */
private TaskBackendCfg currentConfig;
-
/** The DN of the configuration entry for this backend. */
private DN configEntryDN;
- /**
- * The DN of the entry that will serve as the parent for all recurring task
- * entries.
- */
+ /** The DN of the entry that will serve as the parent for all recurring task entries. */
private DN recurringTaskParentDN;
-
- /**
- * The DN of the entry that will serve as the parent for all scheduled task
- * entries.
- */
+ /** The DN of the entry that will serve as the parent for all scheduled task entries. */
private DN scheduledTaskParentDN;
-
/** The DN of the entry that will serve as the root for all task entries. */
private DN taskRootDN;
@@ -125,11 +113,7 @@
/** The path to the task backing file. */
private String taskBackingFile;
-
- /**
- * The task scheduler that will be responsible for actually invoking scheduled
- * tasks.
- */
+ /** The task scheduler that will be responsible for actually invoking scheduled tasks. */
private TaskScheduler taskScheduler;
private ServerContext serverContext;
@@ -146,8 +130,6 @@
// Perform all initialization in initializeBackend.
}
-
-
@Override
public void configureBackend(TaskBackendCfg cfg, ServerContext serverContext) throws ConfigException
{
@@ -206,12 +188,10 @@
}
}
-
// Get the retention time that will be used to determine how long task
// information stays around once the associated task is completed.
retentionTime = cfg.getTaskRetentionTime();
-
// Get the notification sender address.
notificationSenderAddress = cfg.getNotificationSenderAddress();
if (notificationSenderAddress == null)
@@ -227,16 +207,12 @@
}
}
-
// Get the path to the task data backing file.
taskBackingFile = cfg.getTaskBackingFile();
currentConfig = cfg;
}
-
-
- /** {@inheritDoc} */
@Override
public void openBackend()
throws ConfigException, InitializationException
@@ -245,11 +221,9 @@
taskScheduler = new TaskScheduler(serverContext, this);
taskScheduler.start();
-
// Register with the Directory Server as a configurable component.
currentConfig.addTaskChangeListener(this);
-
// Register the task base as a private suffix.
try
{
@@ -265,9 +239,6 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public void closeBackend()
{
@@ -321,9 +292,6 @@
return -1;
}
-
-
- /** {@inheritDoc} */
@Override
public boolean isIndexed(AttributeType attributeType, IndexType indexType)
{
@@ -331,9 +299,6 @@
return true;
}
-
-
- /** {@inheritDoc} */
@Override
public ConditionResult hasSubordinates(DN entryDN)
throws DirectoryException
@@ -346,14 +311,12 @@
return ConditionResult.valueOf(ret != 0);
}
- /** {@inheritDoc} */
@Override
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException {
checkNotNull(baseDN, "baseDN must not be null");
return numSubordinates(baseDN, true) + 1;
}
- /** {@inheritDoc} */
@Override
public long getNumberOfChildren(DN parentDN) throws DirectoryException {
checkNotNull(parentDN, "parentDN must not be null");
@@ -411,9 +374,6 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public Entry getEntry(DN entryDN)
throws DirectoryException
@@ -466,9 +426,6 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public void addEntry(Entry entry, AddOperation addOperation)
throws DirectoryException
@@ -510,9 +467,6 @@
throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
}
-
-
- /** {@inheritDoc} */
@Override
public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
throws DirectoryException
@@ -535,7 +489,6 @@
throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message);
}
-
// Look at the state of the task. We will allow pending and completed
// tasks to be removed, but not running tasks.
TaskState state = t.getTaskState();
@@ -585,9 +538,6 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public void replaceEntry(Entry oldEntry, Entry newEntry,
ModifyOperation modifyOperation) throws DirectoryException
@@ -685,7 +635,7 @@
LocalizableMessage message = INFO_TASKBE_RUNNING_TASK_CANCELLED.get();
t.interruptTask(TaskState.STOPPED_BY_ADMINISTRATOR, message);
}
- return;
+ return;
}
else
{
@@ -720,8 +670,6 @@
}
}
-
-
/**
* Helper to determine if requested modifications are acceptable.
* @param modifyOperation associated with requested modifications.
@@ -765,9 +713,6 @@
return true;
}
-
-
- /** {@inheritDoc} */
@Override
public void renameEntry(DN currentDN, Entry entry,
ModifyDNOperation modifyDNOperation)
@@ -777,9 +722,6 @@
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
}
-
-
- /** {@inheritDoc} */
@Override
public void search(SearchOperation searchOperation)
throws DirectoryException, CanceledOperationException {
@@ -926,7 +868,6 @@
}
}
-
if (searchRoot)
{
Entry e = taskScheduler.getTaskRootEntry();
@@ -936,7 +877,6 @@
}
}
-
if (searchScheduledParent)
{
Entry e = taskScheduler.getScheduledTaskParentEntry();
@@ -946,14 +886,12 @@
}
}
-
if (searchScheduledTasks
&& !taskScheduler.searchScheduledTasks(searchOperation))
{
return;
}
-
if (searchRecurringParent)
{
Entry e = taskScheduler.getRecurringTaskParentEntry();
@@ -963,7 +901,6 @@
}
}
-
if (searchRecurringTasks
&& !taskScheduler.searchRecurringTasks(searchOperation))
{
@@ -971,23 +908,18 @@
}
}
-
-
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedControls()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public Set<String> getSupportedFeatures()
{
return Collections.emptySet();
}
- /** {@inheritDoc} */
@Override
public boolean supports(BackendOperation backendOperation)
{
@@ -1003,44 +935,15 @@
}
}
- /** {@inheritDoc} */
@Override
- public void exportLDIF(LDIFExportConfig exportConfig)
- throws DirectoryException
+ public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException
{
File taskFile = getFileForPath(taskBackingFile);
- // Read from.
- LDIFReader ldifReader;
- try
+ try (LDIFReader ldifReader = newLDIFReader(taskFile);
+ LDIFWriter ldifWriter = newLDIFWriter(exportConfig))
{
- ldifReader = new LDIFReader(new LDIFImportConfig(taskFile.getPath()));
- }
- catch (Exception e)
- {
- LocalizableMessage message = ERR_TASKS_CANNOT_EXPORT_TO_FILE.get(e);
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, e);
- }
-
- // Write to.
- LDIFWriter ldifWriter;
- try
- {
- ldifWriter = new LDIFWriter(exportConfig);
- }
- catch (Exception e)
- {
- logger.traceException(e);
-
- LocalizableMessage message = ERR_TASKS_CANNOT_EXPORT_TO_FILE.get(
- stackTraceToSingleLineString(e));
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
- message);
- }
-
- // Copy record by record.
- try
- {
+ // Copy record by record.
while (true)
{
Entry e = null;
@@ -1054,7 +957,7 @@
}
catch (LDIFException le)
{
- if (! le.canContinueReading())
+ if (!le.canContinueReading())
{
LocalizableMessage message = ERR_TASKS_CANNOT_EXPORT_TO_FILE.get(e);
throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, le);
@@ -1068,13 +971,35 @@
{
logger.traceException(e);
}
- finally
+ }
+
+ private LDIFReader newLDIFReader(File taskFile) throws DirectoryException
+ {
+ try
{
- close(ldifWriter, ldifReader);
+ return new LDIFReader(new LDIFImportConfig(taskFile.getPath()));
+ }
+ catch (Exception e)
+ {
+ LocalizableMessage message = ERR_TASKS_CANNOT_EXPORT_TO_FILE.get(e);
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, e);
}
}
- /** {@inheritDoc} */
+ private LDIFWriter newLDIFWriter(LDIFExportConfig exportConfig) throws DirectoryException
+ {
+ try
+ {
+ return new LDIFWriter(exportConfig);
+ }
+ catch (Exception e)
+ {
+ logger.traceException(e);
+ LocalizableMessage message = ERR_TASKS_CANNOT_EXPORT_TO_FILE.get(stackTraceToSingleLineString(e));
+ throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message);
+ }
+ }
+
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext sContext) throws DirectoryException
{
@@ -1082,28 +1007,24 @@
ERR_BACKEND_IMPORT_NOT_SUPPORTED.get(getBackendID()));
}
- /** {@inheritDoc} */
@Override
public void createBackup(BackupConfig backupConfig) throws DirectoryException
{
new BackupManager(getBackendID()).createBackup(this, backupConfig);
}
- /** {@inheritDoc} */
@Override
public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException
{
new BackupManager(getBackendID()).removeBackup(backupDirectory, backupID);
}
- /** {@inheritDoc} */
@Override
public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException
{
new BackupManager(getBackendID()).restoreBackup(this, restoreConfig);
}
- /** {@inheritDoc} */
@Override
public boolean isConfigurationAcceptable(TaskBackendCfg config,
List<LocalizableMessage> unacceptableReasons,
@@ -1112,9 +1033,6 @@
return isConfigAcceptable(config, unacceptableReasons, null);
}
-
-
- /** {@inheritDoc} */
@Override
public boolean isConfigurationChangeAcceptable(TaskBackendCfg configEntry,
List<LocalizableMessage> unacceptableReasons)
@@ -1123,8 +1041,6 @@
taskBackingFile);
}
-
-
/**
* Indicates whether the provided configuration is acceptable for this task
* backend.
@@ -1146,7 +1062,6 @@
{
boolean configIsAcceptable = true;
-
try
{
String tmpBackingFile = config.getTaskBackingFile();
@@ -1204,15 +1119,11 @@
return configIsAcceptable;
}
-
-
- /** {@inheritDoc} */
@Override
public ConfigChangeResult applyConfigurationChange(TaskBackendCfg configEntry)
{
final ConfigChangeResult ccr = new ConfigChangeResult();
-
String tmpBackingFile = taskBackingFile;
try
{
@@ -1256,10 +1167,8 @@
ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
}
-
long tmpRetentionTime = configEntry.getTaskRetentionTime();
-
if (ccr.getResultCode() == ResultCode.SUCCESS)
{
// Everything looks OK, so apply the changes.
@@ -1270,7 +1179,6 @@
ccr.addMessage(INFO_TASKBE_UPDATED_RETENTION_TIME.get(retentionTime));
}
-
if (! taskBackingFile.equals(tmpBackingFile))
{
taskBackingFile = tmpBackingFile;
@@ -1280,7 +1188,6 @@
}
}
-
String tmpNotificationAddress = configEntry.getNotificationSenderAddress();
if (tmpNotificationAddress == null)
{
@@ -1296,13 +1203,10 @@
}
notificationSenderAddress = tmpNotificationAddress;
-
currentConfig = configEntry;
return ccr;
}
-
-
/**
* Retrieves the DN of the configuration entry for this task backend.
*
@@ -1313,8 +1217,6 @@
return configEntryDN;
}
-
-
/**
* Retrieves the path to the backing file that will hold the scheduled and
* recurring task definitions.
@@ -1328,8 +1230,6 @@
return f.getPath();
}
-
-
/**
* Retrieves the sender address that should be used for e-mail notifications
* of task completion.
@@ -1342,8 +1242,6 @@
return notificationSenderAddress;
}
-
-
/**
* Retrieves the length of time in seconds that information for a task should
* be retained after processing on it has completed.
@@ -1356,8 +1254,6 @@
return retentionTime;
}
-
-
/**
* Retrieves the DN of the entry that is the root for all task information in
* the Directory Server.
@@ -1370,8 +1266,6 @@
return taskRootDN;
}
-
-
/**
* Retrieves the DN of the entry that is the immediate parent for all
* recurring task information in the Directory Server.
@@ -1384,8 +1278,6 @@
return recurringTaskParentDN;
}
-
-
/**
* Retrieves the DN of the entry that is the immediate parent for all
* scheduled task information in the Directory Server.
@@ -1398,8 +1290,6 @@
return scheduledTaskParentDN;
}
-
-
/**
* Retrieves the scheduled task for the entry with the provided DN.
*
@@ -1413,8 +1303,6 @@
return taskScheduler.getScheduledTask(taskEntryDN);
}
-
-
/**
* Retrieves the recurring task for the entry with the provided DN.
*
@@ -1429,9 +1317,6 @@
return taskScheduler.getRecurringTask(taskEntryDN);
}
-
-
- /** {@inheritDoc} */
@Override
public File getDirectory()
{
@@ -1450,21 +1335,18 @@
};
}
- /** {@inheritDoc} */
@Override
public ListIterator<Path> getFilesToBackup() throws DirectoryException
{
return BackupManager.getFiles(getDirectory(), getFilesToBackupFilter(), getBackendID()).listIterator();
}
- /** {@inheritDoc} */
@Override
public boolean isDirectRestore()
{
return true;
}
- /** {@inheritDoc} */
@Override
public Path beforeRestore() throws DirectoryException
{
@@ -1472,13 +1354,10 @@
return BackupManager.saveCurrentFilesToDirectory(this, getBackendID());
}
- /** {@inheritDoc} */
@Override
public void afterRestore(Path restoreDirectory, Path saveDirectory) throws DirectoryException
{
// restore was successful, delete the save directory
StaticUtils.recursiveDelete(saveDirectory.toFile());
}
-
}
-
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
index 17c6d92..3f32052 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ExportTask.java
@@ -58,10 +58,8 @@
*/
public class ExportTask extends Task
{
-
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
-
/** Stores mapping between configuration attribute name and its label. */
private static Map<String,LocalizableMessage> argDisplayMap = new HashMap<>();
static {
@@ -97,19 +95,16 @@
private LDIFExportConfig exportConfig;
- /** {@inheritDoc} */
@Override
public LocalizableMessage getDisplayName() {
return INFO_TASK_EXPORT_NAME.get();
}
- /** {@inheritDoc} */
@Override
public LocalizableMessage getAttributeDisplayName(String name) {
return argDisplayMap.get(name);
}
- /** {@inheritDoc} */
@Override
public void initializeTask() throws DirectoryException
{
@@ -127,7 +122,6 @@
}
}
-
Entry taskEntry = getTaskEntry();
AttributeType typeWrapColumn = getAttributeType(ATTR_TASK_EXPORT_WRAP_COLUMN);
@@ -185,7 +179,6 @@
return TaskUtils.getSingleValueString(attrs);
}
- /** {@inheritDoc} */
@Override
public void interruptTask(TaskState interruptState, LocalizableMessage interruptReason)
{
@@ -199,13 +192,11 @@
}
}
- /** {@inheritDoc} */
@Override
public boolean isInterruptable() {
return true;
}
- /** {@inheritDoc} */
@Override
protected TaskState runTask()
{
@@ -308,7 +299,6 @@
}
}
-
ArrayList<DN> includeBranches;
if (!includeBranchStrings.isEmpty())
{
@@ -341,7 +331,6 @@
includeBranches = defaultIncludeBranches;
}
-
// Create the LDIF export configuration to use when reading the LDIF.
ExistingFileBehavior existingBehavior;
if (appendToLDIF)
@@ -369,12 +358,10 @@
// FIXME -- Should this be conditional?
exportConfig.setInvokeExportPlugins(true);
-
// Get the set of base DNs for the backend as an array.
DN[] baseDNs = new DN[defaultIncludeBranches.size()];
defaultIncludeBranches.toArray(baseDNs);
-
// From here we must make sure we close the export config.
try
{
@@ -395,7 +382,6 @@
return TaskState.STOPPED_BY_ERROR;
}
-
// From here we must make sure we release the shared backend lock.
try
{
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
index e8b9fb1..e46a679 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tasks/ImportTask.java
@@ -85,7 +85,6 @@
argDisplayMap.put(ATTR_IMPORT_CLEAR_BACKEND, INFO_IMPORT_ARG_CLEAR_BACKEND.get());
}
-
private boolean isCompressed;
private boolean isEncrypted;
private boolean overwrite;
@@ -134,7 +133,6 @@
}
}
-
Entry taskEntry = getTaskEntry();
AttributeType typeLdifFile = getAttributeType(ATTR_IMPORT_LDIF_FILE);
@@ -423,7 +421,6 @@
}
}
-
// Get the backend into which the LDIF should be imported.
Backend<?> backend = null;
HashSet<DN> defaultIncludeBranches;
@@ -645,7 +642,6 @@
return TaskState.STOPPED_BY_ERROR;
}
-
try
{
// Acquire an exclusive lock for the backend.
@@ -667,7 +663,6 @@
return TaskState.STOPPED_BY_ERROR;
}
-
// Launch the import.
try
{
@@ -718,7 +713,6 @@
logger.warn(WARN_LDIFIMPORT_CANNOT_UNLOCK_BACKEND, backend.getBackendID(), getExceptionMessage(e));
return TaskState.COMPLETED_WITH_ERRORS;
}
-
}
}
finally
@@ -742,7 +736,6 @@
DirectoryServer.notifyImportEnded(backend, importConfig, true);
}
-
// Clean up after the import by closing the import config.
importConfig.close();
return getFinalTaskState();
--
Gitblit v1.10.0