mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
19.55.2014 6879d04bd633e99ef7013bffafce2ef04adc3006
Checkpoint commit for OPENDJ-1206 : Create a new ReplicationBackend/ChangelogBackend to support cn=changelog

Merged + corrected backend error messages by passing in the backendID into the error messages + fixed translations (!?!)
Started implementing ChangelogBackend by adding error messages.
Used Collections.emptySet() for supported controls and / or features, where applicable.
Generecized Backend class with the type of the configuration object + applied specific types to sub-classes of Backend.
Code cleanups + factorized code by extracting methods + ran AutoRefactor.
25 files modified
4476 ■■■■ changed files
opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java 196 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend.properties 82 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_ca_ES.properties 2 ●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_de.properties 43 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_es.properties 41 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_fr.properties 41 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_ja.properties 41 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_ko.properties 40 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_pl.properties 2 ●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_zh_CN.properties 41 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/messages/messages/backend_zh_TW.properties 39 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/api/Backend.java 114 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/api/ConfigHandler.java 11 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java 312 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java 150 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/MemoryBackend.java 302 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java 368 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/NullBackend.java 233 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java 598 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java 482 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java 416 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java 105 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java 362 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java 105 ●●●●● patch | view | raw | blame | history
opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java 350 ●●●● patch | view | raw | blame | history
opendj3-server-dev/src/guitools/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
@@ -27,16 +27,16 @@
package org.opends.guitools.controlpanel.util;
import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigException;
import org.forgerock.opendj.ldap.ConditionResult;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.api.ConfigHandler;
import org.opends.server.config.ConfigEntry;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
@@ -59,80 +59,68 @@
import org.opends.server.types.RestoreConfig;
import org.opends.server.util.LDIFException;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.StaticUtils;
import static org.opends.messages.ConfigMessages.*;
import static org.opends.server.util.StaticUtils.*;
/**
 * A class used to read the configuration from a file.  This config file
 * handler does not allow to modify the configuration, only to read it.
 */
public class ReadOnlyConfigFileHandler extends ConfigHandler
public class ReadOnlyConfigFileHandler extends ConfigHandler<BackendCfg>
{
//The mapping that holds all of the configuration entries that have been read
  // from the LDIF file.
  /**
   * The mapping that holds all of the configuration entries that have been read
   * from the LDIF file.
   */
  private HashMap<DN,ConfigEntry> configEntries = new HashMap<DN,ConfigEntry>();
//The reference to the configuration root entry.
  /** The reference to the configuration root entry. */
  private ConfigEntry configRootEntry;
  // The server root
  /** The server root */
  private String serverRoot;
  // The instance root
  /** The instance root */
  private String instanceRoot;
  private final Set<String> emptyStringSet = new HashSet<String>();
  private DN[] baseDNs;
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void finalizeConfigHandler()
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigEntry getConfigEntry(DN entryDN) throws ConfigException
  {
    return configEntries.get(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigEntry getConfigRootEntry() throws ConfigException
  {
    return configRootEntry;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public String getServerRoot()
  {
    return serverRoot;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public String getInstanceRoot()
  {
    return instanceRoot;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public synchronized void initializeConfigHandler(String configFile,
      boolean checkSchema)
@@ -253,133 +241,102 @@
    }
    finally
    {
      StaticUtils.close(reader);
      close(reader);
    }
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void writeSuccessfulStartupConfig()
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void writeUpdatedConfig() throws DirectoryException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry arg0, AddOperation arg1)
  public void addEntry(Entry entry, AddOperation arg1)
  throws DirectoryException, CanceledOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void configureBackend(Configuration arg0) throws ConfigException
  public void configureBackend(BackendCfg cfg) throws ConfigException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig arg0) throws DirectoryException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN arg0, DeleteOperation arg1)
  throws DirectoryException, CanceledOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig arg0) throws DirectoryException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
  throws DirectoryException
  {
    ConfigEntry configEntry = configEntries.get(entryDN);
    if (configEntry == null)
    {
      return null;
    }
    else
    if (configEntry != null)
    {
      return configEntry.getEntry();
    }
    return null;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    return configEntries.size();
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return emptyStringSet;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return emptyStringSet;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException
  {
@@ -391,9 +348,7 @@
    return ConditionResult.UNDEFINED;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig arg0)
  throws DirectoryException
@@ -401,36 +356,28 @@
    return null;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
  throws ConfigException, InitializationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType arg0, IndexType arg1)
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
  throws DirectoryException
@@ -457,101 +404,78 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory arg0, String arg1)
  public void removeBackup(BackupDirectory backupDirectory, String backupID)
  throws DirectoryException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN arg0, Entry arg1, ModifyDNOperation arg2)
  public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation)
  throws DirectoryException, CanceledOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry arg0, Entry arg1, ModifyOperation arg2)
  public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation)
  throws DirectoryException, CanceledOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig arg0) throws DirectoryException
  public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation arg0)
  public void search(SearchOperation searchOperation)
  throws DirectoryException, CanceledOperationException
  {
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig arg0, StringBuilder arg1)
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    return false;
  }
}
opendj3-server-dev/src/messages/messages/backend.properties
@@ -66,16 +66,10 @@
 retrieve entry with DN "%s".  This backend should only be asked to retrieve \
 the root DSE itself.  However, it will check with the defined subordinate \
 backends and see if it can find the requested entry
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=Unwilling to add entry "%s" because add \
 operations are not supported in the root DSE backend
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=Unwilling to remove entry "%s" \
 because delete operations are not supported in the root DSE backend
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=Unwilling to update entry "%s" \
 because modify operations are not supported in the root DSE backend.  If you \
 wish to alter the contents of the root DSE itself, then it may be possible to \
 do so by modifying the "%s" entry in the configuration
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=Unwilling to rename entry "%s" \
 because modify DN operations are not supported in the root DSE backend
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=Unwilling to perform a search \
 (connection ID %d, operation ID %d) with a base DN of "%s" in the root DSE \
 backend.  The base DN for searches in this backend must be the DN of the root \
@@ -89,8 +83,6 @@
 occurred while trying to open the LDIF writer for the root DSE backend:  %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=An unexpected error occurred while \
 trying to export the root DSE entry to the specified LDIF target: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=The root DSE backend does not \
 support LDIF import operations
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=The root DSE backend \
 does not provide a facility for backup and restore operations.  The contents \
 of the root DSE should be backed up as part of the Directory Server \
@@ -110,28 +102,29 @@
 occurred while attempting to decode cn=monitor as the base DN for the \
 Directory Server monitor information:  %s.  No monitor information will be \
 available over protocol
ERR_MONITOR_ADD_NOT_SUPPORTED_23=Unwilling to add entry "%s" because add \
 operations are not supported in the monitor backend
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=Unwilling to remove entry "%s" \
 because delete operations are not supported in the monitor backend
ERR_BACKEND_ADD_NOT_SUPPORTED_23=Unwilling to add entry "%s" because add \
 operations are not supported in the "%s" backend
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=Unwilling to remove entry "%s" \
 because delete operations are not supported in the "%s" backend
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=Unwilling to update entry "%s" \
 because modify operations are not supported in the monitor backend.  If you \
 wish to alter the contents of the base monitor entry itself, then it may be \
 possible to do so by modifying the "%s" entry in the configuration
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=Unwilling to rename entry "%s" \
 because modify DN operations are not supported in the monitor backend
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=Unwilling to rename entry "%s" \
 because modify DN operations are not supported in the "%s" backend
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=An error occurred while \
 attempting to export the base monitor entry:  %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=An error occurred while \
 attempting to export the monitor entry for monitor provider %s:  %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=The monitor backend does not \
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29=The "%s" backend does not \
 support LDIF import operations
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=The monitor backend \
 does not provide a facility for backup and restore operations
INFO_MONITOR_USING_NEW_USER_ATTRS_31=The monitor configuration has been \
 updated so that it will now use a new set of user-defined attributes
ERR_MONITOR_GET_ENTRY_NULL_32=Unable to retrieve the requested entry \
 from the monitor backend because the provided DN was null
ERR_BACKEND_GET_ENTRY_NULL_32=Unable to retrieve the requested entry \
 from the "%s" backend because the provided DN was null
ERR_BACKEND_CANNOT_DECODE_BACKEND_ROOT_DN_33= Unable to initialize the \
 "%s" backend because an error occurred while attempting to decode the base \
 DN for this backend:  %s
ERR_MONITOR_INVALID_BASE_34=Unable to retrieve the requested entry %s \
 from the monitor backend because the DN is not below the monitor base of %s
INFO_MONITOR_UPTIME_37=%d days %d hours %d minutes %d seconds
@@ -143,12 +136,6 @@
 information, as specified in the ds-cfg-schema-entry-dn attribute of \
 configuration entry %s:  %s.  The default schema base DN of cn=schema will be \
 used
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=Unwilling to add entry "%s" because add \
 operations are not supported in the schema backend
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=Unwilling to remove entry "%s" \
 because delete operations are not supported in the schema backend
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=Unwilling to rename entry "%s" \
 because modify DN operations are not supported in the schema backend
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=An error occurred while attempting \
 to export the base schema entry:  %s
ERR_SCHEMA_INVALID_BASE_48=Unable to retrieve the requested entry %s \
@@ -347,8 +334,6 @@
ERR_TASKBE_ADD_DISALLOWED_DN_130=New entries in the task backend may \
 only be added immediately below %s for scheduled tasks or immediately below \
 %s for recurring tasks
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=Modify DN operations are not \
 supported in the task backend
INFO_TASKBE_BACKING_FILE_HEADER_132=This file contains the data used by the \
 Directory Server task scheduler backend.  Do not edit this file directly, as \
 there is a risk that those changes will be lost.  Scheduled and recurring \
@@ -420,8 +405,6 @@
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=An error occurred while \
 attempting to write the new tasks data backing file %s:  %s.  Configuration \
 information reflecting the latest update may be lost
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=The task backend does not support \
 LDIF import operations
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=The tasks backend is being shut down
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=The root DSE configuration has been \
 updated so that configuration attribute %s will now use a value of %s
@@ -450,13 +433,8 @@
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=Unable to process the \
 search operation in the task backend because there is no recurring task \
 associated with the provided search base entry %s
ERR_BACKUP_CONFIG_ENTRY_NULL_171=Unable to initialize the backup \
ERR_BACKEND_CONFIG_ENTRY_NULL_171=Unable to initialize the "%s" \
 backend because the provided configuration entry is null
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=Unable to initialize the \
 backup backend because an error occurred while attempting to decode the base \
 DN for the backend:  %s
ERR_BACKUP_GET_ENTRY_NULL_175=Unable to retrieve an entry from the \
 backup backend because the requested entry was null
ERR_BACKUP_INVALID_BASE_176=Requested entry %s does not exist in the \
 backup backend
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=Unable to retrieve entry \
@@ -477,22 +455,10 @@
 which the requested backup should reside
ERR_BACKUP_NO_SUCH_BACKUP_183=Backup %s does not exist in backup \
 directory %s
ERR_BACKUP_ADD_NOT_SUPPORTED_184=Add operations are not supported in \
 the backup backend
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=Delete operations are not \
 supported in the backup backend
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=Modify operations are not \
 supported in the backup backend
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=Modify DN operations are not \
 supported in the backup backend
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=Unwilling to update entry "%s" \
 because modify operations are not supported in the "%s" backend
ERR_BACKUP_NO_SUCH_ENTRY_188=The requested entry %s does not exist in \
 the backup backend
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=LDIF export operations are not \
 supported in the backup backend
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=LDIF import operations are not \
 supported in the backup backend
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=Backup and restore \
 operations are not supported in the backup backend
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Exactly one base DN \
 must be provided for use with the memory-based backend
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=Entry %s already exists in \
@@ -501,8 +467,8 @@
 the memory-based backend
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=Unable to add entry %s \
 because its parent entry %s does not exist in the memory-based backend
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Entry %s does not exist in \
 the memory-based backend
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Entry %s does not exist in \
 the "%s" backend
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=Cannot delete \
 entry %s because it has one or more subordinate entries
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Unable to create an \
@@ -764,8 +730,6 @@
INFO_TASK_COMPLETION_BODY_299=Task ID:  %s\r\nTask State:  %s\r\nScheduled \
 Start Time:  %s\r\nActual Start Time:  %s\r\nCompletion Time:  %s\r\n\r\nLog \
 Messages:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=Unable to retrieve an entry from the \
 trust store backend because the requested entry was null
ERR_TRUSTSTORE_INVALID_BASE_301=Requested entry %s does not exist in \
 the trust store backend
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=Unable to process \
@@ -773,17 +737,13 @@
 below the base DN but does not specify a certificate name
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Error while trying to retrieve \
 certificate %s from the trust store file %s: %s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=Modify operations are not \
 supported in the trust store backend
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=Modify DN operations are not \
 supported in the trust store backend
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=Unable to \
 initialize the trust store backend from configuration entry %s because it \
 does not contain exactly one base DN
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF import and \
 export operations are not supported in the trust store backend
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Backup and \
 restore operations are not supported in the trust store backend
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF import and \
 export operations are not supported in the "%s" backend
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Backup and \
 restore operations are not supported in the "%s" backend
ERR_TRUSTSTORE_NO_SUCH_FILE_309=The trust store file %s \
 specified in attribute ds-cfg-trust-store-file of configuration entry %s does \
 not exist
opendj3-server-dev/src/messages/messages/backend_ca_ES.properties
@@ -1,4 +1,4 @@
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=L'entrada %s no existeix en la infraestructura de fons (Backend) basada en mem\u00f2ria
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=L'entrada %s no existeix en la infraestructura de fons (Backend) "%s"
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=No es pot eliminar l'entrada %s perqu\u00e8 t\u00e9 una o m\u00e9s tasques subordinades
NOTE_BACKEND_OFFLINE_370=La infraestructura de fons (Backend): %s, ara s'est\u00e0 desconnectant
ERR_RECURRINGTASK_INVALID_N_TOKENS_371=L'atribut d'entrada de tasca recorrent proporcionada %s que subjecta la programaci\u00f3 de la tasca recurrent, t\u00e9 un n\u00famero incorrecte de senyals
opendj3-server-dev/src/messages/messages/backend_de.properties
@@ -52,39 +52,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=Basis-DN "%s" ist als einer der untergeordneten Basis-DNs konfiguriert, der f\u00fcr Suchen unterhalb der Root-DSE verwendet wird.  Diese Basis-DN wird jedoch nicht von einem Suffix, das mit dem Directory-Server registriert ist, bearbeitet und wird daher nicht verwendet
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=Unerwarteter Fehler beim Versuch, den Satz von untergeordneten Basis-DNs, die f\u00fcr die Suchen unterhalb der Root-DSE verwendet werden, festzulegen:  %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=Beim Root-DSE-Backend wurde die Abfrage des Eintrags mit der DN "%s" angefordert.  Fragen Sie \u00fcber dieses Backend ausschlie\u00dflich den Root-DSE selbst ab.  Die definierten untergeordneten Backends werden trotzdem \u00fcberpr\u00fcft und der angeforderte Eintrag wird gesucht
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im Root-DSE-Backend nicht unterst\u00fctzt werden
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Root-DSE-Backend nicht unterst\u00fctzt werden
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=Eintrag "%s" kann nicht aktualisiert werden, da Bearbeitungsvorg\u00e4nge im Root-DSE-Backend nicht unterst\u00fctzt werden.  Um Inhalte des Root-DSE zu \u00e4ndern, bearbeiten Sie den Eintrag "%s" in der Konfiguration
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=Eintrag "%s" kann nicht umbenannt werden, weil DN-Bearbeitungsvorg\u00e4nge im Root-DSE-Backend nicht unterst\u00fctzt werden
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=Suche (Verbindungs-ID %d, Vorgangs-ID %d) mit dem Basis-DN "%s" kann im Root-DSE-Backend nicht ausgef\u00fchrt werden.  Der Basis-DN f\u00fcr Suchen in diesem Backend muss dem DN des Root-DSE entsprechen
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=Unerwarteter Fehler beim Versuch, einen Suchvorgang (Verbindungs-ID %d, Vorgangs-ID %d) im Root-DSE-Backend zu verarbeiten:  %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=Die Suche konnte nicht mit Verbindungs-ID %d und Vorgangs-ID %d verarbeitet werden, da der Geltungsbereich von %s ung\u00fcltig ist
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=Unerwarteter Fehler beim Versuch, den LDIF-Schreiber f\u00fcr das Root-DSE-Backend zu \u00f6ffnen:  %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=Unerwarteter Fehler beim Versuch, den Root-DSE-Eintrag in ein spezifiziertes LDIF-Ziel zu exportieren: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Das Root-DSE-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=Das Root-DSE-Backend bietet keine M\u00f6glichkeit f\u00fcr Sicherungs- und Wiederherstellungsvorg\u00e4nge.  Der Inhalt des Root-DSE sollte als Teil der Directory-Server-Konfiguration gesichert werden
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=Die Root-DSE-Konfiguration wurde aktualisiert und verwendet den definierten Satz von Directory-Server-Suffixen f\u00fcr Suchen unterhalb des Root-DSE
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=Die Root-DSE-Konfiguration wurde aktualisiert und verwendet den Basis-DN-Satz %s f\u00fcr Suchen unterhalb des Root-DSE
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=Die Root-DSE-Konfiguration wurde aktualisiert und verwendet einen neuen Satz benutzerdefinierter Attribute
ERR_MONITOR_CONFIG_ENTRY_NULL_21=Es wurde versucht, das Monitoring-Backend ohne Angabe eines Konfigurationseintrags zu konfigurieren.  Dies ist unzul\u00e4ssig. Es sind keine Monitoring-Informationen \u00fcber das Protokoll verf\u00fcgbar
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=Unerwarteter Fehler beim Versuch, cn=monitor als Basis-DN f\u00fcr Monitoring-Informationen\u00b7des Directory-Servers zu entschl\u00fcsseln:  %s.  Es sind keine Monitoring-Informationen \u00fcber das Protokoll verf\u00fcgbar
ERR_MONITOR_ADD_NOT_SUPPORTED_23=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im Monitoring-Backend nicht unterst\u00fctzt werden
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Monitoring-Backend nicht unterst\u00fctzt werden
ERR_BACKEND_ADD_NOT_SUPPORTED_23=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im "%s"-Backend nicht unterst\u00fctzt werden
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im "%s"-Backend nicht unterst\u00fctzt werden
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=Eintrag "%s" kann nicht aktualisiert werden, da Bearbeitungsvorg\u00e4nge im Monitoring-Backend nicht unterst\u00fctzt werden.  Um die Inhalte des Basismonitoreintrags zu \u00e4ndern, bearbeiten Sie den Eintrag "%s" in der Konfiguration
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4ngen im Monitoring-Backend nicht unterst\u00fctzt werden
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4ngen im "%s"-Backend nicht unterst\u00fctzt werden
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=Fehler beim Versuch, den Basismonitoreintrag zu exportieren:  %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=Fehler beim Versuch, den Monitoreintrag f\u00fcr den \u00dcberwachungsanbieter %s zu exportieren:  %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=Das Monitoring-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=Das Monitoring-Backend bietet keine M\u00f6glichkeit f\u00fcr Sicherungs- und Wiederherstellungsvorg\u00e4nge
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29=Das "%s"-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge
INFO_MONITOR_USING_NEW_USER_ATTRS_31=Die Monitorkonfiguration wurde aktualisiert und verwendet einen neuen Satz benutzerdefinierter Attribute
ERR_MONITOR_GET_ENTRY_NULL_32=Angeforderter Eintrag kann nicht vom Monitoring-Backend abgerufen werden, da der angegebene DN ung\u00fcltig ist
ERR_BACKEND_GET_ENTRY_NULL_32=Angeforderter Eintrag kann nicht vom "%s"-Backend abgerufen werden, da der angegebene DN ung\u00fcltig ist
ERR_MONITOR_INVALID_BASE_34=Angeforderter Eintrag %s kann nicht vom Monitoring-Backend abgerufen werden, da sich der DN nicht unterhalb der Monitorbasis %s befindet
INFO_MONITOR_UPTIME_37=%d Tage %d Stunden %d Minuten %d Sekunden
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=Es wurde versucht, das Schema-Backend ohne Angabe eines Konfigurationseintrags zu konfigurieren.  Dies ist unzul\u00e4ssig. Es sind keine Schemainformationen \u00fcber das Protokoll verf\u00fcgbar
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=Fehler beim Versuch, die Basis-DNs, die beim Ver\u00f6ffentlichen der Schemainformationen des Directory-Servers verwendet werden, wie in Attribut ds-cfg-schema-entry-dn des Konfigurationseintrags %s spezifiziert:  %s.  Der standardm\u00e4\u00dfige Schema-Basis-DN von cn=schema wird verwendet
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=Fehler beim Versuch, den Basisschemaeintrag zu exportieren:  %s
ERR_SCHEMA_INVALID_BASE_48=Angeforderter Eintrag %s kann nicht vom Schema-Backend abgerufen werden, weil der DN einem der Schemaeintrags-DNs entspricht
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=Fehler beim Versuch, den LDIF-Schreiber f\u00fcr das Schema-Backend zu \u00f6ffnen:  %s
@@ -160,7 +152,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=Die Aufbewahrungszeit f\u00fcr abgeschlossene Aufgaben wurde auf %d Sekunden aktualisiert.  Sie tritt sofort in Kraft
INFO_TASKBE_UPDATED_BACKING_FILE_129=Der Pfad zur Erg\u00e4nzungsdatei wurde ge\u00e4ndert nach %s. Ein Schnappschuss der aktuellen Aufgabenkonfiguration wurde in die Datei geschrieben und wird f\u00fcr zuk\u00fcnftige Aktualisierungen weiterverwendet
ERR_TASKBE_ADD_DISALLOWED_DN_130=Neue Eintr\u00e4ge in dem Aufgaben-Backend k\u00f6nnen nur direkt unter %s f\u00fcr geplante Aufgaben oder direkt unter %s f\u00fcr wiederkehrende Aufgaben hinzugef\u00fcgt werden
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=Die \u00c4nderung von DN-Vorg\u00e4ngen wird in dem Aufgaben-Backend nicht unterst\u00fctzt
INFO_TASKBE_BACKING_FILE_HEADER_132=Diese Datei enth\u00e4lt die Daten, die der Aufgaben-Scheduler-Backend des Directory-Servers verwendet.  Bearbeiten Sie diese Datei nicht direkt, da solche \u00c4nderungen verloren gehen k\u00f6nnen.  Bearbeiten Sie Definitionen von geplanten und wiederkehrenden Aufgaben nur mit den zusammen mit dem Directory-Server gelieferten Administrationsdienstprogrammen
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=Wiederkehrende Aufgabe %s konnte nicht zum Aufgaben-Scheduler hinzugef\u00fcgt werden, da eine andere wiederkehrende Aufgabe mit derselben ID bereits vorhanden ist
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=Aufgabe %s konnte nicht geplant werden, da eine andere Aufgabe mit derselben ID bereits vorhanden ist
@@ -183,7 +174,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=Fehler beim Versuch, die aktuelle Erg\u00e4nzungsdatei der Aufgabendaten von %s in %s umzubenennen:  %s.  Die vorherige Aufgabenkonfiguration (in der die neueste Aktualisierung nicht widergegeben wird) geht m\u00f6glicherweise verloren
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=Fehler beim Versuch, die neue Erg\u00e4ngzungsdatei der Aufgabendaten von %s in %s umzubenennen:  %s. Nach einem Neustart des Directory-Servers arbeitet der Aufgaben-Scheduler m\u00f6glicherweise nicht wie erwartet
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=Fehler beim Versuch, die neue Erg\u00e4nzungsdatei %s der Aufgabendaten zu schreiben:  %s.  Die Konfigurationsinformationen, in der die neuesten Aktualisierungen widergegeben werden, gehen m\u00f6glicherweise verloren
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=Das Aufgaben-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=Das Aufgaben-Backend wird heruntergefahren
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=Die Root-DSE-Konfiguration wurde aktualisiert. Das Konfigurationsattribut %s verwendet zuk\u00fcnftig den Wert %s
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=Anstehende Aufgabe %s konnte nicht entfernt werden, da keine Aufgabe dieser Art vorhanden ist
@@ -196,9 +186,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=Der Suchvorgang im Aufgaben-Backend konnte nicht verarbeitet werden, da der angegebene DN %s nicht f\u00fcr Eintr\u00e4ge im Aufgaben-Backend zul\u00e4ssig sind
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=Der Suchvorgang im Aufgaben-Backend konnte nicht verarbeitet werden, da keine geplante Aufgabe mit dem angegebenen Such-Basiseintrag %s verbunden ist
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=Der Suchvorgang im Aufgaben-Backend konnte nicht verarbeitet werden, da keine wiederkehrende Aufgabe mit dem angegebenen Such-Basiseintrag %s verbunden ist
ERR_BACKUP_CONFIG_ENTRY_NULL_171=Das Sicherungs-Backend konnte nicht initialisiert werden, da der angegebene Konfigurationseintrag Null ist
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=Das Sicherungs-Backend konnte nicht initialisiert werden, da beim Versuch, den Basis-DN f\u00fcr das Backend zu entschl\u00fcsseln, ein Fehler aufgetreten ist:  %s
ERR_BACKUP_GET_ENTRY_NULL_175=Der Eintrag konnte nicht vom Sicherungs-Backend abgerufen werden, da der angeforderte Eintrag Null ist
ERR_BACKEND_CONFIG_ENTRY_NULL_171=Das "%s"-Backend konnte nicht initialisiert werden, da der angegebene Konfigurationseintrag Null ist
ERR_BACKUP_INVALID_BASE_176=Der angeforderte Eintrag %s ist nicht im Sicherungs-Backend vorhanden
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=Eintrag %s konnte nicht vom Sicherungs-Backend abgerufen werden, da der angeforderte DN eine Ebene unterhalb der Basis-DN liegt, aber kein Sicherungsverzeichnis angibt
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=Eintrag %s konnte nicht vom Sicherungs-Backend abgerufen werden, da das angeforderte Sicherungsverzeichnis ung\u00fcltig ist: %s
@@ -207,19 +195,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=Eintrag %s konnte nicht vom Sicherungs-Backend abgerufen werden, da er keinen \u00fcbergeordneten Eintrag besitzt
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=Eintrag %s konnte nicht vom Sicherungs-Backend abgerufen werden, da der DN das Sicherungsverzeichnis, in dem sich die angeforderte Sicherung befinden soll, nicht enth\u00e4lt
ERR_BACKUP_NO_SUCH_BACKUP_183=Sicherung %s ist nicht im Sicherungsverzeichnis %s vorhanden
ERR_BACKUP_ADD_NOT_SUPPORTED_184=Hinzuf\u00fcgevorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=L\u00f6schvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=DN-\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_NO_SUCH_ENTRY_188=Der angeforderte Eintrag %s ist nicht in dem Sicherungs-Backup vorhanden
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=LDIF-Exportvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=LDIF-Importvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Es muss exakt eine Basis-DN f\u00fcr die Verwendung mit dem speicherbasierten Backend vorliegen
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=Eintrag %s ist bereits im speicherbasierten Backend vorhanden
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=Eintrag %s geh\u00f6rt nicht zum speicherbasierten Backup
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=Eintrag %s geh\u00f6rt nicht zum speicherbasierten Backend
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=Eintrag %s konnte nicht hinzugef\u00fcgt werden, da dessen \u00fcbergeordneter Eintrag %s nicht im speicherbasierten Backend vorhanden ist
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Eintrag %s ist nicht im speicherbasierten Backup vorhanden
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Eintrag %s ist nicht im "%s" Backend vorhanden
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=Eintrag %s kann nicht gel\u00f6scht werden, da er einen oder mehrere untergeordnete Eintr\u00e4ge besitzt
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Ein LDIF-Schreiber konnte nicht erstellt werden: %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=Eintrag %s konnte nicht in LDIF geschrieben werden:  %s
@@ -314,15 +296,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=Die JE-Datenbankumgebung mit der Backend-ID %s ist besch\u00e4digt. Starten Sie den Directory-Server neu, um die Umgebung neu zu \u00f6ffnen
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=Der Directory-Server ist nicht daf\u00fcr konfiguriert, Aufgabe %s aufzurufen
INFO_TASK_COMPLETION_BODY_299=Aufgaben-ID:  %s\r\nAufgabenstatus:  %s\r\nGeplante Startzeit:  %s\r\nTats\u00e4chliche Startzeit:  %s\r\nFertigstellungszeit:  %s\r\n\r\nProtokollmeldungen:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=Der Eintrag konnte nicht vom Trust-Speicher-Backend abgerufen werden, da der angeforderte Eintrag Null ist
ERR_TRUSTSTORE_INVALID_BASE_301=Der angeforderte Eintrag %s ist nicht im Trust-Speicher-Backup vorhanden
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=Eintrag %s konnte nicht vom Trust-Speicher-Backend verarbeitet werden, da der angeforderte DN eine Ebene unterhalb der Basis-DN liegt, aber keinen Zertifikatsnamen spezifiziert
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Fehler beim Versuch, Zertifikat %s aus der Trust-Speicherdatei %s abzurufen: %s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u00c4nderungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=DN-\u00c4nderungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=Das Trust-Speicher-Backend konnte nicht vom Konfigurationseintrag %s initialisiert werden, da es nicht exakt einen Basis-DN enth\u00e4lt
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF-Import- und Exportvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF-Import- und Exportvorg\u00e4nge werden nicht in dem "%s"-Backend unterst\u00fctzt
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem "%s"-Backend unterst\u00fctzt
ERR_TRUSTSTORE_NO_SUCH_FILE_309=Die Trust-Speicherdatei %s, die in Attribut ds-cfg-trust-store-file des Konfigurationseintrags %s angegeben ist, ist nicht vorhanden
ERR_TRUSTSTORE_INVALID_TYPE_310=Der Trust-Speichertyp %s, der in Attribut ds-cfg-trust-store-type des Konfigurationseintrags %s angegeben ist, ist ung\u00fcltig:  %s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=Fehler beim Versuch, die PIN-Datei %s, die in Attribut ds-cfg-trust-store-pin-file des Konfigurationseintrags %s angegeben ist, zu erstellen
opendj3-server-dev/src/messages/messages/backend_es.properties
@@ -52,39 +52,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=El ND de base "%s" est\u00e1 configurado como uno de los ND de base subordinados para su uso en b\u00fasquedas por debajo de la DSE ra\u00edz.  No obstante, este ND de base no est\u00e1 controlado por ning\u00fan sufijo registrado con el Servidor de directorios, por lo que no se utilizar\u00e1
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=Se ha producido un problema inesperado al tratar de determinar el conjunto de los ND de base subordinados para su uso en b\u00fasquedas por debajo de la DSE ra\u00edz:  %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=Se ha solicitado al servidor de fondo DSE ra\u00edz que recupere la entrada con el ND  "%s".  A este servidor de fondo s\u00f3lo se le puede solicitar que recupere el propio DSE ra\u00edz.  Sin embargo, se realizar\u00e1 una comprobaci\u00f3n del mismo con los servidores de fondo subordinados definidos y se verificar\u00e1 si puede buscar la entrada solicitada
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=No se puede agregar la entrada "%s" porque no se admiten las operaciones de adici\u00f3n en el servidor de fondo DSE ra\u00edz
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=No se puede suprimir la entrada "%s" porque no se admiten las operaciones de eliminaci\u00f3n en el servidor de fondo DSE ra\u00edz
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=No se puede actualizar la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n en el servidor de fondo DSE ra\u00edz.  Si desea modificar el contenido del propio DSE ra\u00edz, es posible realizar esta operaci\u00f3n mediante la modificaci\u00f3n de la entrada "%s" de la configuraci\u00f3n
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=No se puede cambiar el nombre de la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n de ND en el servidor de fondo DSE ra\u00edz
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=No se puede realizar una b\u00fasqueda (Id. de conexi\u00f3n %d, Id. de operaci\u00f3n %d) con el ND de base de "%s" en el servidor de fondo DSE ra\u00edz.  El ND de base de las b\u00fasquedas de este servidor de fondo debe ser el ND del propio DSE ra\u00edz
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=Se ha producido un error inesperado al tratar de procesar una operaci\u00f3n de b\u00fasqueda (Id. de conexi\u00f3n %d, Id. de operaci\u00f3n %d) en el backend de DSE ra\u00edz:  %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=No se pudo procesar la b\u00fasqueda con el Id. de conexi\u00f3n %d y el Id. de operaci\u00f3n %d porque tuvo un \u00e1mbito no v\u00e1lido de %s
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=Se ha producido un error inesperado al tratar de abrir el editor de LDIF para el backend de DSE ra\u00edz:  %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=Se ha producido un error inesperado al tratar de exportar la entrada DSE ra\u00edz al destino LDIF especificado: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=El backend de DSE ra\u00edz no admite operaciones de importaci\u00f3n de LDIF
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=El backend de DSE ra\u00edz no proporciona ning\u00fan recurso para las operaciones de copia de seguridad y de restauraci\u00f3n.  La copia de seguridad de los contenidos de la DSE ra\u00edz debe procesarse como parte de la configuraci\u00f3n del Servidor de directorios
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=Se ha actualizado la configuraci\u00f3n del DSE ra\u00edz para que utilice el conjunto definido de sufijos del servidor de directorios al realizar b\u00fasquedas por debajo del DSE ra\u00edz
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=Se ha actualizado la configuraci\u00f3n del DSE ra\u00edz para que utilice el conjunto de ND de base %s al realizar b\u00fasquedas por debajo del DSE ra\u00edz
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=Se ha actualizado la configuraci\u00f3n del DSE ra\u00edz para que utilice un nuevo conjunto de atributos definidos por el usuario
ERR_MONITOR_CONFIG_ENTRY_NULL_21=Se ha intentado configurar el backend de supervisi\u00f3n sin proporcionar una entrada de configuraci\u00f3n.  Esto no est\u00e1 permitido, por lo que no podr\u00e1 disponerse de informaci\u00f3n de supervisi\u00f3n por medio del protocolo
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=Se ha producido un error al tratar de descodificar cn=monitor como el ND de base para la informaci\u00f3n de supervisi\u00f3n del Servidor de directorios:  %s. No podr\u00e1 disponerse de informaci\u00f3n de supervisi\u00f3n por medio del protocolo
ERR_MONITOR_ADD_NOT_SUPPORTED_23=No se puede agregar la entrada "%s" porque no se admiten las operaciones de adici\u00f3n en el servidor de fondo de supervisi\u00f3n
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=No se puede suprimir la entrada "%s" porque no se admiten las operaciones de eliminaci\u00f3n en el servidor de fondo de supervisi\u00f3n
ERR_BACKEND_ADD_NOT_SUPPORTED_23=No se puede agregar la entrada "%s" porque no se admiten las operaciones de adici\u00f3n en el backend "%s"
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=No se puede suprimir la entrada "%s" porque no se admiten las operaciones de eliminaci\u00f3n en el backend "%s"
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=No se puede actualizar la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n en el servidor de fondo de supervisi\u00f3n.  Si desea modificar el contenido de la propia entrada de supervisi\u00f3n de base, es posible realizar esta operaci\u00f3n mediante la modificaci\u00f3n de la entrada "%s" en la configuraci\u00f3n
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=No se puede cambiar el nombre de la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n de ND en el servidor de fondo de supervisi\u00f3n
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=No se puede cambiar el nombre de la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n de ND en el backend "%s"
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=Se ha producido un error al tratar de exportar la entrada de supervisi\u00f3n de base:  %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=Se ha producido un error al tratar de exportar la entrada de supervisi\u00f3n para el proveedor de supervisi\u00f3n %s:  %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=El backend de supervisi\u00f3n no admite operaciones de importaci\u00f3n de LDIF
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=El backend de supervisi\u00f3n no proporciona ning\u00fan recurso para las operaciones de copia de seguridad y de restauraci\u00f3n
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29=El backend "%s" no admite operaciones de importaci\u00f3n de LDIF
INFO_MONITOR_USING_NEW_USER_ATTRS_31=Se ha actualizado la configuraci\u00f3n de supervisi\u00f3n para que utilice un nuevo conjunto de atributos definidos por el usuario
ERR_MONITOR_GET_ENTRY_NULL_32=No se puede recuperar la entrada solicitada del servidor de fondo de supervisi\u00f3n porque el ND especificado es nulo
ERR_BACKEND_GET_ENTRY_NULL_32=No se puede recuperar la entrada solicitada del backend "%s" porque el ND especificado es nulo
ERR_MONITOR_INVALID_BASE_34=No se puede recuperar la entrada solicitada %s del servidor de fondo de supervisi\u00f3n porque el ND no se encuentra por debajo de la base de supervisi\u00f3n de %s
INFO_MONITOR_UPTIME_37=%d d\u00edas %d horas %d minutos %d segundos
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=Se ha intentado configurar el backend de esquema sin proporcionar una entrada de configuraci\u00f3n.  Esto no est\u00e1 permitido, por lo que no se dispondr\u00e1 de informaci\u00f3n de esquema por medio del protocolo
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=Se ha producido un error al tratar de determinar los ND de base que deben usarse al publicar la informaci\u00f3n de esquema del Servidor de directorios, tal como se especifica en el atributo ds-cfg-schema-entry-dn de la entrada de configuraci\u00f3n %s:  %s.  Se usar\u00e1 el ND de base de esquema predeterminado de cn=schema
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=No se puede agregar la entrada "%s" porque no se admiten las operaciones de adici\u00f3n en el servidor de fondo del esquema
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=No se puede suprimir la entrada "%s" porque no se admiten las operaciones de eliminaci\u00f3n en el servidor de fondo del esquema
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=No se puede cambiar el nombre de la entrada "%s" porque no se admiten las operaciones de modificaci\u00f3n de ND en el servidor de fondo del esquema
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=Se ha producido un error al tratar de exportar la entrada de esquema de base:  %s
ERR_SCHEMA_INVALID_BASE_48=No se puede recuperar la entrada solicitada %s desde el servidor de fondo del esquema debido a que el ND es igual a uno de los ND de entrada de esquema
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=Se ha producido un error inesperado al tratar de abrir el editor de LDIF para el backend de esquema:  %s
@@ -160,7 +152,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=El tiempo de retenci\u00f3n de las tareas completadas se ha actualizado a %d segundos.  Este cambio se aplicar\u00e1 inmediatamente
INFO_TASKBE_UPDATED_BACKING_FILE_129=La ruta al archivo de copia de seguridad de los datos de tareas se ha cambiado a %s. Se ha incluido una captura de la configuraci\u00f3n de tareas actual en ese archivo, que se seguir\u00e1 utilizando en futuras actualizaciones
ERR_TASKBE_ADD_DISALLOWED_DN_130=Es posible que s\u00f3lo puedan a\u00f1adirse las nuevas entradas en el backend de tarea inmediatamente debajo de %s para las tareas programadas o inmediatamente debajo de %s para las tareas peri\u00f3dicas
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=No se admiten las operaciones de modificaci\u00f3n de ND en el backend de tarea
INFO_TASKBE_BACKING_FILE_HEADER_132=El archivo contiene los datos utilizados por el servidor de fondo del programador de tareas del servidor de directorios.  No modifique directamente este archivo, ya que es posible que esos cambios se pierdan.  Las definiciones de tareas programadas y peri\u00f3dicas s\u00f3lo deben modificarse mediante las utilidades de administraci\u00f3n proporcionadas con el servidor de directorios
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=No se puede a\u00f1adir la tarea peri\u00f3dica %s al programador de tareas debido a que ya existe otra tarea peri\u00f3dica con el mismo Id
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=No se puede programar la tarea %s debido a que ya existe otra tarea con el mismo Id
@@ -183,7 +174,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=Se ha producido un error al tratar de cambiar el nombre del archivo de copia de seguridad de tareas actual de %s a %s:  %s. Es posible que se haya perdido la configuraci\u00f3n de tarea previa (que no refleja la \u00faltima actualizaci\u00f3n)
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=Se ha producido un error al tratar de cambiar el nombre del nuevo archivo de copia de seguridad de %s a %s:  %s. Si se ha reiniciado el Servidor de directorios, es posible que el programador de tareas no funcione de la forma prevista
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=Se ha producido un error al tratar de escribir el nuevo archivo de copia de seguridad de datos de tareas %s:  %s. Es posible que se haya perdido la informaci\u00f3n de configuraci\u00f3n que refleja la \u00faltima actualizaci\u00f3n
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=El backend de tarea no admite operaciones de importaci\u00f3n de LDIF
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=Se est\u00e1 cerrando el servidor de fondo de tareas
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=La configuraci\u00f3n del DSE ra\u00edz se ha actualizado para que el atributo de configuraci\u00f3n %s utilice el valor %s
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=No se puede suprimir la tarea pendiente %s porque no existe
@@ -196,9 +186,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=No se puede procesar la operaci\u00f3n de b\u00fasqueda en el backend de tarea porque el ND de base %s proporcionado no es v\u00e1lido para las entradas en el backend de tarea
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=No se puede procesar la operaci\u00f3n de b\u00fasqueda en el backend de tarea porque no existe ninguna tarea programada asociada con la entrada de base de b\u00fasqueda %s proporcionada
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=No se puede procesar la operaci\u00f3n de b\u00fasqueda en el backend de tarea porque no existe ninguna tarea peri\u00f3dica asociada con la entrada de base de b\u00fasqueda %s proporcionada
ERR_BACKUP_CONFIG_ENTRY_NULL_171=No se puede inicializar el backend de copia de seguridad porque la entrada de configuraci\u00f3n proporcionada es nula
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=No se puede inicializar el backend de copia de seguridad porque se ha producido un error al tratar de descodificar el ND de base para el backend:  %s
ERR_BACKUP_GET_ENTRY_NULL_175=No se puede recuperar una entrada del backend de copia de seguridad porque la entrada solicitada era nula
ERR_BACKEND_CONFIG_ENTRY_NULL_171=No se puede inicializar el backend "%s" porque la entrada de configuraci\u00f3n proporcionada es nula
ERR_BACKUP_INVALID_BASE_176=No existe la entrada %s solicitada en el backend de copia de seguridad
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=No se puede recuperar la entrada %s del backend de copia de seguridad porque el ND solicitado est\u00e1 un nivel por debajo del ND de base, pero no especifica un directorio de copia de seguridad
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=No se puede recuperar la entrada %s del backend de copia de seguridad porque el directorio de copia de seguridad solicitado no es v\u00e1lido: %s
@@ -207,19 +195,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=No se puede recuperar la entrada %s del backend de copia de seguridad porque no tiene una entrada principal
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=No se puede recuperar la entrada %s del backend de copia de seguridad porque el ND no contiene el directorio de copia de seguridad en el que deber\u00eda encontrarse la copia de seguridad solicitada
ERR_BACKUP_NO_SUCH_BACKUP_183=No existe la copia de seguridad %s en el directorio de copia de seguridad %s
ERR_BACKUP_ADD_NOT_SUPPORTED_184=No se admiten las operaciones de adici\u00f3n en el backend de copia de seguridad
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=No se admiten las operaciones de eliminaci\u00f3n en el backend de copia de seguridad
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=No se admiten las operaciones de modificaci\u00f3n en el backend de copia de seguridad
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=No se admiten las operaciones de modificaci\u00f3n de ND en el backend de copia de seguridad
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=No se admiten las operaciones de modificaci\u00f3n en el backend de copia de seguridad
ERR_BACKUP_NO_SUCH_ENTRY_188=No existe la entrada %s solicitada en el backend de copia de seguridad
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=No se admiten las operaciones de exportaci\u00f3n de LDIF en el backend de copia de seguridad
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=No se admiten las operaciones de importaci\u00f3n de LDIF en el backend de copia de seguridad
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=No se admiten las operaciones de copia de seguridad y restauraci\u00f3n en el backend de copia de seguridad
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Debe proporcionarse exactamente un ND de base para su uso con el backend basado en memoria
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=La entrada %s ya existe en el backend basado en memoria
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=La entrada %s no pertenece al backend basado en memoria
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=No se puede a\u00f1adir la entrada %s porque no existe su entrada principal %s en el backend basado en memoria
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=La entrada %s no existe en el backend basado en memoria
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=La entrada %s no existe en el backend "%s"
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=No se puede eliminar la entrada %s porque tiene una o m\u00e1s entradas subordinadas
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Unable to create an LDIF writer:  %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=No se puede escribir la entrada %s en el LDIF:  %s
@@ -314,15 +296,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=El entorno de la base de datos JE correspondiente al Id. de servidor de fondo %s est\u00e1 da\u00f1ado. Reinicie Directory Server para volver a abrir el entorno
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=El Servidor de directorios no est\u00e1 configurado para permitir que se invoque la tarea %s
INFO_TASK_COMPLETION_BODY_299=Id. de tarea:  %s\r\nEstado de la tarea:  %s\r\nHora de inicio programada:  %s\r\nHora de inicio real:  %s\r\nHora de finalizaci\u00f3n:  %s\r\n\r\nMensajes del registro:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=No se puede recuperar una entrada del backend de almac\u00e9n de confianza porque la entrada solicitada era nula
ERR_TRUSTSTORE_INVALID_BASE_301=La entrada %s solicitada no existe en el backend de almac\u00e9n de confianza
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=No se puede procesar la entrada %s en el backend de almac\u00e9n de confianza porque el ND solicitado est\u00e1 un nivel por debajo del ND de base, pero no especifica un nombre de certificado
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Error al tratar de recuperar el certificado %s del archivo de almac\u00e9n de confianza %s: %s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=No se admiten las operaciones de modificaci\u00f3n en el backend de almac\u00e9n de confianza
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=No se admiten las operaciones de modificaci\u00f3n de ND en el backend de almac\u00e9n de confianza
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=No se puede inicializar el backend de almac\u00e9n de confianza de la entrada de configuraci\u00f3n %s porque no contiene exactamente un solo ND de base
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=No se admiten las operaciones de importaci\u00f3n y exportaci\u00f3n de LDIF en el backend de almac\u00e9n de confianza
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=No se admiten las operaciones de copia de seguridad y restauraci\u00f3n en el backend de almac\u00e9n de confianza
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=No se admiten las operaciones de importaci\u00f3n y exportaci\u00f3n de LDIF en el "%s" backend
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=No se admiten las operaciones de copia de seguridad y restauraci\u00f3n en el "%s" backend
ERR_TRUSTSTORE_NO_SUCH_FILE_309=El archivo de almac\u00e9n de confianza %s especificado en el atributo ds-cfg-trust-store-file de la entrada de configuraci\u00f3n %s no existe
ERR_TRUSTSTORE_INVALID_TYPE_310=El tipo de almac\u00e9n de confianza %s especificado en el atributo ds-cfg-trust-store-type de la entrada de configuraci\u00f3n %s no es v\u00e1lido: %s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=Se ha producido un error al tratar de crear el archivo PIN %s especificado en el atributo ds-cfg-trust-store-pin-file de la entrada de configuraci\u00f3n %s
opendj3-server-dev/src/messages/messages/backend_fr.properties
@@ -52,39 +52,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=Le DN de base "%s" est configur\u00e9 en tant que faisant partie des DN de base subordonn\u00e9s \u00e0 utiliser pour les recherches sous la racine\u00a0DSE.  Toutefois, ce DN de base n'est g\u00e9r\u00e9 par aucun suffixe enregistr\u00e9 aupr\u00e8s de Directory Server et il n'est donc pas utilis\u00e9
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=Un probl\u00e8me inattendu s'est produit lors de la tentative de d\u00e9termination de l'ensemble de DN de base subordonn\u00e9s \u00e0 utiliser pour les recherches sous la racine\u00a0DSE\u00a0: %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=Il a \u00e9t\u00e9 demand\u00e9 au backend de DSE racine de r\u00e9cup\u00e9rer une entr\u00e9e avec DN "%s".  Seule une demande de r\u00e9cup\u00e9ration de la DSE racine elle-m\u00eame peut \u00eatre adress\u00e9e \u00e0 ce backend.  Cependant, il v\u00e9rifiera avec les backends subordonn\u00e9s d\u00e9finis s'il peut trouver l'entr\u00e9e souhait\u00e9e
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=Impossible d'ajouter l'entr\u00e9e "%s" car le backend de DSE racine ne prend pas en charge les op\u00e9ration d'ajout
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=Impossible de supprimer l'entr\u00e9e "%s" car le backend de DSE racine ne prend pas en charge les op\u00e9rations de suppression
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=Impossible de mettre l'entr\u00e9e "%s" \u00e0 jour car le backend de DSE racine ne prend pas en charge les op\u00e9rations de modification.  Si vous souhaitez changer le contenu du DSE racine, vous devriez pouvoir le faire en modifant l'entr\u00e9e "%s" dans la configuration
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=Impossible de renommer l'entr\u00e9e "%s" car le backend de DSE racine ne prend pas en charge les op\u00e9rations de modification de DN
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=Impossible d'effectuer une recherche (ID de connexion %d, ID d'op\u00e9ration %d) avec un DN de base de "%s" dans le backend de DSE racine.  Le DN de base pour les recherches dans ce backend doit \u00eatre le DN du DSE racine
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=Un \u00e9chec inattendu s'est produit lors de la tentative de traitement d'une op\u00e9ration de recherche (ID de connexion %d, ID d'op\u00e9ration %d) dans le backend de DSE racine\u00a0:  %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=Impossible de traiter la recherche avec l'ID de connexion %d et l'ID d'op\u00e9ration %d, car son \u00e9tendue (%s) n'est pas valide
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=Une erreur inattendue s'est produite lors de la tentative d'ouverture du processus d'\u00e9criture LDIF pour le backend de DSE racine\u00a0: %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=Une erreur inattendue s'est produite lors de la tentative d'exportation de l'entr\u00e9e de DSE racine vers la cible LDIF indiqu\u00e9e\u00a0: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Le backend de DSE racine ne prend pas en charge les op\u00e9rations d'importation LDIF
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=Le backend de DSE racine ne fournit aucun utilitaire pour les op\u00e9rations de sauvegarde et restauration.  Vous devez sauvegarder le contenu du DSE racine dans le cadre de la configuration de Directory Server
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=La configuration du DSE racine ayant \u00e9t\u00e9 mise \u00e0 jour, celui-ci va d\u00e9sormais utiliser le jeu d\u00e9fini pour les suffixes Directory Server lors de recherches sous le DSE racine
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=La configuration du DSE racine ayant \u00e9t\u00e9 mise \u00e0 jour, celui-ci va d\u00e9sormais utiliser le jeu de DN de base %s lors de recherches sous le DSE racine
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=La configuration du DSE racine ayant \u00e9t\u00e9 mise \u00e0 jour, celui-ci va d\u00e9sormais utiliser un nouveau jeu d'attributs d\u00e9finis par l'utilisateur
ERR_MONITOR_CONFIG_ENTRY_NULL_21=Tentative de configuration du backend de contr\u00f4le sans indiquer d'entr\u00e9e de configuration.  Cela n'est pas autoris\u00e9 et aucune information de contr\u00f4le n'est disponible sur le protocole
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=Une erreur inattendue s'est produite lors de la tentative de d\u00e9codage de cn=monitor en tant que DN de base pour les informations de contr\u00f4le Directory Server\u00a0: %s.  Aucune information de contr\u00f4le n'est disponible sur le protocole
ERR_MONITOR_ADD_NOT_SUPPORTED_23=Impossible d'ajouter l'entr\u00e9e "%s" car le backend de moniteur ne prend pas en charge les op\u00e9rations d'ajout
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=Impossible de supprimer l'entr\u00e9e "%s" car le backend de moniteur ne prend pas en charge les op\u00e9rations de suppression
ERR_BACKEND_ADD_NOT_SUPPORTED_23=Impossible d'ajouter l'entr\u00e9e "%s" car le backend "%s" ne prend pas en charge les op\u00e9rations d'ajout
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=Impossible de supprimer l'entr\u00e9e "%s" car le backend "%s" ne prend pas en charge les op\u00e9rations de suppression
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=Impossible de mettre l'entr\u00e9e "%s" \u00e0 jour car le backend de moniteur ne prend pas en charge les op\u00e9rations de modification.  Si vous souhaitez changer le contenu du moniteur de base, vous devriez pouvoir le faire en modifant l'entr\u00e9e "%s" dans la configuration
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=Impossible de renommer l'entr\u00e9e "%s" car le backend de moniteur ne prend pas en charge les op\u00e9rations de modification de DN
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=Impossible de renommer l'entr\u00e9e "%s" car le backend "%s" ne prend pas en charge les op\u00e9rations de modification de DN
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=Une erreur s'est produite lors de la tentative d'exportation de l'entr\u00e9e de contr\u00f4le de base\u00a0: %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=Une erreur s'est produite lors de la tentative d'exportation de l'entr\u00e9e de contr\u00f4le pour le fournisseur de contr\u00f4le\u00a0%s\u00a0: %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=Le backend de contr\u00f4le ne prend pas en charge les op\u00e9rations d'importation LDIF
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=Le backend de contr\u00f4le ne fournit aucun utilitaire pour les op\u00e9rations de sauvegarde et restauration
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29=Le backend "%s" ne prend pas en charge les op\u00e9rations d'importation LDIF
INFO_MONITOR_USING_NEW_USER_ATTRS_31=La configuration du moniteur ayant \u00e9t\u00e9 mise \u00e0 jour, celui-ci va d\u00e9sormais utiliser un nouveau jeu d'attributs d\u00e9finis par l'utilisateur
ERR_MONITOR_GET_ENTRY_NULL_32=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e demand\u00e9e du backend de moniteur car le DN fourni \u00e9tait null
ERR_BACKEND_GET_ENTRY_NULL_32=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e demand\u00e9e du backend "%s" car le DN fourni \u00e9tait null
ERR_MONITOR_INVALID_BASE_34=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e demand\u00e9e %s du backend de moniteur car le DN ne se trouve pas sous la base de moniteur de %s
INFO_MONITOR_UPTIME_37=%d jours %d heures %d minutes %d secondes
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=Tentative de configuration du backend de sch\u00e9ma sans indiquer d'entr\u00e9e de configuration.  Cela n'est pas autoris\u00e9 et aucune information de sch\u00e9ma n'est disponible sur le protocole
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=Une erreur s'est produite lors de la tentative de d\u00e9termination des DN de base \u00e0 utiliser lors de la publication des informations de sch\u00e9ma Directory Server, comme indiqu\u00e9 dans l'attribut ds-cfg-schema-entry-dn de l'entr\u00e9e de configuration %s\u00a0: %s. Le DN de base de sch\u00e9ma par d\u00e9faut cn=schema va \u00eatre utilis\u00e9
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=Impossible d'ajouter l'entr\u00e9e "%s" car le backend de sch\u00e9ma ne prend pas en charge les op\u00e9rations d'ajout
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=Impossible de supprimer l'entr\u00e9e "%s" car le backend de sch\u00e9ma ne prend pas en charge les op\u00e9rations de suppression
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=Impossible de renommer l'entr\u00e9e "%s" car le backend de sch\u00e9ma ne prend pas en charge les op\u00e9rations de modification de DN
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=Une erreur s'est produite lors de la tentative d'exportation de l'entr\u00e9e de sch\u00e9ma de base\u00a0: %s
ERR_SCHEMA_INVALID_BASE_48=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e demand\u00e9e %s du backend de sch\u00e9ma car le DN est \u00e9gal \u00e0 un des DN d'entr\u00e9e de sch\u00e9ma
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=Une erreur inattendue s'est produite lors de la tentative d'ouverture du processus d'\u00e9criture LDIF pour le backend de sch\u00e9ma\u00a0: %s
@@ -160,7 +152,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=La p\u00e9riode de r\u00e9tention de la t\u00e2che termin\u00e9e a \u00e9t\u00e9 mise \u00e0 jour et dure maintenant %d secondes.  Elle prend effet imm\u00e9diatement
INFO_TASKBE_UPDATED_BACKING_FILE_129=Le chemin vers le fichier de sauvegarde des donn\u00e9es de la t\u00e2che est maintenant %s. Un instantan\u00e9 de la configuration de la t\u00e2che actuelle a \u00e9t\u00e9 \u00e9crit dans ce fichier et continuera \u00e0 \u00eatre utilis\u00e9 pour de futures mises \u00e0 jour
ERR_TASKBE_ADD_DISALLOWED_DN_130=Les nouvelles entr\u00e9es du backend de t\u00e2che ne peuvent \u00eatre ajout\u00e9es qu'imm\u00e9diatement sous %s pour les t\u00e2ches planifi\u00e9es ou imm\u00e9diatement sous %s pour les t\u00e2ches r\u00e9currentes
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=Les op\u00e9rations de modification de DN ne sont pas prises en charge dans le backend de t\u00e2che
INFO_TASKBE_BACKING_FILE_HEADER_132=Ce fichier contient les donn\u00e9es utilis\u00e9es par le backend du planificateur de t\u00e2ches de Directory Server.  N'\u00e9ditez pas directement ce fichier car il existe un risque de perte de ces modifications.  Les d\u00e9finitions de t\u00e2ches planifi\u00e9es et r\u00e9currentes doivent uniquement \u00eatre modifi\u00e9es au moyen des utilitaires d'administration fournis avec Directory Server
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=Impossible d'ajouter la t\u00e2che r\u00e9currente %s au planificateur de t\u00e2ches car il existe d\u00e9j\u00e0 une autre t\u00e2che r\u00e9currente avec le m\u00eame ID
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=Impossible de planifier la t\u00e2che %s car il existe d\u00e9j\u00e0 une autre t\u00e2che avec le m\u00eame ID
@@ -183,7 +174,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=Une erreur s'est produite lors de la tentative de changement du nom du fichier de secours de t\u00e2ches actuel de %s en %s\u00a0: %s. La configuration de t\u00e2ches pr\u00e9c\u00e9dente (qui ne refl\u00e8te pas la derni\u00e8re mise \u00e0 jour) risque d'\u00eatre perdue
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=Une erreur s'est produite lors de la tentative de changement du nom du nouveau fichier de secours de t\u00e2ches de %s en %s\u00a0: %s. Si vous red\u00e9marrez Directory Server, le planificateur de t\u00e2ches risque de ne pas fonctionner comme pr\u00e9vu
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=Une erreur s'est produite lors de la tentative d'\u00e9criture du nouveau fichier de secours de t\u00e2ches %s\u00a0: %s. Les informations de configuration, qui refl\u00e8tent la derni\u00e8re mise \u00e0 jour, risquent d'\u00eatre perdues
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=Le backend de t\u00e2che ne prend pas en charge les op\u00e9rations d'importation LDIF
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=Le backend des t\u00e2ches est en cours de cl\u00f4ture
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=La configuration du DSE racine a \u00e9t\u00e9 mise \u00e0 jour afin que l'attribut de configuration %s utilise d\u00e9sormais une valeur de %s
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=Impossible de supprimer la t\u00e2che en attente %s car elle n'existe pas
@@ -196,9 +186,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=Impossible de traiter l'op\u00e9ration de recherche dans le backend de t\u00e2che car le DN de base fourni (%s) n'est pas valide pour les entr\u00e9es du backend de t\u00e2che
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=Impossible de traiter l'op\u00e9ration de recherche dans le backend de t\u00e2che car aucune t\u00e2che planifi\u00e9e n'est associ\u00e9e \u00e0 l'entr\u00e9e de base de recherche fournie (%s)
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=Impossible de traiter l'op\u00e9ration de recherche dans le backend de t\u00e2che car aucune t\u00e2che r\u00e9currente n'est associ\u00e9e \u00e0 l'entr\u00e9e de base de recherche fournie (%s)
ERR_BACKUP_CONFIG_ENTRY_NULL_171=Impossible d'initialiser le backend de sauvegarde car l'entr\u00e9e de configuration fournie est Null
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=Impossible d'initialiser le backend de sauvegarde car une erreur s'est produite lors de la tentative de d\u00e9codage du DN de base pour ce backend\u00a0: %s
ERR_BACKUP_GET_ENTRY_NULL_175=Impossible de r\u00e9cup\u00e9rer une entr\u00e9e depuis le backend de sauvegarde car l'entr\u00e9e demand\u00e9e \u00e9tait Null
ERR_BACKEND_CONFIG_ENTRY_NULL_171=Impossible d'initialiser le backend "%s" car l'entr\u00e9e de configuration fournie est Null
ERR_BACKUP_INVALID_BASE_176=L'entr\u00e9e demand\u00e9e (%s) n'existe pas dans le backend de sauvegarde
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e %s depuis le backend de sauvegarde car le DN demand\u00e9 est un niveau au-dessous du DN de base mais n'indique aucun r\u00e9pertoire de sauvegarde
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e %s depuis le backend de sauvegarde car le r\u00e9pertoire de sauvegarde demand\u00e9 n'est pas valide\u00a0: %s
@@ -207,19 +195,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e %s depuis le backend de sauvegarde car elle n'a pas de parent
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=Impossible de r\u00e9cup\u00e9rer l'entr\u00e9e %s depuis le backend de sauvegarde car le DN ne contient pas le r\u00e9pertoire de sauvegarde o\u00f9 la sauvegarde demand\u00e9e doit r\u00e9sider
ERR_BACKUP_NO_SUCH_BACKUP_183=La sauvegarde %s n'existe pas dans le r\u00e9pertoire de sauvegarde %s
ERR_BACKUP_ADD_NOT_SUPPORTED_184=Les op\u00e9rations d'ajout ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=Les op\u00e9rations de suppression ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=Les op\u00e9rations de modification de DN ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_NO_SUCH_ENTRY_188=L'entr\u00e9e demand\u00e9e (%s) n'existe pas dans le backend de sauvegarde
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=Les op\u00e9rations d'exportation LDIF ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=Les op\u00e9rations d'importation LDIF  ne sont pas prises en charge dans le backend de sauvegarde
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=Les op\u00e9rations de sauvegarde et restauration ne sont pas prises en charge dans le backend de sauvegarde
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Vous devez indiquer un seul DN de base \u00e0 utiliser avec le backend bas\u00e9 sur la m\u00e9moire
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=L'entr\u00e9e %s existe d\u00e9j\u00e0 dans le backend bas\u00e9 sur la m\u00e9moire
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=L'entr\u00e9e %s n'appartient pas au backend bas\u00e9 sur la m\u00e9moire
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=Impossible d'ajouter l'entr\u00e9e %s car son entr\u00e9e parente (%s) n'existe pas dans le backend bas\u00e9 sur la m\u00e9moire
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=L'entr\u00e9e %s n'existe pas dans le backend bas\u00e9 sur la m\u00e9moire
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=L'entr\u00e9e %s n'existe pas dans le backend "%s"
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=Impossible de supprimer l'entr\u00e9e %s car elle poss\u00e8de une ou plusieurs entr\u00e9es subordonn\u00e9es
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Impossible de cr\u00e9er un g\u00e9n\u00e9rateur LDIF\u00a0:  %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=Impossible d'\u00e9crire l'entr\u00e9e %s dans le fichier LDIF\u00a0: %s
@@ -314,15 +296,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=L'environnement de bases de donn\u00e9es JE correspondant \u00e0 l 'id de backend %s est corrompu. Red\u00e9marrez Directory Server pour rouvrir l'environnement
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=Directory Server n'est pas configur\u00e9 pour autoriser l'appel de la t\u00e2che %s
INFO_TASK_COMPLETION_BODY_299=ID de t\u00e2che\u00a0:  %s\r\n\u00c9tat de la t\u00e2che:  %s\r\nHeure de d\u00e9but planifi\u00e9e\u00a0:  %s\r\nHeure de d\u00e9but r\u00e9elle\u00a0:  %s\r\nHeure d'ach\u00e8vement\u00a0:  %s\r\n\r\nMessages du fichier journal\u00a0:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=Impossible de r\u00e9cup\u00e9rer une entr\u00e9e depuis le backend de magasin d'approbations car l'entr\u00e9e demand\u00e9e \u00e9tait Null
ERR_TRUSTSTORE_INVALID_BASE_301=L'entr\u00e9e %s demand\u00e9e n'existe pas dans le backend de magasin d'approbations
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=Impossible de traiter l'entr\u00e9e %s dans le backend de magasin d'approbations car le DN demand\u00e9 est un niveau au-dessous du DN de base mais n'indique aucun nom de certificat
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Erreur lors de la tentative de r\u00e9cup\u00e9ration du certificat %s dans le fichier de magasin d'approbations %s\u00a0: %s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de magasin d'approbations
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=Les op\u00e9rations de modification de DN ne sont pas prises en charge dans le backend de magasin d'approbations
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=Impossible d'initialiser le backend de magasin d'approbations depuis l'entr\u00e9e de configuration %s car elle ne contient pas un DN de base unique
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=Les op\u00e9rations d'importation et d'exportation LDIF ne sont pas prises en charge dans le backend de magasin d'approbations
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Les op\u00e9rations de sauvegarde et restauration ne sont pas prises en charge dans le backend de magasin d'approbations
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=Les op\u00e9rations d'importation et d'exportation LDIF ne sont pas prises en charge dans le backend "%s"
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Les op\u00e9rations de sauvegarde et restauration ne sont pas prises en charge dans le backend "%s"
ERR_TRUSTSTORE_NO_SUCH_FILE_309=Le fichier de magasin d'approbations %s indiqu\u00e9 dans l'attribut ds-cfg-trust-store-file de l'entr\u00e9e de configuration %s n'existe pas
ERR_TRUSTSTORE_INVALID_TYPE_310=Le type de magasin d'approbations %s indiqu\u00e9 dans l'attribut ds-cfg-trust-store-type de l'entr\u00e9e de configuration %s n'est pas valide\u00a0: %s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=Une erreur s'est produite lors de la tentative de cr\u00e9ation du fichier PIN %s sp\u00e9cifi\u00e9 dans l'attribut ds-cfg-trust-store-pin-file de l'entr\u00e9e de configuration %s
opendj3-server-dev/src/messages/messages/backend_ja.properties
@@ -51,39 +51,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=\u30d9\u30fc\u30b9 DN "%s" \u306f\u3001\u30eb\u30fc\u30c8 DSE \u4ee5\u4e0b\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u4e0b\u4f4d\u30d9\u30fc\u30b9 DN \u306e 1 \u3064\u3068\u3057\u3066\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u3053\u306e\u30d9\u30fc\u30b9 DN \u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u306b\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u3067\u306f\u51e6\u7406\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=\u30eb\u30fc\u30c8 DSE \u4ee5\u4e0b\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u4e00\u9023\u306e\u4e0b\u4f4d\u30d9\u30fc\u30b9 DN \u3092\u5224\u65ad\u4e2d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304c\u3001DN \u304c "%s" \u306e\u30a8\u30f3\u30c8\u30ea\u3092\u53d6\u5f97\u3059\u308b\u3088\u3046\u8981\u6c42\u3055\u308c\u307e\u3057\u305f\u3002  \u3053\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306f\u3001\u30eb\u30fc\u30c8 DSE \u81ea\u4f53\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408\u306e\u307f\u8981\u6c42\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002  \u305f\u3060\u3057\u3001\u5b9a\u7fa9\u6e08\u307f\u306e\u4e0b\u4f4d\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3001\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u3092\u898b\u3064\u3051\u3089\u308c\u308b\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u3057\u307e\u3059
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u8ffd\u52a0\u3057\u307e\u305b\u3093\u3002\u8ffd\u52a0\u64cd\u4f5c\u306f\u3001\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u524a\u9664\u3057\u307e\u305b\u3093\u3002\u524a\u9664\u64cd\u4f5c\u306f\u3001\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u66f4\u65b0\u3057\u307e\u305b\u3093\u3002\u5909\u66f4\u64cd\u4f5c\u306f\u3001\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002  \u30eb\u30fc\u30c8 DSE \u81ea\u4f53\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5909\u66f4\u3059\u308b\u5834\u5408\u306f\u3001\u69cb\u6210\u306e "%s" \u30a8\u30f3\u30c8\u30ea\u3092\u4fee\u6b63\u3059\u308b\u3053\u3068\u3067\u5909\u66f4\u3067\u304d\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u305b\u3093\u3002DN \u5909\u66f4\u64cd\u4f5c\u306f\u3001\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 "%3$s" \u306e\u30d9\u30fc\u30b9 DN \u3092\u4f7f\u7528\u3057\u3066\u691c\u7d22 (\u63a5\u7d9a ID %1$d\u3001\u64cd\u4f5c ID %2$d) \u3092\u5b9f\u884c\u3057\u307e\u305b\u3093\u3002  \u3053\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e \u691c\u7d22\u306e\u30d9\u30fc\u30b9 DN \u306f\u3001\u30eb\u30fc\u30c8 DSE \u81ea\u4f53\u306e DN \u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u691c\u7d22\u64cd\u4f5c (\u63a5\u7d9a ID %d\u3001\u64cd\u4f5c ID %d) \u3092\u51e6\u7406\u4e2d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u969c\u5bb3\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=\u63a5\u7d9a ID %d \u304a\u3088\u3073\u64cd\u4f5c ID %d \u306e\u691c\u7d22\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002%s \u306e\u7bc4\u56f2\u304c\u7121\u52b9\u3067\u3059
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e LDIF \u30e9\u30a4\u30bf\u30fc\u3092\u958b\u304f\u3068\u304d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=\u6307\u5b9a\u3055\u308c\u305f LDIF \u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u30eb\u30fc\u30c8 DSE \u30a8\u30f3\u30c8\u30ea\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u30a4\u30f3\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=\u30eb\u30fc\u30c8 DSE \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073\u5fa9\u5143\u64cd\u4f5c\u306e\u305f\u3081\u306e\u6a5f\u69cb\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30eb\u30fc\u30c8 DSE \u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u69cb\u6210\u306e\u4e00\u90e8\u3068\u3057\u3066\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u3066\u304f\u3060\u3055\u3044
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=\u30eb\u30fc\u30c8 DSE \u69cb\u6210\u304c\u66f4\u65b0\u3055\u308c\u3001\u30eb\u30fc\u30c8 DSE \u3088\u308a\u4e0b\u4f4d\u306e\u691c\u7d22\u5b9f\u884c\u6642\u306b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u30b5\u30d5\u30a3\u30c3\u30af\u30b9\u306e\u5b9a\u7fa9\u6e08\u307f\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=\u30eb\u30fc\u30c8 DSE \u69cb\u6210\u304c\u66f4\u65b0\u3055\u308c\u3001\u30eb\u30fc\u30c8 DSE \u3088\u308a\u4e0b\u4f4d\u306e\u5b9f\u884c\u6642\u306b\u30d9\u30fc\u30b9 DN \u30bb\u30c3\u30c8 %s \u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=\u30eb\u30fc\u30c8 DSE \u69cb\u6210\u304c\u66f4\u65b0\u3055\u308c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5b9a\u7fa9\u3057\u305f\u65b0\u898f\u5c5e\u6027\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f
ERR_MONITOR_CONFIG_ENTRY_NULL_21=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea\u3092\u6307\u5b9a\u305b\u305a\u306b\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u69cb\u6210\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u30d7\u30ed\u30c8\u30b3\u30eb\u7d4c\u7531\u3067\u76e3\u8996\u60c5\u5831\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=cn=monitor \u3092\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u76e3\u8996\u60c5\u5831\u306e\u30d9\u30fc\u30b9 DN \u3068\u3057\u3066\u30c7\u30b3\u30fc\u30c9\u4e2d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s\u3002\u30d7\u30ed\u30c8\u30b3\u30eb\u7d4c\u7531\u3067\u76e3\u8996\u60c5\u5831\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093
ERR_MONITOR_ADD_NOT_SUPPORTED_23=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u8ffd\u52a0\u3057\u307e\u305b\u3093\u3002\u8ffd\u52a0\u64cd\u4f5c\u306f\u3001\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u524a\u9664\u3057\u307e\u305b\u3093\u3002\u524a\u9664\u64cd\u4f5c\u306f\u3001\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_ADD_NOT_SUPPORTED_23=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u8ffd\u52a0\u3057\u307e\u305b\u3093\u3002\u8ffd\u52a0\u64cd\u4f5c\u306f\u3001 "%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u524a\u9664\u3057\u307e\u305b\u3093\u3002\u524a\u9664\u64cd\u4f5c\u306f\u3001 "%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u66f4\u65b0\u3057\u307e\u305b\u3093\u3002\u5909\u66f4\u64cd\u4f5c\u306f\u3001\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002  \u30d9\u30fc\u30b9\u76e3\u8996\u30a8\u30f3\u30c8\u30ea\u81ea\u4f53\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5909\u66f4\u3059\u308b\u5834\u5408\u306f\u3001\u69cb\u6210\u306e "%s" \u30a8\u30f3\u30c8\u30ea\u3092\u4fee\u6b63\u3059\u308b\u3053\u3068\u3067\u5909\u66f4\u3067\u304d\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u305b\u3093\u3002DN \u5909\u66f4\u64cd\u4f5c\u306f\u3001\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u305b\u3093\u3002DN \u5909\u66f4\u64cd\u4f5c\u306f\u3001 "%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\u30d9\u30fc\u30b9\u76e3\u8996\u30a8\u30f3\u30c8\u30ea\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=\u30e2\u30cb\u30bf\u30fc\u30d7\u30ed\u30d0\u30a4\u30c0 %s \u306e\u76e3\u8996\u30a8\u30f3\u30c8\u30ea\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u30a4\u30f3\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073\u5fa9\u5143\u64cd\u4f5c\u306e\u305f\u3081\u306e\u6a5f\u69cb\u304c\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29="%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u30a4\u30f3\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
INFO_MONITOR_USING_NEW_USER_ATTRS_31=\u76e3\u8996\u69cb\u6210\u304c\u66f4\u65b0\u3055\u308c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5b9a\u7fa9\u3057\u305f\u65b0\u898f\u5c5e\u6027\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f
ERR_MONITOR_GET_ENTRY_NULL_32=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u3092\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f DN \u304c NULL \u3067\u3057\u305f
ERR_BACKEND_GET_ENTRY_NULL_32=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u3092 "%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f DN \u304c NULL \u3067\u3057\u305f
ERR_MONITOR_INVALID_BASE_34=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea %s \u3092\u76e3\u8996\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002DN \u304c %s \u306e\u76e3\u8996\u30d9\u30fc\u30b9\u3088\u308a\u4e0b\u3067\u306f\u3042\u308a\u307e\u305b\u3093
INFO_MONITOR_UPTIME_37=%d \u65e5 %d \u6642\u9593 %d \u5206 %d \u79d2
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea\u3092\u6307\u5b9a\u305b\u305a\u306b\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u69cb\u6210\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306f\u8a31\u53ef\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u30d7\u30ed\u30c8\u30b3\u30eb\u7d4c\u7531\u3067\u30b9\u30ad\u30fc\u30de\u60c5\u5831\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea %s \u306e ds-cfg-schema-entry-dn \u5c5e\u6027\u3067\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u306e\u30b9\u30ad\u30fc\u30de\u60c5\u5831\u516c\u958b\u6642\u306b\u4f7f\u7528\u3059\u308b\u30d9\u30fc\u30b9 DN \u3092\u5224\u65ad\u4e2d\u306b\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s\u3002cn=schema \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b9\u30ad\u30fc\u30de\u30d9\u30fc\u30b9 DN \u304c\u4f7f\u7528\u3055\u308c\u307e\u3059
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u8ffd\u52a0\u3057\u307e\u305b\u3093\u3002\u8ffd\u52a0\u64cd\u4f5c\u306f\u3001\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u524a\u9664\u3057\u307e\u305b\u3093\u3002\u524a\u9664\u64cd\u4f5c\u306f\u3001\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=\u30a8\u30f3\u30c8\u30ea "%s" \u3092\u30ea\u30cd\u30fc\u30e0\u3057\u307e\u305b\u3093\u3002DN \u5909\u66f4\u64cd\u4f5c\u306f\u3001\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u30a8\u30f3\u30c8\u30ea\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_SCHEMA_INVALID_BASE_48=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea %s \u3092\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002DN \u304c\u30b9\u30ad\u30fc\u30de\u30a8\u30f3\u30c8\u30ea DN \u306e\u3044\u305a\u308c\u304b\u3068\u540c\u3058\u3067\u3059
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=\u30b9\u30ad\u30fc\u30de\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e LDIF \u30e9\u30a4\u30bf\u30fc\u3092\u958b\u304f\u3068\u304d\u306b\u3001\u4e88\u671f\u3057\u306a\u3044\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
@@ -159,7 +151,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=\u5b8c\u4e86\u30bf\u30b9\u30af\u306e\u4fdd\u6301\u671f\u9593\u304c %d \u79d2\u306b\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002  \u3053\u308c\u306f\u305f\u3060\u3061\u306b\u6709\u52b9\u306b\u306a\u308a\u307e\u3059
INFO_TASKBE_UPDATED_BACKING_FILE_129=\u30bf\u30b9\u30af\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30ad\u30f3\u30b0\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30d1\u30b9\u304c %s \u306b\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u73fe\u5728\u306e\u30bf\u30b9\u30af\u69cb\u6210\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u306f\u3001\u305d\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u307f\u6e08\u307f\u3067\u3001\u4eca\u5f8c\u306e\u66f4\u65b0\u3067\u7d99\u7d9a\u3057\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059
ERR_TASKBE_ADD_DISALLOWED_DN_130=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u5185\u306e\u65b0\u3057\u3044\u30a8\u30f3\u30c8\u30ea\u3092\u8ffd\u52a0\u3067\u304d\u308b\u306e\u306f\u3001\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u305f\u30bf\u30b9\u30af\u306e %s \u306e\u76f4\u4e0b\u3001\u307e\u305f\u306f\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af\u306e %s \u306e\u76f4\u4e0b\u306e\u307f\u3067\u3059
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 DN \u306e\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
INFO_TASKBE_BACKING_FILE_HEADER_132=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u306e\u30bf\u30b9\u30af\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u304c\u542b\u307e\u308c\u307e\u3059\u3002  \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u76f4\u63a5\u7de8\u96c6\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u5909\u66f4\u304c\u5931\u308f\u308c\u308b\u304a\u305d\u308c\u304c\u3042\u308a\u307e\u3059\u3002  \u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u30bf\u30b9\u30af\u3068\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af\u306e\u5b9a\u7fa9\u306f\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u3067\u63d0\u4f9b\u3055\u308c\u308b\u7ba1\u7406\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u306e\u307f\u7de8\u96c6\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af %s \u3092\u30bf\u30b9\u30af\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u3058 ID \u306e\u5225\u306e\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=\u30bf\u30b9\u30af %s \u3092\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u3058 ID \u306e\u5225\u306e\u30bf\u30b9\u30af\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059
@@ -182,7 +173,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=\u73fe\u5728\u306e\u30bf\u30b9\u30af\u30d0\u30c3\u30ad\u30f3\u30b0\u30d5\u30a1\u30a4\u30eb\u540d\u3092 %s \u304b\u3089 %s \u306b\u5909\u66f4\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s\u3002\u4ee5\u524d\u306e\u30bf\u30b9\u30af\u69cb\u6210 (\u6700\u65b0\u306e\u66f4\u65b0\u304c\u53cd\u6620\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e) \u304c\u5931\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=\u65b0\u3057\u3044\u30bf\u30b9\u30af\u30d0\u30c3\u30ad\u30f3\u30b0\u30d5\u30a1\u30a4\u30eb\u540d\u3092 %s \u304b\u3089 %s \u306b\u5909\u66f4\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s\u3002\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3059\u308b\u3068\u3001\u30bf\u30b9\u30af\u30b9\u30b1\u30b8\u30e5\u30fc\u30e9\u304c\u4e88\u671f\u3057\u305f\u3068\u304a\u308a\u306b\u52d5\u4f5c\u3057\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=\u65b0\u3057\u3044\u30bf\u30b9\u30af\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30ad\u30f3\u30b0\u30d5\u30a1\u30a4\u30eb %s \u3092\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s\u3002\u6700\u65b0\u306e\u66f4\u65b0\u3092\u53cd\u6620\u3057\u305f\u69cb\u6210\u60c5\u5831\u304c\u5931\u308f\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u30a4\u30f3\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u30b7\u30e3\u30c3\u30c8\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=\u30eb\u30fc\u30c8 DSE \u69cb\u6210\u304c\u66f4\u65b0\u3055\u308c\u3001\u8a2d\u5b9a\u5c5e\u6027 %s \u3067 %s \u306e\u5024\u3092\u4f7f\u7528\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=\u4fdd\u7559\u4e2d\u306e\u30bf\u30b9\u30af %s \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u306e\u3088\u3046\u306a\u30bf\u30b9\u30af\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
@@ -195,9 +185,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u691c\u7d22\u64cd\u4f5c\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f\u30d9\u30fc\u30b9 DN %s \u306f\u3001\u3053\u306e\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30a8\u30f3\u30c8\u30ea\u3068\u3057\u3066\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u691c\u7d22\u64cd\u4f5c\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f\u691c\u7d22\u30d9\u30fc\u30b9\u30a8\u30f3\u30c8\u30ea %s \u306b\u3001\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u305f\u30bf\u30b9\u30af\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=\u30bf\u30b9\u30af\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u691c\u7d22\u64cd\u4f5c\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f\u691c\u7d22\u30d9\u30fc\u30b9\u30a8\u30f3\u30c8\u30ea %s \u306b\u3001\u7e70\u308a\u8fd4\u3057\u30bf\u30b9\u30af\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_CONFIG_ENTRY_NULL_171=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f\u69cb\u6210\u30a8\u30f3\u30c8\u30ea\u304c NULL \u3067\u3059
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30d9\u30fc\u30b9 DN \u3092\u30c7\u30b3\u30fc\u30c9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %s
ERR_BACKUP_GET_ENTRY_NULL_175=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u304c NULL \u3067\u3057\u305f
ERR_BACKEND_CONFIG_ENTRY_NULL_171="%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u6307\u5b9a\u3055\u308c\u305f\u69cb\u6210\u30a8\u30f3\u30c8\u30ea\u304c NULL \u3067\u3059
ERR_BACKUP_INVALID_BASE_176=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea %s \u304c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea %s \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f DN \u306f\u30d9\u30fc\u30b9 DN \u306e 1 \u30ec\u30d9\u30eb\u4e0b\u306b\u3042\u308a\u307e\u3059\u304c\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea %s \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u7121\u52b9\u3067\u3059: %s
@@ -206,19 +194,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea %s \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u89aa\u304c\u3042\u308a\u307e\u305b\u3093
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea %s \u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304c\u3042\u308b\u306f\u305a\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c DN \u306b\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_NO_SUCH_BACKUP_183=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7 %s \u304c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30c7\u30a3\u30ec\u30af\u30c8\u30ea %s \u5185\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_BACKUP_ADD_NOT_SUPPORTED_184=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u8ffd\u52a0\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u524a\u9664\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 DN \u306e\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_NO_SUCH_ENTRY_188=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea %s \u304c\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073\u5fa9\u5143\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=\u30e1\u30e2\u30ea\u30fc\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u30d9\u30fc\u30b9 DN \u3092 1 \u3064\u3060\u3051\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=\u30a8\u30f3\u30c8\u30ea %s \u306f\u3001\u30e1\u30e2\u30ea\u30fc\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\u30a8\u30f3\u30c8\u30ea %s \u306f\u3001\u30e1\u30e2\u30ea\u30fc\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5c5e\u3057\u307e\u305b\u3093
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=\u30a8\u30f3\u30c8\u30ea %s \u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002\u89aa\u30a8\u30f3\u30c8\u30ea %s \u304c\u30e1\u30e2\u30ea\u30fc\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\u30a8\u30f3\u30c8\u30ea %s \u306f\u3001\u30e1\u30e2\u30ea\u30fc\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=\u30a8\u30f3\u30c8\u30ea %s \u306f\u3001 "%s" \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=\u30a8\u30f3\u30c8\u30ea %s \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\u4e0b\u4f4d\u30a8\u30f3\u30c8\u30ea\u304c 1 \u3064\u4ee5\u4e0a\u3042\u308a\u307e\u3059
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Unable to create an LDIF writer: %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\u30a8\u30f3\u30c8\u30ea %s \u3092 LDIF \u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093: %s
@@ -313,15 +295,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=\u30d0\u30c3\u30af\u30a8\u30f3\u30c9 ID %s \u306b\u5bfe\u5fdc\u3059\u308b JE \u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u74b0\u5883\u304c\u58ca\u308c\u3066\u3044\u307e\u3059\u3002 \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u3001\u74b0\u5883\u3092\u958b\u304d\u76f4\u3057\u3066\u304f\u3060\u3055\u3044
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=\u30bf\u30b9\u30af %s \u306e\u547c\u3073\u51fa\u3057\u3092\u8a31\u53ef\u3059\u308b\u3088\u3046\u306b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30b5\u30fc\u30d0\u30fc\u304c\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093
INFO_TASK_COMPLETION_BODY_299=\u30bf\u30b9\u30af ID:  %s\r\n\u30bf\u30b9\u30af\u306e\u72b6\u614b:  %s\r\n\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u3055\u308c\u305f\u958b\u59cb\u6642\u523b:  %s\r\n\u5b9f\u969b\u306e\u958b\u59cb\u6642\u523b:  %s\r\n\u5b8c\u4e86\u6642\u523b:  %s\r\n\r\n\u30ed\u30b0\u30e1\u30c3\u30bb\u30fc\u30b8:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u30a8\u30f3\u30c8\u30ea\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea\u304c NULL \u3067\u3057\u305f
ERR_TRUSTSTORE_INVALID_BASE_301=\u8981\u6c42\u3055\u308c\u305f\u30a8\u30f3\u30c8\u30ea %s \u304c\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u5185\u306e\u30a8\u30f3\u30c8\u30ea %s \u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093\u3002\u8981\u6c42\u3055\u308c\u305f DN \u306f\u30d9\u30fc\u30b9 DN \u306e 1 \u30ec\u30d9\u30eb\u4e0b\u306b\u3042\u308a\u307e\u3059\u304c\u3001\u8a3c\u660e\u66f8\u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb %2$s \u304b\u3089\u8a3c\u660e\u66f8 %1$s \u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: %3$s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 DN \u306e\u5909\u66f4\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea %s \u304b\u3089\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3002\u542b\u307e\u308c\u308b\u30d9\u30fc\u30b9 DN \u304c 1 \u3064\u3067\u306f\u3042\u308a\u307e\u305b\u3093
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067 LDIF \u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304a\u3088\u3073\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3067\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073\u5fa9\u5143\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" LDIF \u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u304a\u3088\u3073\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s"\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u304a\u3088\u3073\u5fa9\u5143\u64cd\u4f5c\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093
ERR_TRUSTSTORE_NO_SUCH_FILE_309=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea %2$s \u306e ds-cfg-trust-store-file \u5c5e\u6027\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30d5\u30a1\u30a4\u30eb %1$s \u304c\u5b58\u5728\u3057\u307e\u305b\u3093
ERR_TRUSTSTORE_INVALID_TYPE_310=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea %2$s \u306e ds-cfg-trust-store-type \u5c5e\u6027\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b\u30c8\u30e9\u30b9\u30c8\u30b9\u30c8\u30a2\u30bf\u30a4\u30d7 %1$s \u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093: %3$s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=\u69cb\u6210\u30a8\u30f3\u30c8\u30ea %2$s \u306e ds-cfg-trust-store-pin-file \u5c5e\u6027\u306b\u6307\u5b9a\u3055\u308c\u3066\u3044\u308b PIN \u30d5\u30a1\u30a4\u30eb %1$s \u3092\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f
opendj3-server-dev/src/messages/messages/backend_ko.properties
@@ -51,39 +51,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=\uae30\ubcf8 DN \"%s\"\uc740(\ub294) \ub8e8\ud2b8 DSE \uc544\ub798\uc5d0\uc11c \uac80\uc0c9\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \ud558\uc704 \uae30\ubcf8 DN \uc911 \ud558\ub098\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.  \ud558\uc9c0\ub9cc \uc774 \uae30\ubcf8 DN\uc740 \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84\uc5d0 \ub4f1\ub85d\ub41c \uc811\ubbf8\uc0ac\uc5d0 \uc758\ud574 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc0ac\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=\ub8e8\ud2b8 DSE \uc544\ub798\uc5d0\uc11c \uac80\uc0c9\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \ud558\uc704 \uae30\ubcf8 DN \uc9d1\ud569\uc744 \ud655\uc778\ud558\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uac00 DN\uc774 \"%s\"\uc778 \ud56d\ubaa9\uc744 \uac80\uc0c9\ud558\ub3c4\ub85d \uc694\uccad \ubc1b\uc558\uc2b5\ub2c8\ub2e4.  \uc774 \ubc31\uc5d4\ub4dc\ub294 \ub8e8\ud2b8 DSE \uc790\uccb4\ub9cc \uac80\uc0c9\ud558\ub3c4\ub85d \uc694\uccad \ubc1b\uc544\uc57c \ud569\ub2c8\ub2e4.  \ud558\uc9c0\ub9cc \uc815\uc758\ub41c \ud558\uc704 \ubc31\uc5d4\ub4dc\ub97c \uac80\uc0ac\ud558\uc5ec \uc694\uccad\ud55c \ud56d\ubaa9\uc744 \ucc3e\uc744 \uc218 \uc788\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ucd94\uac00 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc0ad\uc81c \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc81c\uac70\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \ub8e8\ud2b8 DSE \uc790\uccb4\uc758 \ub0b4\uc6a9\uc744 \ubcc0\uacbd\ud558\ub824\ub294 \uacbd\uc6b0 \uad6c\uc131\uc5d0\uc11c \"%s\" \ud56d\ubaa9\uc744 \uc218\uc815\ud558\uba74 \uac00\ub2a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \"%3$s\"\uc758 \uae30\ubcf8 DN\uc73c\ub85c \uac80\uc0c9(\uc5f0\uacb0 ID %1$d, \uc791\uc5c5 ID %2$d)\uc774 \uc218\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \uc774 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uac80\uc0c9\ud560 \uae30\ubcf8 DN\uc740 \ub8e8\ud2b8 DSE \uc790\uccb4\uc758 DN\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uac80\uc0c9 \uc791\uc5c5(\uc5f0\uacb0 ID %d, \uc791\uc5c5 ID %d)\uc744 \ucc98\ub9ac\ud558\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=%3$s \ubc94\uc704\uac00 \uc798\ubabb\ub418\uc5c8\uc73c\ubbc0\ub85c \uc5f0\uacb0 ID %1$d \ubc0f \uc791\uc5c5 ID %2$d(\uc73c)\ub85c \uac80\uc0c9\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\uc5d0 \ub300\ud55c LDIF \uc791\uc131\uae30\ub97c \uc5ec\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=\ub8e8\ud2b8 DSE \ud56d\ubaa9\uc744 \uc9c0\uc815\ub41c LDIF \ub300\uc0c1\uc5d0 \ub0b4\ubcf4\ub0b4\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\ub294 LDIF \uac00\uc838\uc624\uae30 \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=\ub8e8\ud2b8 DSE \ubc31\uc5d4\ub4dc\ub294 \ubc31\uc5c5 \ubc0f \ubcf5\uc6d0 \uc791\uc5c5\uc744 \uc704\ud55c \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \ub8e8\ud2b8 DSE\uc758 \ub0b4\uc6a9\uc740 \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84 \uad6c\uc131\uc758 \uc77c\ubd80\ub85c \ubc31\uc5c5\ud574\uc57c \ud569\ub2c8\ub2e4.
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=\ub8e8\ud2b8 DSE \uad6c\uc131\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c \ub8e8\ud2b8 DSE \uc544\ub798\uc5d0\uc11c \uac80\uc0c9\uc744 \uc218\ud589\ud560 \ub54c \uc815\uc758\ub41c \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84 \uc811\ubbf8\uc0ac \uc9d1\ud569\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=\ub8e8\ud2b8 DSE \uad6c\uc131\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c \ub8e8\ud2b8 DSE \uc544\ub798\uc5d0\uc11c \uc218\ud589\ud560 \ub54c \uae30\ubcf8 DN \uc9d1\ud569 %s\uc774(\uac00) \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=\ub8e8\ud2b8 DSE \uad6c\uc131\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c \uc0c8 \uc0ac\uc6a9\uc790 \uc815\uc758 \uc18d\uc131 \uc9d1\ud569\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
ERR_MONITOR_CONFIG_ENTRY_NULL_21=\uad6c\uc131 \ud56d\ubaa9\uc744 \uc81c\uacf5\ud558\uc9c0 \uc54a\uace0 \ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\ub97c \uad6c\uc131\ud558\ub824\uace0 \ud588\uc2b5\ub2c8\ub2e4.  \uc774\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ud504\ub85c\ud1a0\ucf5c\uc744 \ud1b5\ud574 \ubaa8\ub2c8\ud130 \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=cn=monitor\uc758 \uc554\ud638\ub97c \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84 \ubaa8\ub2c8\ud130 \uc815\ubcf4\uc5d0 \ub300\ud55c \uae30\ubcf8 DN\uc73c\ub85c \ud574\ub3c5\ud558\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s. \ud504\ub85c\ud1a0\ucf5c\uc744 \ud1b5\ud574 \ubaa8\ub2c8\ud130 \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_ADD_NOT_SUPPORTED_23=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ucd94\uac00 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc0ad\uc81c \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc81c\uac70\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_ADD_NOT_SUPPORTED_23="%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ucd94\uac00 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_DELETE_NOT_SUPPORTED_24="%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc0ad\uc81c \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc81c\uac70\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.  \uae30\ubcf8 \ubaa8\ub2c8\ud130 \ud56d\ubaa9 \uc790\uccb4\uc758 \ub0b4\uc6a9\uc744 \ubcc0\uacbd\ud558\ub824\ub294 \uacbd\uc6b0 \uad6c\uc131\uc5d0\uc11c \"%s\" \ud56d\ubaa9\uc744 \uc218\uc815\ud558\uba74 \uac00\ub2a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26="%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\uae30\ubcf8 \ubaa8\ub2c8\ud130 \ud56d\ubaa9\uc744 \ub0b4\ubcf4\ub0b4\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=\ubaa8\ub2c8\ud130 \uacf5\uae09\uc790 %s\uc5d0 \ub300\ud55c \ubaa8\ub2c8\ud130 \ud56d\ubaa9\uc744 \ub0b4\ubcf4\ub0b4\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\ub294 LDIF \uac00\uc838\uc624\uae30 \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=\ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\ub294 \ubc31\uc5c5 \ubc0f \ubcf5\uc6d0 \uc791\uc5c5\uc744 \uc704\ud55c \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29="%s" \ubc31\uc5d4\ub4dc\ub294 LDIF \uac00\uc838\uc624\uae30 \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
INFO_MONITOR_USING_NEW_USER_ATTRS_31=\ubaa8\ub2c8\ud130 \uad6c\uc131\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c \uc0c8 \uc0ac\uc6a9\uc790 \uc815\uc758 \uc18d\uc131 \uc9d1\ud569\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
ERR_MONITOR_GET_ENTRY_NULL_32=\uc81c\uacf5\ub41c DN\uc774 Null\uc774\ubbc0\ub85c \ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uc694\uccad\ud55c \ud56d\ubaa9\uc744 \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_GET_ENTRY_NULL_32=\uc81c\uacf5\ub41c DN\uc774 Null\uc774\ubbc0\ub85c "%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uc694\uccad\ud55c \ud56d\ubaa9\uc744 \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MONITOR_INVALID_BASE_34=DN\uc774 %2$s\uc758 \ubaa8\ub2c8\ud130 \uae30\ubcf8 \uc544\ub798\uc5d0 \uc788\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ubaa8\ub2c8\ud130 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uc694\uccad\ud55c \ud56d\ubaa9 %1$s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
INFO_MONITOR_UPTIME_37=%d\uc77c %d\uc2dc\uac04 %d\ubd84 %d\ucd08
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=\uad6c\uc131 \ud56d\ubaa9\uc744 \uc81c\uacf5\ud558\uc9c0 \uc54a\uace0 \uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\ub97c \uad6c\uc131\ud558\ub824\uace0 \ud588\uc2b5\ub2c8\ub2e4.  \uc774\ub294 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ud504\ub85c\ud1a0\ucf5c\uc744 \ud1b5\ud574 \uc2a4\ud0a4\ub9c8 \uc815\ubcf4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=\uad6c\uc131 \ud56d\ubaa9 %s\uc758 ds-cfg-schema-entry-dn \uc18d\uc131\uc5d0 \uc9c0\uc815\ub41c \ub300\ub85c \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84 \uc2a4\ud0a4\ub9c8 \uc815\ubcf4\ub97c \uac8c\uc2dc\ud560 \ub54c \uc0ac\uc6a9\ud560 \uae30\ubcf8 DN\uc744 \ud655\uc778\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s. \uae30\ubcf8 \uc2a4\ud0a4\ub9c8 \uae30\ubcf8 DN\uc778 cn=schema\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=\uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ucd94\uac00 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \ucd94\uac00\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=\uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc0ad\uc81c \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9\uc774 \uc81c\uac70\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=\uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\ubbc0\ub85c \"%s\" \ud56d\ubaa9 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\uae30\ubcf8 \uc2a4\ud0a4\ub9c8 \ud56d\ubaa9\uc744 \ub0b4\ubcf4\ub0b4\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %s
ERR_SCHEMA_INVALID_BASE_48=DN\uc774 \uc2a4\ud0a4\ub9c8 \ud56d\ubaa9 DN \uc911 \ud558\ub098\uc640 \ub3d9\uc77c\ud558\ubbc0\ub85c \uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uc694\uccad\ud55c \ud56d\ubaa9 %s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=\uc2a4\ud0a4\ub9c8 \ubc31\uc5d4\ub4dc\uc5d0 \ub300\ud55c  LDIF \uc791\uc131\uae30\ub97c \uc5ec\ub294 \ub3d9\uc548 \uc608\uae30\uce58 \uc54a\uc740 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s
@@ -159,7 +151,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=\uc644\ub8cc\ub41c \uc791\uc5c5 \uc720\uc9c0 \uc2dc\uac04\uc774 %d\ucd08\ub85c \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.  \uc774 \ub0b4\uc6a9\uc740 \uc989\uc2dc \uc801\uc6a9\ub429\ub2c8\ub2e4.
INFO_TASKBE_UPDATED_BACKING_FILE_129=\uc791\uc5c5 \ub370\uc774\ud130 \ubc31\uc5c5 \ud30c\uc77c\uc758 \uacbd\ub85c\uac00 %s(\uc73c)\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc791\uc5c5 \uad6c\uc131\uc758 \uc2a4\ub0c5\uc0f7\uc774 \ud574\ub2f9 \ud30c\uc77c\uc5d0 \uae30\ub85d\ub418\uc5b4 \ud5a5\ud6c4 \uc5c5\ub370\uc774\ud2b8\uc5d0 \uacc4\uc18d \uc0ac\uc6a9\ub429\ub2c8\ub2e4.
ERR_TASKBE_ADD_DISALLOWED_DN_130=\uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc758 \uc0c8 \ud56d\ubaa9\uc740 \uc608\uc57d \uc791\uc5c5\uc758 \uacbd\uc6b0 %s \ubc14\ub85c \uc544\ub798, \ubc18\ubcf5 \uc791\uc5c5\uc758 \uacbd\uc6b0 %s \ubc14\ub85c \uc544\ub798\uc5d0\ub9cc \ucd94\uac00\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=\uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
INFO_TASKBE_BACKING_FILE_HEADER_132=\uc774 \ud30c\uc77c\uc5d0\ub294 \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84 \uc791\uc5c5 \uc2a4\ucf00\uc904\ub7ec \ubc31\uc5d4\ub4dc\uac00 \uc0ac\uc6a9\ud558\ub294 \ub370\uc774\ud130\uac00 \ub4e4\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.  \ud574\ub2f9 \ubcc0\uacbd \ub0b4\uc6a9\uc774 \uc190\uc2e4\ub420 \uc704\ud5d8\uc774 \uc788\uc73c\ubbc0\ub85c \uc774 \ud30c\uc77c\uc744 \uc9c1\uc811 \ud3b8\uc9d1\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.  \uc608\uc57d \ubc0f \ubc18\ubcf5 \uc791\uc5c5 \uc815\uc758\ub294 \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84\uc640 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \uad00\ub9ac \uc720\ud2f8\ub9ac\ud2f0\ub9cc\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud3b8\uc9d1\ud574\uc57c \ud569\ub2c8\ub2e4.
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=\ub3d9\uc77c\ud55c ID\ub97c \uc0ac\uc6a9\ud558\ub294 \ub2e4\ub978 \ubc18\ubcf5 \uc791\uc5c5\uc774 \uc788\uc73c\ubbc0\ub85c \ubc18\ubcf5 \uc791\uc5c5 %s\uc744(\ub97c) \uc791\uc5c5 \uc2a4\ucf00\uc904\ub7ec\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=\ub3d9\uc77c\ud55c ID\ub97c \uc0ac\uc6a9\ud558\ub294 \ub2e4\ub978 \uc791\uc5c5\uc774 \uc788\uc73c\ubbc0\ub85c \uc791\uc5c5 %s\uc744(\ub97c) \uc608\uc57d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
@@ -182,7 +173,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=\ud604\uc7ac \uc791\uc5c5 \ubc31\uc5c5 \ud30c\uc77c\uc758 \uc774\ub984\uc744 %s\uc5d0\uc11c %s(\uc73c)\ub85c \ubcc0\uacbd\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s. \uc774\uc804 \uc791\uc5c5 \uad6c\uc131(\ucd5c\uc2e0 \uc5c5\ub370\uc774\ud2b8\ub97c \ubc18\uc601\ud558\uc9c0 \uc54a\uc74c)\uc774 \uc190\uc2e4\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=An error occurred while attempting to rename the new tasks backing file from %s to %s:  %s. If the Directory Server is restarted, then the task scheduler may not work as expected
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=\uc0c8 \uc791\uc5c5 \ub370\uc774\ud130 \ubc31\uc5c5 \ud30c\uc77c %s\uc744(\ub97c) \uc4f0\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4:  %s. \ucd5c\uc2e0 \uc5c5\ub370\uc774\ud2b8\ub97c \ubc18\uc601\ud558\ub294 \uad6c\uc131 \uc815\ubcf4\uac00 \uc190\uc2e4\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=\uc791\uc5c5 \ubc31\uc5d4\ub4dc\ub294 LDIF \uac00\uc838\uc624\uae30 \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=\uc791\uc5c5 \ubc31\uc5d4\ub4dc\uac00 \uc885\ub8cc\ub429\ub2c8\ub2e4.
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=\ub8e8\ud2b8 DSE \uad6c\uc131\uc774 \uc5c5\ub370\uc774\ud2b8\ub418\uc5c8\uc73c\ubbc0\ub85c \uc774\uc81c \uad6c\uc131 \uc18d\uc131 %s\uc5d0\uc11c %s \uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=\ubcf4\ub958 \uc911\uc778 \uc791\uc5c5 %s\uc774(\uac00) \uc5c6\uc73c\ubbc0\ub85c \uc774 \uc791\uc5c5\uc744 \uc81c\uac70\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
@@ -195,9 +185,6 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=\uc81c\uacf5\ub41c \uae30\ubcf8 DN %s\uc774(\uac00) \uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0 \uc788\ub294 \ud56d\ubaa9\uc5d0 \ub300\ud574 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uac80\uc0c9 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=\uc81c\uacf5\ub41c \uac80\uc0c9 \uae30\uc900 \ud56d\ubaa9 %s\uacfc(\uc640) \uc5f0\uacb0\ub41c \uc608\uc57d \uc791\uc5c5\uc774 \uc5c6\uc73c\ubbc0\ub85c \uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uac80\uc0c9 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=\uc81c\uacf5\ub41c \uac80\uc0c9 \uae30\uc900 \ud56d\ubaa9 %s\uacfc(\uc640) \uc5f0\uacb0\ub41c \ubc18\ubcf5 \uc791\uc5c5\uc774 \uc5c6\uc73c\ubbc0\ub85c \uc791\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \uac80\uc0c9 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_CONFIG_ENTRY_NULL_171=\uc81c\uacf5\ub41c \uad6c\uc131 \ud56d\ubaa9\uc774 Null\uc774\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=\ubc31\uc5d4\ub4dc\uc5d0 \ub300\ud55c \uae30\ubcf8 DN\uc744 \ud574\ub3c5\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uc5ec \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc74c: %s
ERR_BACKUP_GET_ENTRY_NULL_175=\uc694\uccad\ud55c \ud56d\ubaa9\uc774 Null\uc774\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9\uc744 \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_INVALID_BASE_176=\uc694\uccad\ud55c \ud56d\ubaa9 %s\uc774(\uac00) \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=\uc694\uccad\ud55c DN\uc774 \uae30\ubcf8 DN\ubcf4\ub2e4 \ud55c \uc218\uc900 \uc544\ub798\uc9c0\ub9cc \ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac\ub97c \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9 %s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=\uc694\uccad\ud55c \ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac\uac00 \uc798\ubabb\ub418\uc5c8\uc73c\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9 %s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: %s
@@ -206,19 +193,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=\ubd80\ubaa8 \ud56d\ubaa9\uc774 \uc5c6\uc73c\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9 %s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=DN\uc5d0 \uc694\uccad\ud55c \ubc31\uc5c5\uc774 \uc800\uc7a5\ub41c \ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac\uac00 \uc5c6\uc73c\ubbc0\ub85c \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9 %s\uc744(\ub97c) \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_NO_SUCH_BACKUP_183=\ubc31\uc5c5 %s\uc774(\uac00) \ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac %s\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_ADD_NOT_SUPPORTED_184=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ucd94\uac00 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc0ad\uc81c \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_NO_SUCH_ENTRY_188=\uc694\uccad\ud55c \ud56d\ubaa9 %s\uc774(\uac00) \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 LDIF \ub0b4\ubcf4\ub0b4\uae30 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 LDIF \uac00\uc838\uc624\uae30 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ubc31\uc5c5 \ubc0f \ubcf5\uc6d0 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=\uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 \uae30\ubcf8 DN\uc744 \ud558\ub098\ub9cc \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4.
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=\ud56d\ubaa9 %s\uc774(\uac00) \uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\ud56d\ubaa9 %s\uc740(\ub294) \uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc18d\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=\ubd80\ubaa8 \ud56d\ubaa9 %2$s\uc774(\uac00) \uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc73c\ubbc0\ub85c \ud56d\ubaa9 %1$s\uc744(\ub97c) \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\ud56d\ubaa9 %s\uc774(\uac00) \uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=\ud56d\ubaa9 %s\uc774(\uac00) "%s" \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=\ud558\ub098 \uc774\uc0c1\uc758 \ud558\uc704 \ud56d\ubaa9\uc774 \uc788\uc73c\ubbc0\ub85c \ud56d\ubaa9 %s\uc744(\ub97c) \uc0ad\uc81c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=LDIF \uc791\uc131\uae30\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4:  %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\ud56d\ubaa9 %s\uc744(\ub97c) LDIF\uc5d0 \uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4:  %s
@@ -313,15 +294,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=\ubc31\uc5d4\ub4dc ID %s\uc5d0 \ud574\ub2f9\ud558\ub294 JE \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud658\uacbd\uc774 \uc190\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub514\ub809\ud1a0\ub9ac \uc11c\ubc84\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud558\uc5ec \ud658\uacbd\uc744 \ub2e4\uc2dc \uc5ec\uc2ed\uc2dc\uc624.
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=\ub514\ub809\ud1a0\ub9ac \uc11c\ubc84\uac00 \uc791\uc5c5 %s\uc744(\ub97c) \ud638\ucd9c\ud558\ub3c4\ub85d \uad6c\uc131\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
INFO_TASK_COMPLETION_BODY_299=\uc791\uc5c5 ID:  %s\r\n\uc791\uc5c5 \uc0c1\ud0dc:  %s\r\n\uc608\uc57d\ub41c \uc2dc\uc791 \uc2dc\uac04:  %s\r\n\uc2e4\uc81c \uc2dc\uc791 \uc2dc\uac04:  %s\r\n\uc644\ub8cc \uc2dc\uac04:  %s\r\n\r\n\ub85c\uadf8 \uba54\uc2dc\uc9c0:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=\uc694\uccad\ud55c \ud56d\ubaa9\uc774 Null\uc774\ubbc0\ub85c \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9\uc744 \uac80\uc0c9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_INVALID_BASE_301=\uc694\uccad\ud55c \ud56d\ubaa9 %s\uc774(\uac00) \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=\uc694\uccad\ud55c DN\uc774 \uae30\ubcf8 DN\ubcf4\ub2e4 \ud55c \uc218\uc900 \uc544\ub798\uc9c0\ub9cc \uc778\uc99d\uc11c \uc774\ub984\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c \ud56d\ubaa9 %s\uc744(\ub97c) \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=\ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ud30c\uc77c %2$s\uc5d0\uc11c \uc778\uc99d\uc11c %1$s\uc744(\ub97c) \uac80\uc0c9\ud558\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4: %3$s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 DN \uc218\uc815 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=\uae30\ubcf8 DN\uc774 \ud558\ub098\ub9cc \ub4e4\uc5b4 \uc788\uc9c0 \uc54a\uc73c\ubbc0\ub85c \uad6c\uc131 \ud56d\ubaa9 %s\uc5d0\uc11c \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=\ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 LDIF \uac00\uc838\uc624\uae30 \ubc0f \ub0b4\ubcf4\ub0b4\uae30 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=\ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ubc31\uc5c5 \ubc0f \ubcf5\uc6d0 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 LDIF \uac00\uc838\uc624\uae30 \ubc0f \ub0b4\ubcf4\ub0b4\uae30 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s" \ubc31\uc5d4\ub4dc\uc5d0\uc11c\ub294 \ubc31\uc5c5 \ubc0f \ubcf5\uc6d0 \uc791\uc5c5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_NO_SUCH_FILE_309=\uad6c\uc131 \ud56d\ubaa9 %2$s\uc758 ds-cfg-trust-store-file \uc18d\uc131\uc5d0 \uc9c0\uc815\ub41c \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \ud30c\uc77c %1$s\uc774(\uac00) \uc5c6\uc2b5\ub2c8\ub2e4.
ERR_TRUSTSTORE_INVALID_TYPE_310=\uad6c\uc131 \ud56d\ubaa9 %2$s\uc758 ds-cfg-trust-store-type \uc18d\uc131\uc5d0 \uc9c0\uc815\ub41c \ud2b8\ub7ec\uc2a4\ud2b8 \uc800\uc7a5\uc18c \uc720\ud615 %1$s\uc774(\uac00) \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4: %3$s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=\uad6c\uc131 \ud56d\ubaa9 %2$s\uc758 \uc18d\uc131 ds-cfg-trust-store-pin-file\uc5d0 \uc9c0\uc815\ub41c PIN \ud30c\uc77c %1$s\uc744(\ub97c) \ub9cc\ub4dc\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.
opendj3-server-dev/src/messages/messages/backend_pl.properties
@@ -3,4 +3,4 @@
NOTE_TASK_STARTED_413=%s zadanie %s rozpocz\u0119\u0142o wykonywanie
ERR_TASKS_BACKUP_CANNOT_BACKUP_TASKS_FILE_384=Wyst\u0105pi\u0142 b\u0142\u0105d podczas pr\u00f3by backupu pliku zada\u0144 %s:  %s
INFO_ERGONOMIC_SIZING_OF_JE_LOCK_TABLES_411=Lokalne zaplecze bazy danych %s nie okre\u015bla ilo\u015bci tabel blokowanych: u\u017cywam domy\u015blnych %d
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Wpis %s nie istnieje w zapleczu opartym o pami\u0119\u0107
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Wpis %s nie istnieje w zapleczu "%s"
opendj3-server-dev/src/messages/messages/backend_zh_CN.properties
@@ -51,39 +51,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=\u57fa DN "%s" \u5df2\u914d\u7f6e\u4e3a\u6b21\u7ea7\u57fa DN \u4e4b\u4e00\uff0c\u4ee5\u7528\u4e8e\u6839 DSE \u4ee5\u4e0b\u7684\u641c\u7d22\u3002\u4f46\u662f\uff0c\u8fd9\u4e2a\u57fa DN \u672a\u88ab\u4efb\u4f55\u4f7f\u7528\u76ee\u5f55\u670d\u52a1\u5668\u6ce8\u518c\u7684\u540e\u7f00\u5904\u7406\uff0c\u56e0\u6b64\u4e0d\u4f1a\u88ab\u4f7f\u7528
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=\u5c1d\u8bd5\u786e\u5b9a\u5c06\u7528\u4e8e\u6839 DSE \u4ee5\u4e0b\u641c\u7d22\u7684\u6b21\u7ea7\u57fa DN \u7684\u96c6\u65f6\u53d1\u751f\u975e\u9884\u671f\u95ee\u9898: %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=\u5df2\u8bf7\u6c42\u6839 DSE \u540e\u7aef\u68c0\u7d22\u5177\u6709 DN "%s" \u7684\u6761\u76ee\u3002\u53ea\u5e94\u8bf7\u6c42\u8be5\u540e\u7aef\u68c0\u7d22\u6839 DSE \u672c\u8eab\u3002\u4e0d\u8fc7\uff0c\u5b83\u5c06\u68c0\u67e5\u5b9a\u4e49\u7684\u4ece\u5c5e\u540e\u7aef\uff0c\u5e76\u67e5\u770b\u80fd\u5426\u627e\u5230\u8bf7\u6c42\u7684\u6761\u76ee
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=\u65e0\u6cd5\u6dfb\u52a0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6839 DSE \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=\u65e0\u6cd5\u5220\u9664\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6839 DSE \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=\u65e0\u6cd5\u66f4\u65b0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6839 DSE \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c\u3002\u5982\u679c\u8981\u4fee\u6539\u6839 DSE \u672c\u8eab\u7684\u5185\u5bb9\uff0c\u4e5f\u8bb8\u53ef\u901a\u8fc7\u4fee\u6539\u914d\u7f6e\u4e2d\u7684 "%s" \u6761\u76ee\u6765\u5b8c\u6210
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=\u65e0\u6cd5\u91cd\u547d\u540d\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6839 DSE \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=\u65e0\u6cd5\u5728\u6839 DSE \u540e\u7aef\u4e2d\u4f7f\u7528\u57fa DN "%3$s" \u6267\u884c\u641c\u7d22\uff08\u8fde\u63a5 ID \u4e3a %1$d\uff0c\u64cd\u4f5c ID \u4e3a %2$d\uff09\u3002\u5728\u8be5\u540e\u7aef\u4e2d\uff0c\u7528\u4e8e\u641c\u7d22\u7684\u57fa DN \u5fc5\u987b\u4e3a\u6839 DSE \u672c\u8eab\u7684 DN
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=\u5c1d\u8bd5\u5728\u6839 DSE \u540e\u7aef\u4e2d\u5904\u7406\u641c\u7d22\u64cd\u4f5c\uff08\u8fde\u63a5 ID \u4e3a %d\uff0c\u64cd\u4f5c ID \u4e3a %d\uff09\u65f6\u53d1\u751f\u975e\u9884\u671f\u5931\u8d25: %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=\u65e0\u6cd5\u5904\u7406\u5e26\u6709\u8fde\u63a5 ID %d \u548c\u64cd\u4f5c ID %d \u7684\u641c\u7d22\uff0c\u56e0\u4e3a\u5b83\u5177\u6709\u65e0\u6548\u7684\u4f5c\u7528\u57df %s
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=\u5c1d\u8bd5\u6253\u5f00\u6839 DSE \u540e\u7aef\u7684 LDIF \u5199\u5165\u7a0b\u5e8f\u65f6\u53d1\u751f\u975e\u9884\u671f\u9519\u8bef: %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=\u5c1d\u8bd5\u5c06\u6839 DSE \u6761\u76ee\u5bfc\u51fa\u5230\u6307\u5b9a\u7684 LDIF \u76ee\u6807\u65f6\u53d1\u751f\u975e\u9884\u671f\u9519\u8bef: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=\u6839 DSE \u540e\u7aef\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u64cd\u4f5c
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=\u6839 DSE \u540e\u7aef\u672a\u63d0\u4f9b\u7528\u4e8e\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c\u7684\u5de5\u5177\u3002\u5e94\u8be5\u5c06\u6839 DSE \u7684\u5185\u5bb9\u4f5c\u4e3a\u76ee\u5f55\u670d\u52a1\u5668\u914d\u7f6e\u7684\u4e00\u90e8\u5206\u8fdb\u884c\u5907\u4efd
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=\u5df2\u66f4\u65b0\u6839 DSE \u914d\u7f6e\uff0c\u56e0\u6b64\uff0c\u5b83\u73b0\u5728\u4f1a\u4f7f\u7528\u5df2\u5b9a\u4e49\u7684\u76ee\u5f55\u670d\u52a1\u5668\u540e\u7f00\u96c6\u5728\u6839 DSE \u4e0b\u6267\u884c\u641c\u7d22
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=\u5df2\u66f4\u65b0\u6839 DSE \u914d\u7f6e\uff0c\u56e0\u6b64\uff0c\u5b83\u73b0\u5728\u4f1a\u4f7f\u7528\u57fa DN \u96c6 %s \u5728\u6839 DSE \u4e0b\u6267\u884c\u641c\u7d22
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=\u5df2\u66f4\u65b0\u6839 DSE \u914d\u7f6e\uff0c\u56e0\u6b64\uff0c\u5b83\u73b0\u5728\u4f1a\u4f7f\u7528\u65b0\u7684\u7528\u6237\u5b9a\u4e49\u5c5e\u6027\u96c6
ERR_MONITOR_CONFIG_ENTRY_NULL_21=\u7cfb\u7edf\u5c1d\u8bd5\u914d\u7f6e\u76d1\u89c6\u5668\u540e\u7aef\uff0c\u4f46\u672a\u63d0\u4f9b\u914d\u7f6e\u6761\u76ee\u3002\u4e0d\u5141\u8bb8\u6267\u884c\u8be5\u64cd\u4f5c\uff0c\u6ca1\u6709\u53ef\u7528\u4e8e\u534f\u8bae\u7684\u76d1\u89c6\u5668\u4fe1\u606f
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=\u5c1d\u8bd5\u89e3\u7801 cn=monitor \u4f5c\u4e3a\u76ee\u5f55\u670d\u52a1\u5668\u76d1\u89c6\u5668\u4fe1\u606f\u7684\u57fa DN \u65f6\u53d1\u751f\u975e\u9884\u671f\u9519\u8bef: %s\u3002\u6ca1\u6709\u53ef\u7528\u4e8e\u534f\u8bae\u7684\u76d1\u89c6\u5668\u4fe1\u606f
ERR_MONITOR_ADD_NOT_SUPPORTED_23=\u65e0\u6cd5\u6dfb\u52a0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=\u65e0\u6cd5\u5220\u9664\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c
ERR_BACKEND_ADD_NOT_SUPPORTED_23=\u65e0\u6cd5\u6dfb\u52a0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a "%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=\u65e0\u6cd5\u5220\u9664\u6761\u76ee "%s"\uff0c\u56e0\u4e3a "%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=\u65e0\u6cd5\u66f4\u65b0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c\u3002\u5982\u679c\u8981\u4fee\u6539\u57fa\u76d1\u89c6\u5668\u6761\u76ee\u672c\u8eab\u7684\u5185\u5bb9\uff0c\u4e5f\u8bb8\u53ef\u901a\u8fc7\u4fee\u6539\u914d\u7f6e\u4e2d\u7684 "%s" \u6761\u76ee\u6765\u5b8c\u6210
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=\u65e0\u6cd5\u91cd\u547d\u540d\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=\u65e0\u6cd5\u91cd\u547d\u540d\u6761\u76ee "%s"\uff0c\u56e0\u4e3a "%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\u5c1d\u8bd5\u5bfc\u51fa\u57fa\u76d1\u89c6\u5668\u6761\u76ee\u65f6\u53d1\u751f\u9519\u8bef: %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=\u5c1d\u8bd5\u5bfc\u51fa\u76d1\u89c6\u5668\u63d0\u4f9b\u8005 %s \u7684\u76d1\u89c6\u5668\u6761\u76ee\u65f6\u53d1\u751f\u9519\u8bef: %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\u76d1\u89c6\u5668\u540e\u7aef\u4e0d\u652f\u6301 lDIF \u5bfc\u5165\u64cd\u4f5c
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=\u76d1\u89c6\u5668\u540e\u7aef\u672a\u63d0\u4f9b\u7528\u4e8e\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c\u7684\u5de5\u5177
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29="%s" \u540e\u7aef\u4e0d\u652f\u6301 lDIF \u5bfc\u5165\u64cd\u4f5c
INFO_MONITOR_USING_NEW_USER_ATTRS_31=\u5df2\u66f4\u65b0\u76d1\u89c6\u5668\u914d\u7f6e\uff0c\u56e0\u6b64\uff0c\u5b83\u73b0\u5728\u4f1a\u4f7f\u7528\u65b0\u7684\u7528\u6237\u5b9a\u4e49\u5c5e\u6027\u96c6
ERR_MONITOR_GET_ENTRY_NULL_32=\u65e0\u6cd5\u4ece\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u68c0\u7d22\u8bf7\u6c42\u7684\u6761\u76ee\uff0c\u56e0\u4e3a\u63d0\u4f9b\u7684 DN \u4e3a Null
ERR_BACKEND_GET_ENTRY_NULL_32=\u65e0\u6cd5\u4ece "%s" \u540e\u7aef\u4e2d\u68c0\u7d22\u8bf7\u6c42\u7684\u6761\u76ee\uff0c\u56e0\u4e3a\u63d0\u4f9b\u7684 DN \u4e3a Null
ERR_MONITOR_INVALID_BASE_34=\u65e0\u6cd5\u4ece\u76d1\u89c6\u5668\u540e\u7aef\u4e2d\u68c0\u7d22\u8bf7\u6c42\u7684\u6761\u76ee %s\uff0c\u56e0\u4e3a\u8be5 DN \u4e0d\u5728\u76d1\u89c6\u5668\u57fa %s \u4e4b\u4e0b
INFO_MONITOR_UPTIME_37=%d \u5929 %d \u5c0f\u65f6 %d \u5206\u949f %d \u79d2
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=\u7cfb\u7edf\u5c1d\u8bd5\u914d\u7f6e\u6a21\u5f0f\u540e\u7aef\u4f46\u672a\u63d0\u4f9b\u914d\u7f6e\u6761\u76ee\u3002\u4e0d\u5141\u8bb8\u6267\u884c\u8be5\u64cd\u4f5c\uff0c\u6ca1\u6709\u53ef\u7528\u4e8e\u534f\u8bae\u7684\u6a21\u5f0f\u4fe1\u606f
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=\u5c1d\u8bd5\u786e\u5b9a\u5728\u53d1\u5e03\u76ee\u5f55\u670d\u52a1\u5668\u6a21\u5f0f\u4fe1\u606f\u65f6\u6240\u4f7f\u7528\u7684\u57fa DN \u65f6\u53d1\u751f\u9519\u8bef\uff0c\u5982\u914d\u7f6e\u6761\u76ee %s \u7684 ds-cfg-schema-entry-dn \u5c5e\u6027\u4e2d\u6240\u6307\u5b9a: %s\u3002\u5c06\u4f7f\u7528\u9ed8\u8ba4\u7684\u65b9\u6848\u57fa DN cn=schema
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=\u65e0\u6cd5\u6dfb\u52a0\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6a21\u5f0f\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=\u65e0\u6cd5\u5220\u9664\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6a21\u5f0f\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=\u65e0\u6cd5\u91cd\u547d\u540d\u6761\u76ee "%s"\uff0c\u56e0\u4e3a\u6a21\u5f0f\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\u5c1d\u8bd5\u5bfc\u51fa\u57fa\u6a21\u5f0f\u6761\u76ee\u65f6\u53d1\u751f\u9519\u8bef: %s
ERR_SCHEMA_INVALID_BASE_48=\u65e0\u6cd5\u4ece\u6a21\u5f0f\u540e\u7aef\u4e2d\u68c0\u7d22\u8bf7\u6c42\u7684\u6761\u76ee %s\uff0c\u56e0\u4e3a\u8be5 DN \u4e0e\u67d0\u4e2a\u6a21\u5f0f\u6761\u76ee DN \u76f8\u540c
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=\u5c1d\u8bd5\u6253\u5f00\u6a21\u5f0f\u540e\u7aef\u7684 LDIF \u5199\u5165\u7a0b\u5e8f\u65f6\u53d1\u751f\u975e\u9884\u671f\u9519\u8bef: %s
@@ -159,7 +151,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=\u5df2\u5b8c\u6210\u4efb\u52a1\u7684\u4fdd\u7559\u65f6\u95f4\u5df2\u66f4\u65b0\u4e3a %d \u79d2\u3002\u6b64\u66f4\u65b0\u5c06\u7acb\u5373\u751f\u6548
INFO_TASKBE_UPDATED_BACKING_FILE_129=\u5df2\u5c06\u4efb\u52a1\u6570\u636e\u652f\u6301\u6587\u4ef6\u7684\u8def\u5f84\u66f4\u6539\u4e3a %s\u3002\u5f53\u524d\u4efb\u52a1\u914d\u7f6e\u7684\u5feb\u7167\u5df2\u5199\u5165\u5230\u8be5\u6587\u4ef6\u4e2d\uff0c\u5b83\u5c06\u7ee7\u7eed\u7528\u4e8e\u4ee5\u540e\u7684\u66f4\u65b0
ERR_TASKBE_ADD_DISALLOWED_DN_130=\u53ea\u80fd\u5728\u8ba1\u5212\u4efb\u52a1\u7684 %s \u4ee5\u4e0b\u6216\u5faa\u73af\u4efb\u52a1\u7684 %s \u4ee5\u4e0b\u76f4\u63a5\u6dfb\u52a0\u4efb\u52a1\u540e\u7aef\u4e2d\u7684\u65b0\u6761\u76ee
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=\u4efb\u52a1\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
INFO_TASKBE_BACKING_FILE_HEADER_132=\u8be5\u6587\u4ef6\u5305\u542b\u76ee\u5f55\u670d\u52a1\u5668\u4efb\u52a1\u8c03\u5ea6\u7a0b\u5e8f\u540e\u7aef\u4f7f\u7528\u7684\u6570\u636e\u3002\u4e0d\u8981\u76f4\u63a5\u7f16\u8f91\u8be5\u6587\u4ef6\uff0c\u56e0\u4e3a\u5b58\u5728\u8fd9\u4e9b\u66f4\u6539\u5c06\u4f1a\u4e22\u5931\u7684\u98ce\u9669\u3002\u53ea\u5e94\u4f7f\u7528\u968f\u76ee\u5f55\u670d\u52a1\u5668\u63d0\u4f9b\u7684\u7ba1\u7406\u5b9e\u7528\u7a0b\u5e8f\u6765\u7f16\u8f91\u9884\u5b9a\u4efb\u52a1\u548c\u590d\u53d1\u6027\u4efb\u52a1\u5b9a\u4e49
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=\u65e0\u6cd5\u5c06\u5faa\u73af\u4efb\u52a1 %s \u6dfb\u52a0\u5230\u4efb\u52a1\u8c03\u5ea6\u7a0b\u5e8f\uff0c\u56e0\u4e3a\u5df2\u5b58\u5728 ID \u76f8\u540c\u7684\u53e6\u4e00\u5faa\u73af\u4efb\u52a1
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=\u65e0\u6cd5\u8ba1\u5212\u4efb\u52a1 %s\uff0c\u56e0\u4e3a\u5df2\u5b58\u5728 ID \u76f8\u540c\u7684\u53e6\u4e00\u4efb\u52a1
@@ -182,7 +173,6 @@
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=\u5c1d\u8bd5\u5c06\u5f53\u524d\u4efb\u52a1\u652f\u6301\u6587\u4ef6\u7684\u540d\u79f0\u7531 %s \u91cd\u547d\u540d\u4e3a %s \u65f6\u53d1\u751f\u9519\u8bef: %s\u3002\u4e0a\u4e00\u4e2a\u4efb\u52a1\u914d\u7f6e\uff08\u4e0d\u53cd\u6620\u6700\u65b0\u66f4\u65b0\uff09\u53ef\u80fd\u5df2\u4e22\u5931
ERR_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE_153=\u5c1d\u8bd5\u5c06\u65b0\u4efb\u52a1\u652f\u6301\u6587\u4ef6\u7684\u540d\u79f0\u7531 %s \u91cd\u547d\u540d\u4e3a %s \u65f6\u53d1\u751f\u9519\u8bef: %s\u3002\u5982\u679c\u76ee\u5f55\u670d\u52a1\u5668\u5df2\u91cd\u65b0\u542f\u52a8\uff0c\u5219\u4efb\u52a1\u8c03\u5ea6\u7a0b\u5e8f\u53ef\u80fd\u672a\u6309\u9884\u671f\u5de5\u4f5c
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=\u5c1d\u8bd5\u5199\u5165\u65b0\u4efb\u52a1\u6570\u636e\u652f\u6301\u6587\u4ef6 %s \u65f6\u53d1\u751f\u9519\u8bef: %s\u3002\u53cd\u6620\u6700\u65b0\u66f4\u65b0\u7684\u914d\u7f6e\u4fe1\u606f\u53ef\u80fd\u5df2\u4e22\u5931
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=\u4efb\u52a1\u540e\u7aef\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u64cd\u4f5c
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=\u6b63\u5728\u5173\u95ed\u4efb\u52a1\u540e\u7aef
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=\u5df2\u66f4\u65b0\u6839 DSE \u914d\u7f6e\uff0c\u56e0\u6b64\uff0c\u914d\u7f6e\u5c5e\u6027 %s \u73b0\u5728\u4f1a\u4f7f\u7528\u503c %s
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=\u65e0\u6cd5\u79fb\u9664\u6302\u8d77\u4efb\u52a1 %s\uff0c\u56e0\u4e3a\u4e0d\u5b58\u5728\u6b64\u7c7b\u4efb\u52a1
@@ -195,9 +185,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=\u65e0\u6cd5\u5728\u4efb\u52a1\u540e\u7aef\u5904\u7406\u641c\u7d22\u64cd\u4f5c\uff0c\u56e0\u4e3a\u63d0\u4f9b\u7684\u57fa DN %s \u5bf9\u4e8e\u4efb\u52a1\u540e\u7aef\u4e2d\u7684\u6761\u76ee\u65e0\u6548
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=\u65e0\u6cd5\u5728\u4efb\u52a1\u540e\u7aef\u5904\u7406\u641c\u7d22\u64cd\u4f5c\uff0c\u56e0\u4e3a\u4e0d\u5b58\u5728\u4e0e\u63d0\u4f9b\u7684\u641c\u7d22\u57fa\u6761\u76ee %s \u5173\u8054\u7684\u8ba1\u5212\u4efb\u52a1
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=\u65e0\u6cd5\u5728\u4efb\u52a1\u540e\u7aef\u5904\u7406\u641c\u7d22\u64cd\u4f5c\uff0c\u56e0\u4e3a\u4e0d\u5b58\u5728\u4e0e\u63d0\u4f9b\u7684\u641c\u7d22\u57fa\u6761\u76ee %s \u5173\u8054\u7684\u5faa\u73af\u4efb\u52a1
ERR_BACKUP_CONFIG_ENTRY_NULL_171=\u65e0\u6cd5\u521d\u59cb\u5316\u5907\u4efd\u540e\u7aef\uff0c\u56e0\u4e3a\u63d0\u4f9b\u7684\u914d\u7f6e\u6761\u76ee\u4e3a null
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=\u65e0\u6cd5\u521d\u59cb\u5316\u5907\u4efd\u540e\u7aef\uff0c\u56e0\u4e3a\u5c1d\u8bd5\u89e3\u7801\u540e\u7aef\u7684\u57fa DN \u65f6\u53d1\u751f\u9519\u8bef: %s
ERR_BACKUP_GET_ENTRY_NULL_175=\u65e0\u6cd5\u4ece\u5907\u4efd\u540e\u7aef\u68c0\u7d22\u6761\u76ee\uff0c\u56e0\u4e3a\u8bf7\u6c42\u7684\u6761\u76ee\u4e3a null
ERR_BACKEND_CONFIG_ENTRY_NULL_171=\u65e0\u6cd5\u521d\u59cb\u5316 "%s" \u540e\u7aef\uff0c\u56e0\u4e3a\u63d0\u4f9b\u7684\u914d\u7f6e\u6761\u76ee\u4e3a null
ERR_BACKUP_INVALID_BASE_176=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=\u65e0\u6cd5\u4ece\u5907\u4efd\u540e\u7aef\u68c0\u7d22\u6761\u76ee %s\uff0c\u56e0\u4e3a\u8bf7\u6c42\u7684 DN \u5728\u57fa DN \u7684\u4e0b\u4e00\u7ea7\u522b\u4f46\u672a\u6307\u5b9a\u5907\u4efd\u76ee\u5f55
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=\u65e0\u6cd5\u4ece\u5907\u4efd\u540e\u7aef\u68c0\u7d22\u6761\u76ee %s\uff0c\u56e0\u4e3a\u8bf7\u6c42\u7684\u5907\u4efd\u76ee\u5f55\u65e0\u6548: %s
@@ -206,19 +194,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=\u65e0\u6cd5\u4ece\u5907\u4efd\u540e\u7aef\u68c0\u7d22\u6761\u76ee %s\uff0c\u56e0\u4e3a\u5176\u4e0d\u5305\u542b\u7236\u7c7b
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=\u65e0\u6cd5\u4ece\u5907\u4efd\u540e\u7aef\u68c0\u7d22\u6761\u76ee %s\uff0c\u56e0\u4e3a DN \u672a\u5305\u542b\u8bf7\u6c42\u7684\u5907\u4efd\u5fc5\u987b\u9a7b\u7559\u7684\u5907\u4efd\u76ee\u5f55
ERR_BACKUP_NO_SUCH_BACKUP_183=\u5907\u4efd %s \u4e0d\u5b58\u5728\u4e8e\u5907\u4efd\u76ee\u5f55 %s \u4e2d
ERR_BACKUP_ADD_NOT_SUPPORTED_184=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c
ERR_BACKUP_NO_SUCH_ENTRY_188=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u51fa\u64cd\u4f5c
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u64cd\u4f5c
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=\u5fc5\u987b\u63d0\u4f9b\u4e00\u4e2a\u57fa DN \u4ee5\u4fbf\u914d\u5408\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4f7f\u7528
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u5df2\u5b58\u5728\u6761\u76ee %s
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u4e0d\u62e5\u6709\u6761\u76ee %s
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=\u65e0\u6cd5\u6dfb\u52a0\u6761\u76ee %s\uff0c\u56e0\u4e3a\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u6ca1\u6709\u5176\u7236\u6761\u76ee %s
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u6761\u76ee %s
ERR_BACKEND_ENTRY_DOESNT_EXIST_196="%s" \u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u6761\u76ee %s
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=\u65e0\u6cd5\u5220\u9664\u6761\u76ee %s\uff0c\u56e0\u4e3a\u5176\u542b\u6709\u4e00\u4e2a\u6216\u591a\u4e2a\u6b21\u7ea7\u6761\u76ee
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=\u65e0\u6cd5\u521b\u5efa LDIF \u4e66\u5199\u5668: %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\u65e0\u6cd5\u5c06\u6761\u76ee %s \u5199\u5165 LDIF: %s
@@ -313,15 +295,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=\u4e0e\u540e\u7aef ID %s \u5bf9\u5e94\u7684 JE \u6570\u636e\u5e93\u73af\u5883\u5df2\u635f\u574f\u3002\u91cd\u65b0\u542f\u52a8\u76ee\u5f55\u670d\u52a1\u5668\u4ee5\u91cd\u65b0\u6253\u5f00\u8be5\u73af\u5883
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=\u672a\u5c06\u76ee\u5f55\u670d\u52a1\u5668\u914d\u7f6e\u4e3a\u5141\u8bb8\u8c03\u7528\u4efb\u52a1 %s
INFO_TASK_COMPLETION_BODY_299=\u4efb\u52a1 ID: %s\r\n\u4efb\u52a1\u72b6\u6001: %s\r\n\u9884\u5b9a\u5f00\u59cb\u65f6\u95f4: %s\r\n\u5b9e\u9645\u5f00\u59cb\u65f6\u95f4: %s\r\n\u5b8c\u6210\u65f6\u95f4: %s\r\n\r\n\u65e5\u5fd7\u6d88\u606f:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=\u65e0\u6cd5\u4ece\u4fe1\u4efb\u5e93\u540e\u7aef\u68c0\u7d22\u6761\u76ee\uff0c\u56e0\u4e3a\u8bf7\u6c42\u7684\u6761\u76ee\u4e3a null
ERR_TRUSTSTORE_INVALID_BASE_301=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=\u65e0\u6cd5\u5728\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u5904\u7406\u6761\u76ee %s\uff0c\u56e0\u4e3a\u8bf7\u6c42\u7684 DN \u5728\u57fa DN \u7684\u4e0b\u4e00\u7ea7\u522b\u4f46\u672a\u6307\u5b9a\u8bc1\u4e66\u540d\u79f0
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=\u5c1d\u8bd5\u4ece\u4fe1\u4efb\u5e93\u6587\u4ef6 %2$s \u68c0\u7d22\u8bc1\u4e66 %1$s \u65f6\u53d1\u751f\u9519\u8bef: %3$s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=\u65e0\u6cd5\u4ece\u914d\u7f6e\u6761\u76ee %s \u4e2d\u521d\u59cb\u5316\u4fe1\u4efb\u5e93\u540e\u7aef\uff0c\u56e0\u4e3a\u5176\u4e0d\u5305\u542b\u4e00\u4e2a\u57fa DN
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u548c\u5bfc\u51fa\u64cd\u4f5c
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u548c\u5bfc\u51fa\u64cd\u4f5c
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c
ERR_TRUSTSTORE_NO_SUCH_FILE_309=\u5728\u914d\u7f6e\u6761\u76ee %2$s \u7684\u5c5e\u6027 ds-cfg-trust-store-file \u4e2d\u6307\u5b9a\u7684\u4fe1\u4efb\u5e93\u6587\u4ef6 %1$s \u4e0d\u5b58\u5728
ERR_TRUSTSTORE_INVALID_TYPE_310=\u5728\u914d\u7f6e\u6761\u76ee %2$s \u7684\u5c5e\u6027 ds-cfg-trust-store-type \u4e2d\u6307\u5b9a\u7684\u4fe1\u4efb\u5e93\u7c7b\u578b %1$s \u65e0\u6548: %3$s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=\u5c1d\u8bd5\u5728\u914d\u7f6e\u6761\u76ee %2$s \u7684\u5c5e\u6027 ds-cfg-trust-store-pin-file \u4e2d\u6307\u5b9a\u7684\u521b\u5efa PIN \u6587\u4ef6 %1$s \u65f6\u53d1\u751f\u9519\u8bef
opendj3-server-dev/src/messages/messages/backend_zh_TW.properties
@@ -51,39 +51,31 @@
WARN_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE_4=\u57fa\u5e95 DN\u300c%s\u300d\u5df2\u914d\u7f6e\u70ba\u5176\u4e2d\u4e00\u500b\u8981\u7528\u65bc\u5728 Root DSE \u4e4b\u4e0b\u641c\u5c0b\u7684\u5f9e\u5c6c\u57fa\u5e95 DN\u3002\u4f46\u662f\uff0c\u6b64\u57fa\u5e95 DN \u672a\u7531\u4efb\u4f55\u5728\u76ee\u9304\u4f3a\u670d\u5668\u4e2d\u8a3b\u518a\u7684\u5c3e\u78bc\u8655\u7406\uff0c\u56e0\u6b64\u4e0d\u6703\u52a0\u4ee5\u4f7f\u7528
WARN_ROOTDSE_SUBORDINATE_BASE_EXCEPTION_5=\u5617\u8a66\u5224\u5b9a\u8981\u7528\u65bc\u5728 Root DSE \u4e4b\u4e0b\u641c\u5c0b\u7684\u5f9e\u5c6c\u57fa\u5e95 DN \u96c6\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u554f\u984c: %s
WARN_ROOTDSE_GET_ENTRY_NONROOT_6=Root DSE \u5f8c\u7aef\u88ab\u8981\u6c42\u64f7\u53d6\u5177\u6709 DN\u300c%s\u300d\u7684\u9805\u76ee\u3002\u6b64\u5f8c\u7aef\u61c9\u8a72\u53ea\u9700\u64f7\u53d6 Root DSE \u672c\u8eab\u3002\u4f46\u662f\uff0c\u5b83\u6703\u6aa2\u67e5\u6240\u5b9a\u7fa9\u7684\u5f9e\u5c6c\u5f8c\u7aef\u4e26\u67e5\u770b\u5b83\u662f\u5426\u53ef\u4ee5\u627e\u5230\u8acb\u6c42\u7684\u9805\u76ee
ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=\u4e0d\u9858\u610f\u589e\u52a0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d
ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=\u4e0d\u9858\u610f\u79fb\u9664\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d
ERR_ROOTDSE_MODIFY_NOT_SUPPORTED_9=\u4e0d\u9858\u610f\u66f4\u65b0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d\u3002\u5982\u679c\u60a8\u8981\u6539\u8b8a Root DSE \u672c\u8eab\u7684\u5167\u5bb9\uff0c\u5247\u6709\u53ef\u80fd\u7d93\u7531\u4fee\u6539\u914d\u7f6e\u4e2d\u7684\u300c%s\u300d\u9805\u76ee\u4f86\u9054\u6210
ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=\u4e0d\u9858\u610f\u91cd\u65b0\u547d\u540d\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_ROOTDSE_INVALID_SEARCH_BASE_11=\u4e0d\u9858\u610f\u5728 Root DSE \u5f8c\u7aef\u4e2d\u4f7f\u7528\u300c%3$s\u300d\u7684\u57fa\u5e95 DN \u57f7\u884c\u641c\u5c0b (\u9023\u7dda ID %1$d\u3001\u4f5c\u696d ID %2$d)\u3002\u8981\u5728\u6b64\u5f8c\u7aef\u4e2d\u641c\u5c0b\u7684\u57fa\u5e95 DN \u5fc5\u9808\u662f Root DSE \u672c\u8eab\u7684 DN
ERR_ROOTDSE_UNEXPECTED_SEARCH_FAILURE_12=\u5617\u8a66\u5728 Root DSE \u5f8c\u7aef\u4e2d\u8655\u7406\u641c\u5c0b\u4f5c\u696d (\u9023\u7dda ID %d\u3001\u4f5c\u696d ID %d) \u6642\u767c\u751f\u672a\u9810\u671f\u7684\u5931\u6557: %s
ERR_ROOTDSE_INVALID_SEARCH_SCOPE_13=\u7121\u6cd5\u8655\u7406\u5177\u6709\u9023\u7dda ID %d \u8207\u4f5c\u696d ID %d \u7684\u641c\u5c0b\uff0c\u56e0\u70ba\u8a72\u641c\u5c0b\u7684\u7bc4\u570d %s \u7121\u6548
ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=\u5617\u8a66\u958b\u555f Root DSE \u5f8c\u7aef\u7684 LDIF \u5beb\u5165\u5668\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4: %s
ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=\u5617\u8a66\u5c07 Root DSE \u9805\u76ee\u532f\u51fa\u81f3\u6307\u5b9a\u7684 LDIF \u76ee\u6a19\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4: %s
ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d
ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED_17=Root DSE \u5f8c\u7aef\u4e26\u672a\u63d0\u4f9b\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d\u7684\u8a2d\u5099\u3002Root DSE \u7684\u5167\u5bb9\u61c9\u5099\u4efd\u70ba\u76ee\u9304\u4f3a\u670d\u5668\u914d\u7f6e\u7684\u4e00\u90e8\u4efd
INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS_18=Root DSE \u914d\u7f6e\u5df2\u66f4\u65b0\uff0c\u6240\u4ee5\u73fe\u5728\u65bc Root DSE \u4e4b\u4e0b\u57f7\u884c\u641c\u5c0b\u6642\uff0c\u6703\u4f7f\u7528\u6240\u5b9a\u7fa9\u7684\u76ee\u9304\u4f3a\u670d\u5668\u5c3e\u78bc\u96c6
INFO_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS_19=Root DSE \u914d\u7f6e\u5df2\u66f4\u65b0\uff0c\u6240\u4ee5\u73fe\u5728\u65bc Root DSE \u4e4b\u4e0b\u57f7\u884c\u641c\u5c0b\u6642\uff0c\u6703\u4f7f\u7528\u57fa\u5e95 DN \u96c6 %s
INFO_ROOTDSE_USING_NEW_USER_ATTRS_20=Root DSE \u914d\u7f6e\u5df2\u66f4\u65b0\uff0c\u6240\u4ee5\u73fe\u5728\u6703\u4f7f\u7528\u65b0\u7684\u4f7f\u7528\u8005\u5b9a\u7fa9\u5c6c\u6027\u96c6
ERR_MONITOR_CONFIG_ENTRY_NULL_21=\u5df2\u5617\u8a66\u914d\u7f6e\u76e3\u8996\u5f8c\u7aef\uff0c\u4f46\u672a\u63d0\u4f9b\u914d\u7f6e\u9805\u76ee\u3002\u9019\u662f\u4e0d\u5141\u8a31\u7684\uff0c\u800c\u4e14\u7121\u6cd5\u900f\u904e\u5354\u5b9a\u53d6\u5f97\u76e3\u8996\u8cc7\u8a0a
ERR_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN_22=\u5617\u8a66\u89e3\u78bc cn=monitor \u4f5c\u70ba\u76ee\u9304\u4f3a\u670d\u5668\u76e3\u8996\u8cc7\u8a0a\u7684\u57fa\u5e95 DN \u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4: %s\u3002\u7121\u6cd5\u900f\u904e\u5354\u5b9a\u53d6\u5f97\u76e3\u8996\u8cc7\u8a0a
ERR_MONITOR_ADD_NOT_SUPPORTED_23=\u4e0d\u9858\u610f\u589e\u52a0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d
ERR_MONITOR_DELETE_NOT_SUPPORTED_24=\u4e0d\u9858\u610f\u79fb\u9664\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d
ERR_BACKEND_ADD_NOT_SUPPORTED_23=\u4e0d\u9858\u610f\u589e\u52a0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba "%s" \u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d
ERR_BACKEND_DELETE_NOT_SUPPORTED_24=\u4e0d\u9858\u610f\u79fb\u9664\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba "%s" \u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d
ERR_MONITOR_MODIFY_NOT_SUPPORTED_25=\u4e0d\u9858\u610f\u66f4\u65b0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d\u3002\u5982\u679c\u60a8\u8981\u6539\u8b8a\u57fa\u5e95\u76e3\u8996\u9805\u76ee\u672c\u8eab\u7684\u5167\u5bb9\uff0c\u5247\u6709\u53ef\u80fd\u7d93\u7531\u4fee\u6539\u914d\u7f6e\u4e2d\u7684\u300c%s\u300d\u9805\u76ee\u4f86\u9054\u6210
ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=\u4e0d\u9858\u610f\u91cd\u65b0\u547d\u540d\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=\u4e0d\u9858\u610f\u91cd\u65b0\u547d\u540d\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba "%s" \u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\u5617\u8a66\u532f\u51fa\u57fa\u5e95\u76e3\u8996\u9805\u76ee\u6642\u767c\u751f\u932f\u8aa4: %s
ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=\u5617\u8a66\u532f\u51fa\u76e3\u8996\u63d0\u4f9b\u8005 %s \u7684\u76e3\u8996\u9805\u76ee\u6642\u767c\u751f\u932f\u8aa4: %s
ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d
ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=\u76e3\u8996\u5f8c\u7aef\u4e26\u672a\u63d0\u4f9b\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d\u7684\u8a2d\u5099
ERR_BACKEND_IMPORT_NOT_SUPPORTED_29="%s" \u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d
INFO_MONITOR_USING_NEW_USER_ATTRS_31=\u76e3\u8996\u914d\u7f6e\u5df2\u66f4\u65b0\uff0c\u6240\u4ee5\u73fe\u5728\u6703\u4f7f\u7528\u65b0\u7684\u4f7f\u7528\u8005\u5b9a\u7fa9\u5c6c\u6027\u96c6
ERR_MONITOR_GET_ENTRY_NULL_32=\u7121\u6cd5\u5f9e\u76e3\u8996\u5f8c\u7aef\u64f7\u53d6\u8acb\u6c42\u7684\u9805\u76ee\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684 DN \u70ba\u7a7a\u503c
ERR_MONITOR_INVALID_BASE_34=\u7121\u6cd5\u5f9e\u76e3\u8996\u5f8c\u7aef\u64f7\u53d6\u8acb\u6c42\u7684\u9805\u76ee %s\uff0c\u56e0\u70ba DN \u4e0d\u5728 %s \u7684\u76e3\u8996\u57fa\u5e95\u4e4b\u4e0b
INFO_MONITOR_UPTIME_37=%d \u5929 %d \u5c0f\u6642 %d \u5206 %d \u79d2
ERR_SCHEMA_CONFIG_ENTRY_NULL_38=\u5df2\u5617\u8a66\u914d\u7f6e\u6a21\u5f0f\u5f8c\u7aef\uff0c\u4f46\u672a\u63d0\u4f9b\u914d\u7f6e\u9805\u76ee\u3002\u9019\u662f\u4e0d\u5141\u8a31\u7684\uff0c\u800c\u4e14\u7121\u6cd5\u900f\u904e\u5354\u5b9a\u53d6\u5f97\u6a21\u5f0f\u8cc7\u8a0a
ERR_SCHEMA_CANNOT_DETERMINE_BASE_DN_40=\u5617\u8a66\u4f9d\u7167\u914d\u7f6e\u9805\u76ee %s \u7684 ds-cfg-schema-entry-dn \u5c6c\u6027\u6240\u6307\u5b9a\uff0c\u5224\u5b9a\u5728\u767c\u4f48\u76ee\u9304\u4f3a\u670d\u5668\u6a21\u5f0f\u8cc7\u8a0a\u6642\u6240\u8981\u4f7f\u7528\u7684\u57fa\u5e95 DN \u6642\u767c\u751f\u932f\u8aa4: %s\u3002\u5c07\u4f7f\u7528 cn=schema \u7684\u9810\u8a2d\u6a21\u5f0f\u57fa\u5e95 DN
ERR_SCHEMA_ADD_NOT_SUPPORTED_41=\u4e0d\u9858\u610f\u589e\u52a0\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u6a21\u5f0f\u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d
ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=\u4e0d\u9858\u610f\u79fb\u9664\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u6a21\u5f0f\u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d
ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=\u4e0d\u9858\u610f\u91cd\u65b0\u547d\u540d\u9805\u76ee\u300c%s\u300d\uff0c\u56e0\u70ba\u6a21\u5f0f\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\u5617\u8a66\u532f\u51fa\u57fa\u5e95\u6a21\u5f0f\u9805\u76ee\u6642\u767c\u751f\u932f\u8aa4: %s
ERR_SCHEMA_INVALID_BASE_48=\u7121\u6cd5\u5f9e\u6a21\u5f0f\u5f8c\u7aef\u64f7\u53d6\u8acb\u6c42\u7684\u9805\u76ee %s\uff0c\u56e0\u70ba DN \u7b49\u65bc\u5176\u4e2d\u4e00\u500b\u6a21\u5f0f\u9805\u76ee DN
ERR_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER_49=\u5617\u8a66\u958b\u555f\u6a21\u5f0f\u5f8c\u7aef\u7684 LDIF \u5beb\u5165\u5668\u6642\u767c\u751f\u672a\u9810\u671f\u7684\u932f\u8aa4: %s
@@ -155,7 +147,6 @@
INFO_TASKBE_UPDATED_RETENTION_TIME_128=\u5df2\u5b8c\u6210\u4f5c\u696d\u7684\u4fdd\u7559\u6642\u9593\u5df2\u66f4\u65b0\u70ba %d \u79d2\u3002\u9019\u6703\u7acb\u5373\u751f\u6548
INFO_TASKBE_UPDATED_BACKING_FILE_129=\u4f5c\u696d\u8cc7\u6599\u80cc\u666f\u6a94\u6848\u7684\u8def\u5f91\u5df2\u8b8a\u66f4\u70ba %s\u3002\u76ee\u524d\u4f5c\u696d\u914d\u7f6e\u7684\u5feb\u7167\u5df2\u5beb\u5165\u81f3\u8a72\u6a94\u6848\uff0c\u800c\u4e14\u5c07\u7e7c\u7e8c\u7528\u65bc\u672a\u4f86\u7684\u66f4\u65b0
ERR_TASKBE_ADD_DISALLOWED_DN_130=\u4f5c\u696d\u5f8c\u7aef\u4e2d\u7684\u65b0\u9805\u76ee\u53ea\u80fd\u76f4\u63a5\u589e\u52a0\u65bc\u6392\u5b9a\u4f5c\u696d\u7684 %s \u4e4b\u4e0b\u6216\u9031\u671f\u6027\u4f5c\u696d\u7684 %s \u4e4b\u4e0b
ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED_131=\u4f5c\u696d\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
INFO_TASKBE_BACKING_FILE_HEADER_132=\u6b64\u6a94\u6848\u5305\u542b\u76ee\u9304\u4f3a\u670d\u5668\u4f5c\u696d\u6392\u7a0b\u7a0b\u5f0f\u5f8c\u7aef\u6240\u4f7f\u7528\u7684\u8cc7\u6599\u3002\u8acb\u52ff\u76f4\u63a5\u7de8\u8f2f\u6b64\u6a94\u6848\uff0c\u56e0\u70ba\u9019\u4e9b\u8b8a\u66f4\u6709\u53ef\u80fd\u6703\u907a\u5931\u3002\u53ea\u80fd\u4f7f\u7528\u76ee\u9304\u4f3a\u670d\u5668\u96a8\u9644\u7684\u7ba1\u7406\u516c\u7528\u7a0b\u5f0f\u4f86\u7de8\u8f2f\u6392\u5b9a\u7684\u8207\u9031\u671f\u6027\u7684\u4f5c\u696d\u5b9a\u7fa9
ERR_TASKSCHED_DUPLICATE_RECURRING_ID_133=\u7121\u6cd5\u5c07\u9031\u671f\u6027\u4f5c\u696d %s \u589e\u52a0\u81f3\u4f5c\u696d\u6392\u7a0b\u7a0b\u5f0f\uff0c\u56e0\u70ba\u5df2\u7d93\u5b58\u5728\u5177\u6709\u76f8\u540c ID \u7684\u5176\u4ed6\u9031\u671f\u6027\u4f5c\u696d
ERR_TASKSCHED_DUPLICATE_TASK_ID_134=\u7121\u6cd5\u6392\u7a0b\u4f5c\u696d %s\uff0c\u56e0\u70ba\u5df2\u7d93\u6709\u76f8\u540c ID \u7684\u5176\u4ed6\u4f5c\u696d\u5b58\u5728
@@ -177,7 +168,6 @@
ERR_TASKSCHED_CANNOT_INITIALIZE_INTERNAL_151=\u5617\u8a66\u5229\u7528\u6240\u63d0\u4f9b\u9805\u76ee\u5167\u542b\u7684\u8cc7\u8a0a\uff0c\u5c0d\u985e\u5225 %s \u7684\u5be6\u4f8b\u57f7\u884c\u5167\u90e8\u521d\u59cb\u5316\u6642\u767c\u751f\u932f\u8aa4: %s
WARN_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE_152=\u5617\u8a66\u5c07\u76ee\u524d\u7684\u4f5c\u696d\u80cc\u666f\u6a94\u6848\u7531 %s \u91cd\u65b0\u547d\u540d\u70ba %s \u6642\u767c\u751f\u932f\u8aa4: %s\u3002\u5148\u524d\u7684\u4f5c\u696d\u914d\u7f6e (\u4e26\u672a\u53cd\u6620\u6700\u8fd1\u7684\u66f4\u65b0\u5167\u5bb9) \u53ef\u80fd\u5df2\u907a\u5931
ERR_TASKSCHED_CANNOT_WRITE_BACKING_FILE_154=\u5617\u8a66\u5beb\u5165\u65b0\u4f5c\u696d\u8cc7\u6599\u80cc\u666f\u6a94\u6848 %s \u6642\u767c\u751f\u932f\u8aa4: %s\u3002\u53cd\u6620\u6700\u8fd1\u66f4\u65b0\u5167\u5bb9\u7684\u914d\u7f6e\u8cc7\u8a0a\u53ef\u80fd\u5df2\u907a\u5931
ERR_TASKBE_IMPORT_NOT_SUPPORTED_155=\u4f5c\u696d\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d
INFO_TASKBE_INTERRUPTED_BY_SHUTDOWN_156=\u4f5c\u696d\u5f8c\u7aef\u95dc\u9589\u4e2d
INFO_ROOTDSE_UPDATED_SHOW_ALL_ATTRS_159=Root DSE \u914d\u7f6e\u5df2\u66f4\u65b0\uff0c\u6240\u4ee5\u914d\u7f6e\u5c6c\u6027 %s \u73fe\u5728\u5373\u53ef\u4f7f\u7528\u503c %s
ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=\u7121\u6cd5\u79fb\u9664\u64f1\u7f6e\u4f5c\u696d %s\uff0c\u56e0\u70ba\u4e0d\u5b58\u5728\u6b64\u7a2e\u4f5c\u696d
@@ -190,9 +180,7 @@
ERR_TASKBE_SEARCH_INVALID_BASE_168=\u7121\u6cd5\u5728\u4f5c\u696d\u5f8c\u7aef\u4e2d\u8655\u7406\u641c\u5c0b\u4f5c\u696d\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684\u57fa\u5e95 DN %s \u5c0d\u65bc\u4f5c\u696d\u5f8c\u7aef\u4e2d\u7684\u9805\u76ee\u800c\u8a00\u7121\u6548
ERR_TASKBE_SEARCH_NO_SUCH_TASK_169=\u7121\u6cd5\u5728\u4f5c\u696d\u5f8c\u7aef\u4e2d\u8655\u7406\u641c\u5c0b\u4f5c\u696d\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684\u641c\u5c0b\u57fa\u5e95\u9805\u76ee %s \u6c92\u6709\u76f8\u95dc\u806f\u7684\u6392\u5b9a\u4f5c\u696d
ERR_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK_170=\u7121\u6cd5\u5728\u4f5c\u696d\u5f8c\u7aef\u4e2d\u8655\u7406\u641c\u5c0b\u4f5c\u696d\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684\u641c\u5c0b\u57fa\u5e95\u9805\u76ee %s \u6c92\u6709\u76f8\u95dc\u806f\u7684\u9031\u671f\u6027\u4f5c\u696d
ERR_BACKUP_CONFIG_ENTRY_NULL_171=\u7121\u6cd5\u521d\u59cb\u5316\u5099\u4efd\u5f8c\u7aef\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684\u914d\u7f6e\u9805\u76ee\u70ba\u7a7a\u503c
ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN_172=\u7121\u6cd5\u521d\u59cb\u5316\u5099\u4efd\u5f8c\u7aef\uff0c\u56e0\u70ba\u5728\u5617\u8a66\u89e3\u78bc\u5f8c\u7aef\u7684\u57fa\u5e95 DN \u6642\u767c\u751f\u932f\u8aa4: %s
ERR_BACKUP_GET_ENTRY_NULL_175=\u7121\u6cd5\u5f9e\u5099\u4efd\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee\uff0c\u56e0\u70ba\u8acb\u6c42\u7684\u9805\u76ee\u70ba\u7a7a\u503c
ERR_BACKEND_CONFIG_ENTRY_NULL_171=\u7121\u6cd5\u521d\u59cb\u5316 "%s" \u5f8c\u7aef\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684\u914d\u7f6e\u9805\u76ee\u70ba\u7a7a\u503c
ERR_BACKUP_INVALID_BASE_176=\u8acb\u6c42\u7684\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u5f8c\u7aef\u4e2d
ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=\u7121\u6cd5\u5f9e\u5099\u4efd\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee %s\uff0c\u56e0\u70ba\u8acb\u6c42\u7684 DN \u5728\u57fa\u5e95 DN \u7684\u4e0b\u4e00\u500b\u5c64\u7d1a\uff0c\u4f46\u4e26\u672a\u6307\u5b9a\u5099\u4efd\u76ee\u9304
ERR_BACKUP_INVALID_BACKUP_DIRECTORY_178=\u7121\u6cd5\u5f9e\u5099\u4efd\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee %s\uff0c\u56e0\u70ba\u8acb\u6c42\u7684\u5099\u4efd\u76ee\u9304\u7121\u6548: %s
@@ -201,19 +189,13 @@
ERR_BACKUP_NO_BACKUP_PARENT_DN_181=\u7121\u6cd5\u5f9e\u5099\u4efd\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee %s\uff0c\u56e0\u70ba\u5b83\u6c92\u6709\u7236\u7cfb
ERR_BACKUP_NO_BACKUP_DIR_IN_DN_182=\u7121\u6cd5\u5f9e\u5099\u4efd\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee %s\uff0c\u56e0\u70ba DN \u4e0d\u5305\u542b\u8acb\u6c42\u7684\u5099\u4efd\u6240\u61c9\u5e38\u99d0\u7684\u5099\u4efd\u76ee\u9304
ERR_BACKUP_NO_SUCH_BACKUP_183=\u5099\u4efd %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u76ee\u9304 %s \u4e2d
ERR_BACKUP_ADD_NOT_SUPPORTED_184=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d
ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d
ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d
ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d
ERR_BACKUP_NO_SUCH_ENTRY_188=\u8acb\u6c42\u7684\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u5f8c\u7aef\u4e2d
ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u51fa\u4f5c\u696d
ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d
ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d
ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=\u5fc5\u9808\u63d0\u4f9b\u6b63\u597d\u4e00\u500b\u57fa\u5e95 DN\uff0c\u4ee5\u4fbf\u7528\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef
ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=\u9805\u76ee %s \u5df2\u7d93\u5b58\u5728\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef\u4e2d
ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\u9805\u76ee %s \u4e0d\u5c6c\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef
ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=\u7121\u6cd5\u589e\u52a0\u9805\u76ee %s\uff0c\u56e0\u70ba\u5176\u7236\u7cfb\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef\u4e2d
ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef\u4e2d
ERR_BACKEND_ENTRY_DOESNT_EXIST_196=\u9805\u76ee %s \u4e0d\u5b58\u5728 "%s" \u5f8c\u7aef\u4e2d
ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=\u7121\u6cd5\u522a\u9664\u9805\u76ee %s\uff0c\u56e0\u70ba\u8a72\u9805\u76ee\u5177\u6709\u4e00\u6216\u591a\u500b\u5f9e\u5c6c\u9805\u76ee
ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=\u7121\u6cd5\u5efa\u7acb LDIF \u5beb\u5165\u5668: %s
ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\u7121\u6cd5\u5c07\u9805\u76ee %s \u5beb\u5165\u81f3 LDIF: %
@@ -308,15 +290,12 @@
NOTE_BACKEND_ENVIRONMENT_UNUSABLE_297=\u5c0d\u61c9\u65bc\u5f8c\u7aef id %s \u7684 JE \u8cc7\u6599\u5eab\u74b0\u5883\u5df2\u6bc0\u58de\u3002\u91cd\u65b0\u555f\u52d5\u76ee\u9304\u4f3a\u670d\u5668\u4ee5\u4fbf\u91cd\u65b0\u958b\u555f\u74b0\u5883
ERR_TASKSCHED_NOT_ALLOWED_TASK_298=\u76ee\u9304\u4f3a\u670d\u5668\u4e26\u672a\u914d\u7f6e\u70ba\u5141\u8a31\u547c\u53eb\u4f5c\u696d %s
INFO_TASK_COMPLETION_BODY_299=\u4f5c\u696d ID: %s\r\n\u4f5c\u696d\u72c0\u614b: %s\r\n\u6392\u5b9a\u555f\u52d5\u6642\u9593: %s\r\n\u5be6\u969b\u555f\u52d5\u6642\u9593: %s\r\n\u5b8c\u6210\u6642\u9593: %s\r\n\r\n\u8a18\u9304\u8a0a\u606f:\r\n
ERR_TRUSTSTORE_GET_ENTRY_NULL_300=\u7121\u6cd5\u5f9e\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u64f7\u53d6\u9805\u76ee\uff0c\u56e0\u70ba\u8acb\u6c42\u7684\u9805\u76ee\u70ba\u7a7a\u503c
ERR_TRUSTSTORE_INVALID_BASE_301=\u8acb\u6c42\u7684\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e2d
ERR_TRUSTSTORE_DN_DOES_NOT_SPECIFY_CERTIFICATE_302=\u7121\u6cd5\u5728\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e2d\u8655\u7406\u9805\u76ee %s\uff0c\u56e0\u70ba\u8acb\u6c42\u7684 DN \u5728\u57fa\u5e95 DN \u7684\u4e0b\u4e00\u500b\u5c64\u7d1a\uff0c\u4f46\u4e26\u672a\u6307\u5b9a\u6191\u8b49\u540d\u7a31
ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=\u5617\u8a66\u5f9e\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u6a94\u6848 %2$s \u64f7\u53d6\u6191\u8b49 %1$s \u6642\u767c\u751f\u932f\u8aa4: %3$s
ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d
ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d
ERR_TRUSTSTORE_REQUIRES_ONE_BASE_DN_306=\u7121\u6cd5\u5f9e\u914d\u7f6e\u9805\u76ee %s \u521d\u59cb\u5316\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\uff0c\u56e0\u70ba\u5b83\u4e26\u4e0d\u662f\u6b63\u597d\u5305\u542b\u4e00\u500b\u57fa\u5e95 DN
ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u8207\u532f\u51fa\u4f5c\u696d
ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d
ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" \u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u8207\u532f\u51fa\u4f5c\u696d
ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s" \u5f8c\u7aef\u4e0d\u652f\u63f4\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d
ERR_TRUSTSTORE_NO_SUCH_FILE_309=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u6a94\u6848 %s (\u6307\u5b9a\u65bc\u914d\u7f6e\u9805\u76ee %s \u4e4b\u5c6c\u6027 ds-cfg-trust-store-file \u4e2d) \u4e0d\u5b58\u5728
ERR_TRUSTSTORE_INVALID_TYPE_310=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u985e\u578b %s (\u6307\u5b9a\u65bc\u914d\u7f6e\u9805\u76ee %s \u4e4b\u5c6c\u6027 ds-cfg-trust-store-type \u4e2d) \u7121\u6548: %s
ERR_TRUSTSTORE_PIN_FILE_CANNOT_CREATE_311=\u5617\u8a66\u5efa\u7acb PIN \u6a94\u6848 %s (\u6307\u5b9a\u65bc\u914d\u7f6e\u9805\u76ee %s \u7684\u5c6c\u6027 ds-cfg-trust-store-pin-file \u4e2d) \u6642\u767c\u751f\u932f\u8aa4
opendj3-server-dev/src/server/org/opends/server/api/Backend.java
@@ -25,6 +25,7 @@
 *      Portions Copyright 2014 ForgeRock AS
 */
package org.opends.server.api;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -34,12 +35,7 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.opends.server.admin.Configuration;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.AddOperation;
import org.opends.server.core.DeleteOperation;
import org.opends.server.core.DirectoryServer;
import org.opends.server.core.ModifyOperation;
import org.opends.server.core.ModifyDNOperation;
import org.opends.server.core.SearchOperation;
import org.opends.server.core.*;
import org.opends.server.monitors.BackendMonitor;
import org.opends.server.types.AttributeType;
import org.opends.server.types.BackupConfig;
@@ -59,38 +55,45 @@
import static org.opends.messages.BackendMessages.*;
/**
 * This class defines the set of methods and structures that must be
 * implemented for a Directory Server backend.
 *
 * @param <C>
 *          the type of the BackendCfg for the current backend
 */
@org.opends.server.types.PublicAPI(
     stability=org.opends.server.types.StabilityLevel.VOLATILE,
     mayInstantiate=false,
     mayExtend=true,
     mayInvoke=false)
public abstract class Backend
public abstract class Backend<C extends Configuration>
// should have been BackendCfg instead of Configuration
{
  // The backend that holds a portion of the DIT that is
  // hierarchically above the information in this backend.
  private Backend parentBackend;
  /**
   * The backend that holds a portion of the DIT that is hierarchically above
   * the information in this backend.
   */
  private Backend<?> parentBackend;
  // The set of backends that hold portions of the DIT that are
  // hierarchically below the information in this backend.
  private Backend[] subordinateBackends;
  /**
   * The set of backends that hold portions of the DIT that are hierarchically
   * below the information in this backend.
   */
  private Backend<?>[] subordinateBackends;
  // The backend monitor associated with this backend.
  /** The backend monitor associated with this backend. */
  private BackendMonitor backendMonitor;
  // Indicates whether this is a private backend or one that holds
  // user data.
  /**
   * Indicates whether this is a private backend or one that holds user data.
   */
  private boolean isPrivateBackend;
  // The unique identifier for this backend.
  /** The unique identifier for this backend. */
  private String backendID;
  // The writability mode for this backend.
  /** The writability mode for this backend. */
  private WritabilityMode writabilityMode;
@@ -121,8 +124,7 @@
   * @throws  ConfigException
   *                      If there is an error in the configuration.
   */
  public abstract void configureBackend(Configuration cfg)
         throws ConfigException;
  public abstract void configureBackend(C cfg) throws ConfigException;
@@ -146,7 +148,7 @@
   *          for this backend, or {@code false} if not.
   */
  public boolean isConfigurationAcceptable(
                      Configuration configuration,
                      C configuration,
                      List<LocalizableMessage> unacceptableReasons)
  {
    // This default implementation does not perform any special
@@ -327,7 +329,7 @@
            return false;
          }
        }
        return (! filter.getFilterComponents().isEmpty());
        return !filter.getFilterComponents().isEmpty();
      case NOT:
@@ -387,15 +389,7 @@
        {
          matchingRule = attrType.getEqualityMatchingRule();
        }
        if (matchingRule == null)
        {
          return false;
        }
        else
        {
          return isIndexed(attrType, matchingRule);
        }
        return matchingRule != null && isIndexed(attrType, matchingRule);
      default:
@@ -481,7 +475,7 @@
  public boolean entryExists(DN entryDN)
         throws DirectoryException
  {
    return (getEntry(entryDN) != null);
    return getEntry(entryDN) != null;
  }
@@ -639,8 +633,7 @@
  public final boolean supportsControl(String controlOID)
  {
    Set<String> supportedControls = getSupportedControls();
    return ((supportedControls != null) &&
            supportedControls.contains(controlOID));
    return supportedControls != null && supportedControls.contains(controlOID);
  }
@@ -668,8 +661,7 @@
  public final boolean supportsFeature(String featureOID)
  {
    Set<String> supportedFeatures = getSupportedFeatures();
    return ((supportedFeatures != null) &&
            supportedFeatures.contains(featureOID));
    return supportedFeatures != null && supportedFeatures.contains(featureOID);
  }
@@ -962,7 +954,7 @@
   * @return  The parent backend for this backend, or {@code null} if
   *          there is none.
   */
  public final Backend getParentBackend()
  public final Backend<?> getParentBackend()
  {
    return parentBackend;
  }
@@ -974,7 +966,7 @@
   *
   * @param  parentBackend  The parent backend for this backend.
   */
  public final void setParentBackend(Backend parentBackend)
  public final void setParentBackend(Backend<?> parentBackend)
  {
    synchronized (this)
    {
@@ -990,7 +982,7 @@
   * @return  The set of subordinate backends for this backend, or an
   *          empty array if none exist.
   */
  public final Backend[] getSubordinateBackends()
  public final Backend<?>[] getSubordinateBackends()
  {
    return subordinateBackends;
  }
@@ -1004,7 +996,7 @@
   *                              this backend.
   */
  public final void setSubordinateBackends(
                         Backend[] subordinateBackends)
                         Backend<?>[] subordinateBackends)
  {
    synchronized (this)
    {
@@ -1028,8 +1020,7 @@
   */
  public final boolean hasSubSuffix(DN subSuffixDN)
  {
    Backend[] subBackends = subordinateBackends;
    for (Backend b : subBackends)
    for (Backend<?> b : subordinateBackends)
    {
      for (DN baseDN : b.getBaseDNs())
      {
@@ -1070,9 +1061,9 @@
    synchronized (this)
    {
      boolean matchFound = false;
      ArrayList<Backend> subBackendList =
           new ArrayList<Backend>(subordinateBackends.length);
      for (Backend b : subordinateBackends)
      ArrayList<Backend<?>> subBackendList =
           new ArrayList<Backend<?>>(subordinateBackends.length);
      for (Backend<?> b : subordinateBackends)
      {
        boolean thisMatches = false;
        DN[] subBaseDNs = b.getBaseDNs();
@@ -1107,7 +1098,7 @@
      if (matchFound)
      {
        Backend[] newSubordinateBackends =
        Backend<?>[] newSubordinateBackends =
             new Backend[subBackendList.size()];
        subBackendList.toArray(newSubordinateBackends);
        subordinateBackends = newSubordinateBackends;
@@ -1125,21 +1116,20 @@
   *                             subordinate backends for this
   *                             backend.
   */
  public final void addSubordinateBackend(Backend subordinateBackend)
  public final void addSubordinateBackend(Backend<?> subordinateBackend)
  {
    synchronized (this)
    {
      LinkedHashSet<Backend> backendSet =
           new LinkedHashSet<Backend>();
      LinkedHashSet<Backend<?>> backendSet = new LinkedHashSet<Backend<?>>();
      for (Backend b : subordinateBackends)
      for (Backend<?> b : subordinateBackends)
      {
        backendSet.add(b);
      }
      if (backendSet.add(subordinateBackend))
      {
        Backend[] newSubordinateBackends =
        Backend<?>[] newSubordinateBackends =
             new Backend[backendSet.size()];
        backendSet.toArray(newSubordinateBackends);
        subordinateBackends = newSubordinateBackends;
@@ -1158,15 +1148,15 @@
   *                             backend.
   */
  public final void removeSubordinateBackend(
                         Backend subordinateBackend)
                         Backend<?> subordinateBackend)
  {
    synchronized (this)
    {
      ArrayList<Backend> backendList =
           new ArrayList<Backend>(subordinateBackends.length);
      ArrayList<Backend<?>> backendList =
           new ArrayList<Backend<?>>(subordinateBackends.length);
      boolean found = false;
      for (Backend b : subordinateBackends)
      for (Backend<?> b : subordinateBackends)
      {
        if (b.equals(subordinateBackend))
        {
@@ -1180,7 +1170,7 @@
      if (found)
      {
        Backend[] newSubordinateBackends =
        Backend<?>[] newSubordinateBackends =
             new Backend[backendList.size()];
        backendList.toArray(newSubordinateBackends);
        subordinateBackends = newSubordinateBackends;
@@ -1202,13 +1192,11 @@
   */
  public final boolean handlesEntry(DN entryDN)
  {
    DN[] baseDNs = getBaseDNs();
    for (DN dn : baseDNs)
    for (DN dn : getBaseDNs())
    {
      if (entryDN.isDescendantOf(dn))
      {
        Backend[] subBackends = subordinateBackends;
        for (Backend b : subBackends)
        for (Backend<?> b : subordinateBackends)
        {
          if (b.handlesEntry(entryDN))
          {
@@ -1244,7 +1232,7 @@
    {
      if (entryDN.isDescendantOf(baseDN))
      {
        if ((excludeDNs == null) || excludeDNs.isEmpty())
        if (excludeDNs == null || excludeDNs.isEmpty())
        {
          return true;
        }
opendj3-server-dev/src/server/org/opends/server/api/ConfigHandler.java
@@ -26,26 +26,25 @@
 */
package org.opends.server.api;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.config.ConfigEntry;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
/**
 * This class defines the set of methods and structures that must be
 * implemented by a Directory Server configuration handler.
 *
 * @param <C> the BackendCfg class in use with this ConfigHandler
 */
@org.opends.server.types.PublicAPI(
     stability=org.opends.server.types.StabilityLevel.VOLATILE,
     mayInstantiate=false,
     mayExtend=true,
     mayInvoke=true)
public abstract class ConfigHandler
       extends Backend
public abstract class ConfigHandler<C extends BackendCfg> extends Backend<C>
{
  /**
   * Bootstraps this configuration handler using the information in
opendj3-server-dev/src/server/org/opends/server/backends/BackupBackend.java
@@ -36,8 +36,6 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.BackupBackendCfg;
import org.opends.server.api.Backend;
@@ -65,32 +63,26 @@
 * unknown backup directory is included in the base DN.
 */
public class BackupBackend
       extends Backend
       extends Backend<BackupBackendCfg>
       implements ConfigurationChangeListener<BackupBackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The current configuration state.
  /** The current configuration state. */
  private BackupBackendCfg currentConfig;
  // The DN for the base backup entry.
  /** The DN for the base backup entry. */
  private DN backupBaseDN;
  // The set of base DNs for this backend.
  /** The set of base DNs for this backend. */
  private DN[] baseDNs;
  // The backup base entry.
  /** The backup base entry. */
  private Entry backupBaseEntry;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  // The set of predefined backup directories that we will use.
  /** The set of predefined backup directories that we will use. */
  private LinkedHashSet<File> backupDirectories;
@@ -109,32 +101,23 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config) throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(BackupBackendCfg config) throws ConfigException
  {
    // Make sure that a configuration entry was provided.  If not, then we will
    // not be able to complete initialization.
    if (config == null)
    {
      LocalizableMessage message = ERR_BACKUP_CONFIG_ENTRY_NULL.get();
      throw new ConfigException(message);
      throw new ConfigException(ERR_BACKEND_CONFIG_ENTRY_NULL.get(getBackendID()));
    }
    Reject.ifFalse(config instanceof BackupBackendCfg);
    currentConfig = (BackupBackendCfg)config;
    currentConfig = config;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -149,7 +132,7 @@
      logger.traceException(e);
      LocalizableMessage message =
          ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN.get(getExceptionMessage(e));
          ERR_BACKEND_CANNOT_DECODE_BACKEND_ROOT_DN.get(getExceptionMessage(e), getBackendID());
      throw new InitializationException(message, e);
    }
@@ -195,16 +178,8 @@
    backupBaseEntry = new Entry(backupBaseDN, objectClasses, userAttrs,
                                opAttrs);
    // Define an empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    // Register this as a change listener.
    currentConfig.addBackupChangeListener(this);
    // Register the backup base as a private suffix.
    try
    {
@@ -222,10 +197,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    currentConfig.removeBackupChangeListener(this);
@@ -242,10 +215,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
@@ -253,10 +224,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    int numEntries = 1;
@@ -288,10 +257,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
@@ -300,10 +267,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
@@ -312,10 +277,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException
  {
    long ret = numSubordinates(entryDN, false);
@@ -328,10 +291,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
      throws DirectoryException
  {
@@ -394,7 +355,7 @@
      AttributeType t =
          DirectoryServer.getAttributeType(ATTR_BACKUP_DIRECTORY_PATH, true);
      List<Attribute> attrList = backupDirEntry.getAttribute(t);
      if ((attrList != null) && (! attrList.isEmpty()))
      if (attrList != null && !attrList.isEmpty())
      {
        for (ByteString v : attrList.get(0))
        {
@@ -424,19 +385,16 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  {
    // If the requested entry was null, then throw an exception.
    if (entryDN == null)
    {
      LocalizableMessage message = ERR_BACKUP_GET_ENTRY_NULL.get();
      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                   message);
          ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID()));
    }
@@ -676,7 +634,7 @@
    userAttrs.put(t, attrList);
    HashSet<String> dependencies = backupInfo.getDependencies();
    if ((dependencies != null) && (!dependencies.isEmpty())) {
    if (dependencies != null && !dependencies.isEmpty()) {
      t = DirectoryServer.getAttributeType(ATTR_BACKUP_DEPENDENCY, true);
      AttributeBuilder builder = new AttributeBuilder(t);
      for (String s : dependencies) {
@@ -704,7 +662,7 @@
    }
    HashMap<String, String> properties = backupInfo.getBackupProperties();
    if ((properties != null) && (!properties.isEmpty())) {
    if (properties != null && !properties.isEmpty()) {
      for (Map.Entry<String, String> e : properties.entrySet()) {
        t = DirectoryServer.getAttributeType(toLowerCase(e.getKey()), true);
        attrList = new ArrayList<Attribute>(1);
@@ -720,63 +678,53 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_BACKUP_ADD_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_BACKUP_DELETE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
    LocalizableMessage message = ERR_BACKUP_MODIFY_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_MODIFY_NOT_SUPPORTED.get(oldEntry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                                   ModifyDNOperation modifyDNOperation)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -793,16 +741,13 @@
    SearchFilter filter = searchOperation.getFilter();
    if (backupBaseDN.equals(baseDN))
    {
      if ((scope == SearchScope.BASE_OBJECT) ||
          (scope == SearchScope.WHOLE_SUBTREE))
      if ((scope == SearchScope.BASE_OBJECT || scope == SearchScope.WHOLE_SUBTREE)
          && filter.matchesEntry(baseEntry))
      {
        if (filter.matchesEntry(baseEntry))
        {
          searchOperation.returnEntry(baseEntry, null);
        }
        searchOperation.returnEntry(baseEntry, null);
      }
      if ((scope != SearchScope.BASE_OBJECT) && (! backupDirectories.isEmpty()))
      if (scope != SearchScope.BASE_OBJECT && !backupDirectories.isEmpty())
      {
        AttributeType backupPathType =
             DirectoryServer.getAttributeType(ATTR_BACKUP_DIRECTORY_PATH, true);
@@ -841,7 +786,7 @@
          {
            List<Attribute> attrList =
                 backupDirEntry.getAttribute(backupPathType);
            if ((attrList != null) && (! attrList.isEmpty()))
            if (attrList != null && !attrList.isEmpty())
            {
              for (ByteString v : attrList.get(0))
              {
@@ -879,13 +824,10 @@
    {
      Entry backupDirEntry = getBackupDirectoryEntry(baseDN);
      if ((scope == SearchScope.BASE_OBJECT) ||
          (scope == SearchScope.WHOLE_SUBTREE))
      if ((scope == SearchScope.BASE_OBJECT || scope == SearchScope.WHOLE_SUBTREE)
          && filter.matchesEntry(backupDirEntry))
      {
        if (filter.matchesEntry(backupDirEntry))
        {
          searchOperation.returnEntry(backupDirEntry, null);
        }
        searchOperation.returnEntry(backupDirEntry, null);
      }
@@ -894,7 +836,7 @@
        AttributeType t =
             DirectoryServer.getAttributeType(ATTR_BACKUP_DIRECTORY_PATH, true);
        List<Attribute> attrList = backupDirEntry.getAttribute(t);
        if ((attrList != null) && (! attrList.isEmpty()))
        if (attrList != null && !attrList.isEmpty())
        {
          for (ByteString v : attrList.get(0))
          {
@@ -928,15 +870,15 @@
    }
    else
    {
      if ((parentDN == null)
          || (! backupBaseDN.equals(parentDN.getParentDNInSuffix())))
      if (parentDN == null
          || !backupBaseDN.equals(parentDN.getParentDNInSuffix()))
      {
        LocalizableMessage message = ERR_BACKUP_NO_SUCH_ENTRY.get(backupBaseDN);
        throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message);
      }
      if ((scope == SearchScope.BASE_OBJECT) ||
          (scope == SearchScope.WHOLE_SUBTREE))
      if (scope == SearchScope.BASE_OBJECT ||
          scope == SearchScope.WHOLE_SUBTREE)
      {
        Entry backupEntry = getBackupEntry(baseDN);
        if (backupEntry == null)
@@ -955,32 +897,22 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // We do not support LDIF exports.
@@ -989,128 +921,100 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_BACKUP_EXPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    // This backend does not support LDIF imports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
    // This backend does not support LDIF imports.
    LocalizableMessage message = ERR_BACKUP_IMPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
  throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
       BackupBackendCfg cfg, List<LocalizableMessage> unacceptableReasons)
@@ -1123,9 +1027,7 @@
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(BackupBackendCfg cfg)
  {
@@ -1164,9 +1066,7 @@
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/backends/LDIFBackend.java
@@ -34,8 +34,6 @@
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.LDIFBackendCfg;
import org.opends.server.api.AlertGenerator;
@@ -62,7 +60,7 @@
 * re-written on disk.
 */
public class LDIFBackend
       extends Backend
       extends Backend<LDIFBackendCfg>
       implements ConfigurationChangeListener<LDIFBackendCfg>, AlertGenerator
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -79,10 +77,8 @@
  private Set<DN> baseDNSet;
  /** The set of supported controls for this backend. */
  private Set<String> supportedControls;
  /** The set of supported features for this backend. */
  private Set<String> supportedFeatures;
  private final Set<String> supportedControls =
      Collections.singleton(OID_SUBTREE_DELETE_CONTROL);
  /** The current configuration for this backend. */
  private LDIFBackendCfg currentConfig;
@@ -115,10 +111,8 @@
    backendLock = new ReentrantReadWriteLock(useFairLocking);
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -305,10 +299,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void finalizeBackend()
  {
    backendLock.writeLock().lock();
@@ -336,19 +328,15 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public long getEntryCount()
  {
    backendLock.readLock().lock();
@@ -368,29 +356,23 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean isLocal()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
@@ -424,10 +406,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
         throws DirectoryException
  {
@@ -475,10 +455,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public Entry getEntry(DN entryDN)
  {
    backendLock.readLock().lock();
@@ -493,10 +471,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean entryExists(DN entryDN)
  {
    backendLock.readLock().lock();
@@ -511,10 +487,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
@@ -586,10 +560,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
@@ -713,10 +685,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -755,10 +725,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                          ModifyDNOperation modifyDNOperation)
         throws DirectoryException
@@ -894,10 +862,8 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -964,37 +930,29 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsLDIFExport()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -1047,19 +1005,15 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsLDIFImport()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
@@ -1229,31 +1183,23 @@
    }
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -1261,10 +1207,8 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void removeBackup(BackupDirectory backupDirectory, String backupID)
         throws DirectoryException
  {
@@ -1272,20 +1216,15 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -1293,17 +1232,13 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /** {@inheritDoc} */
  @Override()
  public void configureBackend(Configuration config)
         throws ConfigException
  @Override
  public void configureBackend(LDIFBackendCfg config) throws ConfigException
  {
    if (config != null)
    {
      Reject.ifFalse(config instanceof LDIFBackendCfg);
      currentConfig = (LDIFBackendCfg) config;
      currentConfig = config;
      currentConfig.addLDIFChangeListener(this);
      baseDNs = new DN[currentConfig.getBaseDN().size()];
@@ -1316,17 +1251,10 @@
      baseDNSet = new HashSet<DN>();
      Collections.addAll(baseDNSet, baseDNs);
      supportedControls = new HashSet<String>(1);
      supportedControls.add(OID_SUBTREE_DELETE_CONTROL);
      supportedFeatures = new HashSet<String>(0);
      ldifFilePath = currentConfig.getLDIFFile();
    }
  }
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(LDIFBackendCfg configuration,
@@ -1344,8 +1272,6 @@
    return configAcceptable;
  }
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(
@@ -1379,8 +1305,6 @@
                                  messages);
  }
  /** {@inheritDoc} */
  @Override
  public DN getComponentEntryDN()
@@ -1388,8 +1312,6 @@
    return currentConfig.dn();
  }
  /** {@inheritDoc} */
  @Override
  public String getClassName()
@@ -1397,8 +1319,6 @@
    return LDIFBackend.class.getName();
  }
  /** {@inheritDoc} */
  @Override
  public Map<String,String> getAlerts()
@@ -1411,8 +1331,6 @@
    return alerts;
  }
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
opendj3-server-dev/src/server/org/opends/server/backends/MemoryBackend.java
@@ -26,8 +26,7 @@
 */
package org.opends.server.backends;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -37,8 +36,6 @@
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.std.server.MemoryBackendCfg;
import org.opends.server.api.Backend;
import org.forgerock.opendj.config.server.ConfigException;
@@ -73,8 +70,6 @@
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
/**
 * This class defines a very simple backend that stores its information in
 * memory.  This is primarily intended for testing purposes with small data
@@ -103,28 +98,26 @@
 * entry has any children (which must not be the case for delete operations).
 */
public class MemoryBackend
       extends Backend
       extends Backend<MemoryBackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The base DNs for this backend.
  /** The base DNs for this backend. */
  private DN[] baseDNs;
  // The mapping between parent DNs and their immediate children.
  /** The mapping between parent DNs and their immediate children. */
  private HashMap<DN,HashSet<DN>> childDNs;
  // The base DNs for this backend, in a hash set.
  /** The base DNs for this backend, in a hash set. */
  private HashSet<DN> baseDNSet;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  /** The set of supported controls for this backend. */
  private final Set<String> supportedControls =
      Collections.singleton(OID_SUBTREE_DELETE_CONTROL);
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  // The mapping between entry DNs and the corresponding entries.
  /** The mapping between entry DNs and the corresponding entries. */
  private LinkedHashMap<DN,Entry> entryMap;
@@ -153,28 +146,21 @@
    this.baseDNs = baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config)
         throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(MemoryBackendCfg config) throws ConfigException
  {
    if (config != null)
    {
      Reject.ifFalse(config instanceof MemoryBackendCfg);
      MemoryBackendCfg cfg = (MemoryBackendCfg)config;
      MemoryBackendCfg cfg = config;
      DN[] baseDNs = new DN[cfg.getBaseDN().size()];
      cfg.getBaseDN().toArray(baseDNs);
      setBaseDNs(baseDNs);
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void initializeBackend()
       throws ConfigException, InitializationException
  {
@@ -182,7 +168,7 @@
    // implementation.  If we were to add such support in the future, we would
    // likely want to separate the data for each base DN into a separate entry
    // map.
    if ((baseDNs == null) || (baseDNs.length != 1))
    if (baseDNs == null || baseDNs.length != 1)
    {
      LocalizableMessage message = ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE.get();
      throw new ConfigException(message);
@@ -197,11 +183,6 @@
    entryMap = new LinkedHashMap<DN,Entry>();
    childDNs = new HashMap<DN,HashSet<DN>>();
    supportedControls = new HashSet<String>();
    supportedControls.add(OID_SUBTREE_DELETE_CONTROL);
    supportedFeatures = new HashSet<String>();
    for (DN dn : baseDNs)
    {
      try
@@ -230,12 +211,8 @@
    childDNs.clear();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void finalizeBackend()
  {
    clearMemoryBackend();
@@ -253,23 +230,15 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized long getEntryCount()
  {
    if (entryMap != null)
@@ -280,35 +249,23 @@
    return -1;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public synchronized ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
@@ -321,10 +278,8 @@
    return ConditionResult.valueOf(ret != 0);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized long numSubordinates(DN entryDN, boolean subtree)
         throws DirectoryException
  {
@@ -356,10 +311,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized Entry getEntry(DN entryDN)
  {
    Entry entry = entryMap.get(entryDN);
@@ -371,23 +324,15 @@
    return entry;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized boolean entryExists(DN entryDN)
  {
    return entryMap.containsKey(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
@@ -434,12 +379,8 @@
    children.add(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void deleteEntry(DN entryDN,
                                       DeleteOperation deleteOperation)
         throws DirectoryException
@@ -448,19 +389,13 @@
    if (! entryMap.containsKey(entryDN))
    {
      throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
          ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(entryDN));
          ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID()));
    }
    // Check to see if the entry contains a subtree delete control.
    boolean subtreeDelete = false;
    if (deleteOperation != null
        && deleteOperation
            .getRequestControl(SubtreeDeleteControl.DECODER) != null)
    {
      subtreeDelete = true;
    }
    boolean subtreeDelete = deleteOperation != null
        && deleteOperation.getRequestControl(SubtreeDeleteControl.DECODER) != null;
    HashSet<DN> children = childDNs.get(entryDN);
    if (subtreeDelete)
@@ -487,7 +422,7 @@
    {
      // Make sure the entry doesn't have any children.  If it does, then throw
      // an exception.
      if ((children != null) && (! children.isEmpty()))
      if (children != null && !children.isEmpty())
      {
        throw new DirectoryException(ResultCode.NOT_ALLOWED_ON_NONLEAF,
            ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN.get(entryDN));
@@ -515,12 +450,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -531,7 +462,7 @@
    if (! entryMap.containsKey(entryDN))
    {
      throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
          ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(entryDN));
          ERR_BACKEND_ENTRY_DOESNT_EXIST.get(entryDN, getBackendID()));
    }
@@ -539,12 +470,8 @@
    entryMap.put(entryDN, e);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void renameEntry(DN currentDN, Entry entry,
                                       ModifyDNOperation modifyDNOperation)
         throws DirectoryException
@@ -555,7 +482,7 @@
    if (! entryMap.containsKey(currentDN))
    {
      throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
          ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(currentDN));
          ERR_BACKEND_ENTRY_DOESNT_EXIST.get(currentDN, getBackendID()));
    }
@@ -603,7 +530,7 @@
    // Make sure that the parent of the new entry exists.
    DN parentDN = e.getName().getParentDNInSuffix();
    if ((parentDN == null) || (! entryMap.containsKey(parentDN)))
    if (parentDN == null || !entryMap.containsKey(parentDN))
    {
      throw new DirectoryException(ResultCode.NO_SUCH_OBJECT,
          ERR_MEMORYBACKEND_RENAME_PARENT_DOESNT_EXIST.get(currentDN, parentDN));
@@ -615,12 +542,8 @@
    addEntry(e, null);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -632,7 +555,7 @@
    // 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))
    if (baseEntry == null && handlesEntry(baseDN))
    {
      DN matchedDN = baseDN.getParentDNInSuffix();
      while (matchedDN != null)
@@ -645,7 +568,8 @@
        matchedDN = matchedDN.getParentDNInSuffix();
      }
      LocalizableMessage message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(baseDN);
      LocalizableMessage message =
          ERR_BACKEND_ENTRY_DOESNT_EXIST.get(baseDN, getBackendID());
      throw new DirectoryException(
              ResultCode.NO_SUCH_OBJECT, message, matchedDN, null);
    }
@@ -679,45 +603,29 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -753,34 +661,19 @@
    }
    finally
    {
      try
      {
        ldifWriter.close();
      }
      catch (Exception e)
      {
        logger.traceException(e);
      }
      close(ldifWriter);
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
@@ -853,37 +746,23 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -891,12 +770,8 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
@@ -905,24 +780,15 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -930,11 +796,7 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/backends/MonitorBackend.java
@@ -22,7 +22,7 @@
 *
 *
 *      Copyright 2006-2010 Sun Microsystems, Inc.
 *      Portions Copyright 2012-2014 ForgeRock AS.
 *      Portions copyright 2012-2014 ForgeRock AS.
 */
package org.opends.server.backends;
@@ -34,7 +34,6 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.MonitorBackendCfg;
import org.opends.server.api.Backend;
@@ -60,38 +59,31 @@
 * requested monitor and dynamically generate the associated entry. It will also
 * construct a base monitor entry with some useful server-wide data.
 */
public class MonitorBackend extends Backend implements
public class MonitorBackend extends Backend<MonitorBackendCfg> implements
    ConfigurationChangeListener<MonitorBackendCfg>
{
  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.
  /** The set of objectclasses that will be used in monitor entries. */
  private HashMap<ObjectClass, String> monitorObjectClasses;
  // The DN of the configuration entry for this backend.
  /** The DN of the configuration entry for this backend. */
  private DN configEntryDN;
  // The current configuration state.
  /** The current configuration state. */
  private MonitorBackendCfg currentConfig;
  // The DN for the base monitor entry.
  /** The DN for the base monitor entry. */
  private DN baseMonitorDN;
  // The set of base DNs for this backend.
  /** The set of base DNs for this backend. */
  private DN[] baseDNs;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  /**
   * Creates a new backend with the provided information. All backend
   * implementations must implement a default constructor that use
@@ -102,24 +94,16 @@
    super();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(final Entry entry, final AddOperation addOperation)
      throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_MONITOR_ADD_NOT_SUPPORTED.get(entry.getName()));
        ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(
      final MonitorBackendCfg backendCfg)
@@ -175,19 +159,14 @@
    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(final Configuration config)
  /** {@inheritDoc} */
  @Override
  public void configureBackend(final MonitorBackendCfg config)
      throws ConfigException
  {
    Reject.ifNull(config);
    Reject.ifFalse(config instanceof MonitorBackendCfg);
    final MonitorBackendCfg cfg = (MonitorBackendCfg) config;
    final MonitorBackendCfg cfg = config;
    final ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn());
    // Make sure that a configuration entry was provided. If not, then we will
@@ -236,10 +215,6 @@
        OC_MONITOR_ENTRY, true);
    monitorObjectClasses.put(monitorOC, OC_MONITOR_ENTRY);
    // Define an empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    // Create the set of base DNs that we will handle. In this case, it's just
    // the DN of the base monitor entry.
    try
@@ -261,50 +236,33 @@
    currentConfig = cfg;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(final BackupConfig backupConfig)
      throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    final LocalizableMessage message = ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(final DN entryDN,
      final DeleteOperation deleteOperation) throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_MONITOR_DELETE_NOT_SUPPORTED.get(entryDN));
        ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean entryExists(final DN entryDN) throws DirectoryException
  {
    return getDIT().containsKey(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(final LDIFExportConfig exportConfig)
      throws DirectoryException
  {
@@ -335,14 +293,7 @@
    {
      logger.traceException(e);
      try
      {
        ldifWriter.close();
      }
      catch (final Exception e2)
      {
        logger.traceException(e2);
      }
      close(ldifWriter);
      final LocalizableMessage message = ERR_MONITOR_UNABLE_TO_EXPORT_BASE
          .get(stackTraceToSingleLineString(e));
@@ -363,14 +314,7 @@
      {
        logger.traceException(e);
        try
        {
          ldifWriter.close();
        }
        catch (final Exception e2)
        {
          logger.traceException(e2);
        }
        close(ldifWriter);
        final LocalizableMessage message = ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY
            .get(monitorProvider.getMonitorInstanceName(),
@@ -380,23 +324,11 @@
      }
    }
    // Close the monitor provider and return.
    try
    {
      ldifWriter.close();
    }
    catch (final Exception e)
    {
      logger.traceException(e);
    }
    close(ldifWriter);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    currentConfig.removeMonitorChangeListener(this);
@@ -410,31 +342,22 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(final DN entryDN) throws DirectoryException
  {
    // If the requested entry was null, then throw an exception.
    if (entryDN == null)
    {
      final LocalizableMessage message = ERR_MONITOR_GET_ENTRY_NULL.get();
      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
          message);
          ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID()));
    }
    // If the requested entry was the monitor base entry, then retrieve it
@@ -456,45 +379,29 @@
    return getEntry(entryDN, dit);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    return getDIT().size();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(final DN entryDN)
      throws DirectoryException
  {
@@ -508,26 +415,17 @@
    return ConditionResult.UNDEFINED;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(final LDIFImportConfig importConfig)
      throws DirectoryException
  {
    // This backend does not support LDIF imports.
    final LocalizableMessage message = ERR_MONITOR_IMPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend() throws ConfigException,
      InitializationException
  {
@@ -549,11 +447,7 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
      final MonitorBackendCfg backendCfg,
@@ -564,12 +458,8 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(final AttributeType attributeType,
      final IndexType indexType)
  {
@@ -577,24 +467,16 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(final DN entryDN, final boolean subtree)
      throws DirectoryException
  {
@@ -622,50 +504,33 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException
  {
    throw new UnsupportedOperationException("Operation not supported.");
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(final BackupDirectory backupDirectory,
      final String backupID) throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    final LocalizableMessage message = ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(final DN currentDN, final Entry entry,
      final ModifyDNOperation modifyDNOperation) throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED.get(currentDN));
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(final Entry oldEntry, final Entry newEntry,
      final ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -673,26 +538,17 @@
        ERR_MONITOR_MODIFY_NOT_SUPPORTED.get(newEntry.getName(), configEntryDN));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(final RestoreConfig restoreConfig)
      throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    final LocalizableMessage message = ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(final SearchOperation searchOperation)
      throws DirectoryException
  {
@@ -717,7 +573,7 @@
        }
        matchedDN = matchedDN.parent();
      }
      final LocalizableMessage message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(baseDN);
      final LocalizableMessage message = ERR_BACKEND_ENTRY_DOESNT_EXIST.get(baseDN, getBackendID());
      throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message,
          matchedDN, null);
    }
@@ -743,37 +599,23 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(final BackupConfig backupConfig,
      final StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // We can export all the monitor entries as a point-in-time snapshot.
@@ -782,27 +624,17 @@
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    // This backend does not support LDIF imports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
@@ -890,13 +722,12 @@
    monitorUserAttrs.put(currentTimeAttr.getAttributeType(), currentTimeList);
    // Add the uptime as a human-readable string.
    long upSeconds = ((System.currentTimeMillis() - DirectoryServer
        .getStartTime()) / 1000);
    final long upDays = (upSeconds / 86400);
    long upSeconds = (System.currentTimeMillis() - DirectoryServer.getStartTime()) / 1000;
    final long upDays = upSeconds / 86400;
    upSeconds %= 86400;
    final long upHours = (upSeconds / 3600);
    final long upHours = upSeconds / 3600;
    upSeconds %= 3600;
    final long upMinutes = (upSeconds / 60);
    final long upMinutes = upSeconds / 60;
    upSeconds %= 60;
    final LocalizableMessage upTimeStr = INFO_MONITOR_UPTIME.get(upDays, upHours,
        upMinutes, upSeconds);
@@ -1160,17 +991,12 @@
  private boolean isMonitorConfigAttribute(final Attribute attribute)
  {
    final AttributeType attrType = attribute.getAttributeType();
    if (attrType.hasName(ATTR_COMMON_NAME)
    return attrType.hasName(ATTR_COMMON_NAME)
        || attrType.hasName(ATTR_BACKEND_ENABLED.toLowerCase())
        || attrType.hasName(ATTR_BACKEND_CLASS.toLowerCase())
        || attrType.hasName(ATTR_BACKEND_BASE_DN.toLowerCase())
        || attrType.hasName(ATTR_BACKEND_ID.toLowerCase())
        || attrType.hasName(ATTR_BACKEND_WRITABILITY_MODE.toLowerCase()))
    {
      return true;
    }
    return false;
        || attrType.hasName(ATTR_BACKEND_WRITABILITY_MODE.toLowerCase());
  }
}
opendj3-server-dev/src/server/org/opends/server/backends/NullBackend.java
@@ -26,14 +26,14 @@
 */
package org.opends.server.backends;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.forgerock.i18n.LocalizableMessage;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.std.server.BackendCfg;
import org.opends.server.api.Backend;
import org.forgerock.opendj.config.server.ConfigException;
@@ -63,14 +63,11 @@
import org.opends.server.util.LDIFException;
import org.opends.server.util.LDIFReader;
import org.opends.server.util.LDIFWriter;
import org.forgerock.util.Reject;
import static org.opends.messages.BackendMessages.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
/**
 * This class implements /dev/null like backend for development and
 * testing. The following behaviors of this backend implementation
@@ -99,25 +96,27 @@
 * not represent a complete and stable API, should be considered private
 * and subject to change without notice.
 */
public class NullBackend extends Backend
public class NullBackend extends Backend<BackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The base DNs for this backend.
  /** The base DNs for this backend. */
  private DN[] baseDNs;
  // The base DNs for this backend, in a hash set.
  /** The base DNs for this backend, in a hash set. */
  private HashSet<DN> baseDNSet;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  /** The set of supported controls for this backend. */
  private final Set<String> supportedControls = new HashSet<String>(Arrays.asList(
      OID_SUBTREE_DELETE_CONTROL,
      OID_PAGED_RESULTS_CONTROL,
      OID_MANAGE_DSAIT_CONTROL,
      OID_SERVER_SIDE_SORT_REQUEST_CONTROL,
      OID_VLV_REQUEST_CONTROL));
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  // The map of null entry object classes.
  /** The map of null entry object classes. */
  private Map<ObjectClass,String> objectClasses;
@@ -145,27 +144,21 @@
    this.baseDNs = baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config)
         throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(BackendCfg config) throws ConfigException
  {
    if (config != null)
    {
      Reject.ifFalse(config instanceof BackendCfg);
      BackendCfg cfg = (BackendCfg)config;
      BackendCfg cfg = config;
      DN[] cfgBaseDNs = new DN[cfg.getBaseDN().size()];
      cfg.getBaseDN().toArray(cfgBaseDNs);
      setBaseDNs(cfgBaseDNs);
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void initializeBackend()
       throws ConfigException, InitializationException
  {
@@ -175,17 +168,6 @@
      baseDNSet.add(dn);
    }
    // Add supported controls.
    supportedControls = new HashSet<String>();
    supportedControls.add(OID_SUBTREE_DELETE_CONTROL);
    supportedControls.add(OID_PAGED_RESULTS_CONTROL);
    supportedControls.add(OID_MANAGE_DSAIT_CONTROL);
    supportedControls.add(OID_SERVER_SIDE_SORT_REQUEST_CONTROL);
    supportedControls.add(OID_VLV_REQUEST_CONTROL);
    // Add supported features.
    supportedFeatures = new HashSet<String>();
    // Register base DNs.
    for (DN dn : baseDNs)
    {
@@ -233,10 +215,8 @@
    objectClasses.put(extOC, extOCName);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized void finalizeBackend()
  {
    for (DN dn : baseDNs)
@@ -252,47 +232,37 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    return -1;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
@@ -300,68 +270,54 @@
    return ConditionResult.UNDEFINED;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
         throws DirectoryException
  {
    return -1;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
  {
    return new Entry(null, objectClasses, null, null);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean entryExists(DN entryDN)
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
    return;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
    return;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
    return;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
    ModifyDNOperation modifyDNOperation)
         throws DirectoryException
@@ -369,10 +325,8 @@
    return;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -390,37 +344,29 @@
    return;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -436,26 +382,18 @@
        message);
    }
    try {
      ldifWriter.close();
    } catch (Exception e) {
      logger.traceException(e);
    }
    close(ldifWriter);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
@@ -528,31 +466,23 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -560,10 +490,8 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
@@ -572,20 +500,15 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -593,9 +516,7 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -31,7 +31,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -48,7 +47,6 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.RootDSEBackendCfg;
import org.opends.server.api.Backend;
@@ -84,50 +82,50 @@
 * with the other backends.
 */
public class RootDSEBackend
       extends Backend
       extends Backend<RootDSEBackendCfg>
       implements ConfigurationChangeListener<RootDSEBackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The set of standard "static" attributes that we will always include in the
  // root DSE entry and won't change while the server is running.
  /**
   * The set of standard "static" attributes that we will always include in the
   * root DSE entry and won't change while the server is running.
   */
  private ArrayList<Attribute> staticDSEAttributes;
  // The set of user-defined attributes that will be included in the root DSE
  // entry.
  /**
   * The set of user-defined attributes that will be included in the root DSE
   * entry.
   */
  private ArrayList<Attribute> userDefinedAttributes;
  // Indicates whether the attributes of the root DSE should always be treated
  // as user attributes even if they are defined as operational in the schema.
  /**
   * Indicates whether the attributes of the root DSE should always be treated
   * as user attributes even if they are defined as operational in the schema.
   */
  private boolean showAllAttributes;
  // The set of subordinate base DNs and their associated backends that will be
  // used for non-base searches.
  /**
   * The set of subordinate base DNs and their associated backends that will be
   * used for non-base searches.
   */
  private ConcurrentHashMap<DN,Backend> subordinateBaseDNs;
  // The set of objectclasses that will be used in the root DSE entry.
  /** The set of objectclasses that will be used in the root DSE entry. */
  private HashMap<ObjectClass,String> dseObjectClasses;
  // The current configuration state.
  /** The current configuration state. */
  private RootDSEBackendCfg currentConfig;
  // The DN of the configuration entry for this backend.
  /** The DN of the configuration entry for this backend. */
  private DN configEntryDN;
  // The DN for the root DSE.
  /** The DN for the root DSE. */
  private DN rootDSEDN;
  // The set of base DNs for this backend.
  /** The set of base DNs for this backend. */
  private DN[] baseDNs;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  /**
@@ -142,27 +140,17 @@
    // Perform all initialization in initializeBackend.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config)
         throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(RootDSEBackendCfg config) throws ConfigException
  {
    Reject.ifNull(config);
    Reject.ifFalse(config instanceof RootDSEBackendCfg);
    currentConfig = (RootDSEBackendCfg)config;
    currentConfig = config;
    configEntryDN = config.dn();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -258,16 +246,13 @@
    // the root DSE.
    staticDSEAttributes = new ArrayList<Attribute>();
    staticDSEAttributes.add(createAttribute(ATTR_VENDOR_NAME,
                                            ATTR_VENDOR_NAME_LC,
    staticDSEAttributes.add(Attributes.create(ATTR_VENDOR_NAME,
                                            SERVER_VENDOR_NAME));
    staticDSEAttributes.add(createAttribute(ATTR_VENDOR_VERSION,
                                 ATTR_VENDOR_VERSION_LC,
    staticDSEAttributes.add(Attributes.create(ATTR_VENDOR_VERSION,
                                 DirectoryServer.getVersionString()));
    staticDSEAttributes.add(createAttribute("fullVendorVersion",
                                 "fullvendorversion",
    staticDSEAttributes.add(Attributes.create("fullVendorVersion",
                                 BuildVersion.binaryVersion().toString()));
    // Construct the set of objectclasses to include in the root DSE entry.
@@ -288,11 +273,6 @@
    dseObjectClasses.put(rootDSEOC, OC_ROOT_DSE);
    // Define an empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    // Set the backend ID for this backend. The identifier needs to be
    // specific enough to avoid conflict with user backend identifiers.
    setBackendID("__root.dse__");
@@ -302,12 +282,8 @@
    currentConfig.addChangeListener(this);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    currentConfig.removeChangeListener(this);
@@ -327,69 +303,44 @@
  private boolean isDSEConfigAttribute(Attribute attribute)
  {
    AttributeType attrType = attribute.getAttributeType();
    if (attrType.hasName(ATTR_ROOT_DSE_SUBORDINATE_BASE_DN.toLowerCase()) ||
        attrType.hasName(ATTR_ROOTDSE_SHOW_ALL_ATTRIBUTES.toLowerCase()) ||
        attrType.hasName(ATTR_COMMON_NAME))
    {
      return true;
    }
    return false;
    return attrType.hasName(ATTR_ROOT_DSE_SUBORDINATE_BASE_DN.toLowerCase())
        || attrType.hasName(ATTR_ROOTDSE_SHOW_ALL_ATTRIBUTES.toLowerCase())
        || attrType.hasName(ATTR_COMMON_NAME);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public synchronized long getEntryCount()
  {
    // There is always just a single entry in this backend.
    return 1;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
@@ -401,12 +352,8 @@
    return ConditionResult.valueOf(ret != 0);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
         throws DirectoryException
  {
@@ -451,17 +398,13 @@
    return count;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  {
    // If the requested entry was the root DSE, then create and return it.
    if ((entryDN == null) || entryDN.isRootDN())
    if (entryDN == null || entryDN.isRootDN())
    {
      return getRootDSE();
    }
@@ -541,127 +484,37 @@
    Attribute publicNamingContextAttr = createDNAttribute(ATTR_NAMING_CONTEXTS,
        ATTR_NAMING_CONTEXTS_LC, namingContexts);
    if (!publicNamingContextAttr.isEmpty())
    {
      List<Attribute> publicNamingContextAttrs = new ArrayList<Attribute>(1);
      publicNamingContextAttrs.add(publicNamingContextAttr);
      if (showAllAttributes
          || (!publicNamingContextAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(publicNamingContextAttr.getAttributeType(),
            publicNamingContextAttrs);
      }
      else
      {
        dseOperationalAttrs.put(publicNamingContextAttr.getAttributeType(),
            publicNamingContextAttrs);
      }
    }
    addAttribute(publicNamingContextAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "ds-private-naming-contexts" attribute.
    Attribute privateNamingContextAttr = createDNAttribute(
        ATTR_PRIVATE_NAMING_CONTEXTS, ATTR_PRIVATE_NAMING_CONTEXTS,
        DirectoryServer.getPrivateNamingContexts().keySet());
    if (!privateNamingContextAttr.isEmpty())
    {
      List<Attribute> privateNamingContextAttrs = new ArrayList<Attribute>(1);
      privateNamingContextAttrs.add(privateNamingContextAttr);
      if (showAllAttributes
          || (!privateNamingContextAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(privateNamingContextAttr.getAttributeType(),
            privateNamingContextAttrs);
      }
      else
      {
        dseOperationalAttrs.put(privateNamingContextAttr.getAttributeType(),
            privateNamingContextAttrs);
      }
    }
    addAttribute(privateNamingContextAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedControl" attribute.
    Attribute supportedControlAttr = createAttribute(ATTR_SUPPORTED_CONTROL,
        ATTR_SUPPORTED_CONTROL_LC, DirectoryServer.getSupportedControls());
    if (!supportedControlAttr.isEmpty())
    {
      List<Attribute> supportedControlAttrs = new ArrayList<Attribute>(1);
      supportedControlAttrs.add(supportedControlAttr);
      if (showAllAttributes
          || (!supportedControlAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedControlAttr.getAttributeType(),
            supportedControlAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedControlAttr.getAttributeType(),
            supportedControlAttrs);
      }
    }
    addAttribute(supportedControlAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedExtension" attribute.
    Attribute supportedExtensionAttr = createAttribute(
        ATTR_SUPPORTED_EXTENSION, ATTR_SUPPORTED_EXTENSION_LC, DirectoryServer
            .getSupportedExtensions().keySet());
    if (!supportedExtensionAttr.isEmpty())
    {
      List<Attribute> supportedExtensionAttrs = new ArrayList<Attribute>(1);
      supportedExtensionAttrs.add(supportedExtensionAttr);
      if (showAllAttributes
          || (!supportedExtensionAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedExtensionAttr.getAttributeType(),
            supportedExtensionAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedExtensionAttr.getAttributeType(),
            supportedExtensionAttrs);
      }
    }
    addAttribute(supportedExtensionAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedFeature" attribute.
    Attribute supportedFeatureAttr = createAttribute(ATTR_SUPPORTED_FEATURE,
        ATTR_SUPPORTED_FEATURE_LC, DirectoryServer.getSupportedFeatures());
    if (!supportedFeatureAttr.isEmpty())
    {
      List<Attribute> supportedFeatureAttrs = new ArrayList<Attribute>(1);
      supportedFeatureAttrs.add(supportedFeatureAttr);
      if (showAllAttributes
          || (!supportedFeatureAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedFeatureAttr.getAttributeType(),
            supportedFeatureAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedFeatureAttr.getAttributeType(),
            supportedFeatureAttrs);
      }
    }
    addAttribute(supportedFeatureAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedSASLMechanisms" attribute.
    Attribute supportedSASLMechAttr = createAttribute(
        ATTR_SUPPORTED_SASL_MECHANISMS, ATTR_SUPPORTED_SASL_MECHANISMS_LC,
        DirectoryServer.getSupportedSASLMechanisms().keySet());
    if (!supportedSASLMechAttr.isEmpty())
    {
      List<Attribute> supportedSASLMechAttrs = new ArrayList<Attribute>(1);
      supportedSASLMechAttrs.add(supportedSASLMechAttr);
      if (showAllAttributes
          || (!supportedSASLMechAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedSASLMechAttr.getAttributeType(),
            supportedSASLMechAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedSASLMechAttr.getAttributeType(),
            supportedSASLMechAttrs);
      }
    }
    addAttribute(supportedSASLMechAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedLDAPVersions" attribute.
@@ -674,22 +527,7 @@
         createAttribute(ATTR_SUPPORTED_LDAP_VERSION,
                         ATTR_SUPPORTED_LDAP_VERSION_LC,
                         versionStrings);
    if (!supportedLDAPVersionAttr.isEmpty())
    {
      List<Attribute> supportedLDAPVersionAttrs = new ArrayList<Attribute>(1);
      supportedLDAPVersionAttrs.add(supportedLDAPVersionAttr);
      if (showAllAttributes
          || (!supportedLDAPVersionAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedLDAPVersionAttr.getAttributeType(),
            supportedLDAPVersionAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedLDAPVersionAttr.getAttributeType(),
            supportedLDAPVersionAttrs);
      }
    }
    addAttribute(supportedLDAPVersionAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedAuthPasswordSchemes" attribute.
@@ -703,8 +541,8 @@
      ArrayList<Attribute> supportedAuthPWSchemesAttrs =
           new ArrayList<Attribute>(1);
      supportedAuthPWSchemesAttrs.add(supportedAuthPWSchemesAttr);
      if (showAllAttributes ||
          (! supportedSASLMechAttr.getAttributeType().isOperational()))
      if (showAllAttributes
          || !supportedSASLMechAttr.getAttributeType().isOperational())
      {
        dseUserAttrs.put(supportedAuthPWSchemesAttr.getAttributeType(),
                         supportedAuthPWSchemesAttrs);
@@ -750,62 +588,28 @@
    Attribute supportedTLSProtocolsAttr = createAttribute(
        ATTR_SUPPORTED_TLS_PROTOCOLS, ATTR_SUPPORTED_TLS_PROTOCOLS_LC,
        supportedTlsProtocols);
    if (!supportedTLSProtocolsAttr.isEmpty())
    {
      List<Attribute> supportedTLSProtocolsAttrs = new ArrayList<Attribute>(1);
      supportedTLSProtocolsAttrs.add(supportedTLSProtocolsAttr);
      if (showAllAttributes
          || (!supportedTLSProtocolsAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedTLSProtocolsAttr.getAttributeType(),
            supportedTLSProtocolsAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedTLSProtocolsAttr.getAttributeType(),
            supportedTLSProtocolsAttrs);
      }
    }
    addAttribute(supportedTLSProtocolsAttr, dseUserAttrs, dseOperationalAttrs);
    // Add the "supportedTLSCiphers" attribute.
    Attribute supportedTLSCiphersAttr = createAttribute(
        ATTR_SUPPORTED_TLS_CIPHERS, ATTR_SUPPORTED_TLS_CIPHERS_LC,
        supportedTlsCiphers);
    if (!supportedTLSCiphersAttr.isEmpty())
    {
      List<Attribute> supportedTLSCiphersAttrs = new ArrayList<Attribute>(1);
      supportedTLSCiphersAttrs.add(supportedTLSCiphersAttr);
      if (showAllAttributes
          || (!supportedTLSCiphersAttr.getAttributeType().isOperational()))
      {
        dseUserAttrs.put(supportedTLSCiphersAttr.getAttributeType(),
            supportedTLSCiphersAttrs);
      }
      else
      {
        dseOperationalAttrs.put(supportedTLSCiphersAttr.getAttributeType(),
            supportedTLSCiphersAttrs);
      }
    }
    addAttribute(supportedTLSCiphersAttr, dseUserAttrs, dseOperationalAttrs);
    // Add all the standard "static" attributes.
    for (Attribute a : staticDSEAttributes)
    {
      AttributeType type = a.getAttributeType();
      if (type.isOperational() && (! showAllAttributes))
      if (type.isOperational() && !showAllAttributes)
      {
        List<Attribute> attrs = dseOperationalAttrs.get(type);
        if (attrs == null)
        {
          attrs = new ArrayList<Attribute>();
          attrs.add(a);
          dseOperationalAttrs.put(type, attrs);
        }
        else
        {
          attrs.add(a);
        }
        attrs.add(a);
      }
      else
      {
@@ -813,13 +617,9 @@
        if (attrs == null)
        {
          attrs = new ArrayList<Attribute>();
          attrs.add(a);
          dseUserAttrs.put(type, attrs);
        }
        else
        {
          attrs.add(a);
        }
        attrs.add(a);
      }
    }
@@ -829,19 +629,15 @@
    {
      AttributeType type = a.getAttributeType();
      if (type.isOperational() && (! showAllAttributes))
      if (type.isOperational() && !showAllAttributes)
      {
        List<Attribute> attrs = dseOperationalAttrs.get(type);
        if (attrs == null)
        {
          attrs = new ArrayList<Attribute>();
          attrs.add(a);
          dseOperationalAttrs.put(type, attrs);
        }
        else
        {
          attrs.add(a);
        }
        attrs.add(a);
      }
      else
      {
@@ -849,13 +645,9 @@
        if (attrs == null)
        {
          attrs = new ArrayList<Attribute>();
          attrs.add(a);
          dseUserAttrs.put(type, attrs);
        }
        else
        {
          attrs.add(a);
        }
        attrs.add(a);
      }
    }
@@ -869,6 +661,26 @@
  private void addAttribute(Attribute publicNamingContextAttr,
      HashMap<AttributeType, List<Attribute>> userAttrs,
      HashMap<AttributeType, List<Attribute>> operationalAttrs)
  {
    if (!publicNamingContextAttr.isEmpty())
    {
      List<Attribute> privateNamingContextAttrs = new ArrayList<Attribute>(1);
      privateNamingContextAttrs.add(publicNamingContextAttr);
      final AttributeType attrType = publicNamingContextAttr.getAttributeType();
      if (showAllAttributes || !attrType.isOperational())
      {
        userAttrs.put(attrType, privateNamingContextAttrs);
      }
      else
      {
        operationalAttrs.put(attrType, privateNamingContextAttrs);
      }
    }
  }
  /**
   * Determines the workflow nodes which handle subordinate naming contexts.
   * A workflow node is handling a subordinate naming context if the workflow
@@ -908,26 +720,6 @@
  }
  /**
   * }
   * Creates an attribute for the root DSE with the following criteria.
   *
   * @param  name       The name for the attribute.
   * @param  lowerName  The name for the attribute formatted in all lowercase
   *                    characters.
   * @param  value      The value to use for the attribute.
   *
   * @return  The constructed attribute.
   */
  private Attribute createAttribute(String name, String lowerName,
                                    String value)
  {
    return Attributes.create(name, value);
  }
  /**
   * Creates an attribute for the root DSE meant to hold a set of DNs.
   *
@@ -986,12 +778,8 @@
    return builder.toAttribute();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean entryExists(DN entryDN)
         throws DirectoryException
  {
@@ -1030,38 +818,26 @@
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_ROOTDSE_ADD_NOT_SUPPORTED.get(entry.getName()));
        ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_ROOTDSE_DELETE_NOT_SUPPORTED.get(entryDN));
        ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -1069,26 +845,18 @@
        ERR_ROOTDSE_MODIFY_NOT_SUPPORTED.get(newEntry.getName(), configEntryDN));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                                   ModifyDNOperation modifyDNOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED.get(currentDN));
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException, CanceledOperationException {
    DN baseDN = searchOperation.getBaseDN();
@@ -1130,7 +898,7 @@
          Backend b = entry.getValue();
          Entry subBaseEntry = b.getEntry(subBase);
          if ((subBaseEntry != null) && filter.matchesEntry(subBaseEntry))
          if (subBaseEntry != null && filter.matchesEntry(subBaseEntry))
          {
            searchOperation.returnEntry(subBaseEntry, null);
          }
@@ -1208,46 +976,30 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // We will only export the DSE entry itself.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -1285,141 +1037,85 @@
    }
    finally
    {
      try
      {
        ldifWriter.close();
      }
      catch (Exception e)
      {
        logger.traceException(e);
      }
      close(ldifWriter);
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    // This backend does not support LDIF imports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
    // This backend does not support LDIF imports.
    LocalizableMessage message = ERR_ROOTDSE_IMPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public boolean isConfigurationAcceptable(Configuration configuration,
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationAcceptable(RootDSEBackendCfg config,
                                           List<LocalizableMessage> unacceptableReasons)
  {
    RootDSEBackendCfg config = (RootDSEBackendCfg) configuration;
    return isConfigurationChangeAcceptable(config, unacceptableReasons);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
       RootDSEBackendCfg cfg,
@@ -1461,11 +1157,7 @@
    return configIsAcceptable;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(RootDSEBackendCfg cfg)
  {
@@ -1572,8 +1264,7 @@
      if (subordinateBaseDNs == null)
      {
        LocalizableMessage message = INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get();
        messages.add(message);
        messages.add(INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get());
      }
      else
      {
@@ -1608,14 +1299,9 @@
    return new ConfigChangeResult(resultCode, adminActionRequired, messages);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
  }
}
opendj3-server-dev/src/server/org/opends/server/backends/SchemaBackend.java
@@ -36,6 +36,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -62,8 +63,6 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.opendj.ldap.schema.ObjectClassType;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.SchemaBackendCfg;
import org.opends.server.api.AlertGenerator;
@@ -107,8 +106,7 @@
 * It is a kind of meta-backend in that it doesn't actually hold any data but
 * rather dynamically generates the schema entry whenever it is requested.
 */
public class SchemaBackend
     extends Backend
public class SchemaBackend extends Backend<SchemaBackendCfg>
     implements ConfigurationChangeListener<SchemaBackendCfg>, AlertGenerator
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -228,12 +226,6 @@
  /** The set of objectclasses that will be used in the schema entry. */
  private HashMap<ObjectClass,String> schemaObjectClasses;
  /** The set of supported controls for this backend. */
  private Set<String> supportedControls;
  /** The set of supported features for this backend. */
  private Set<String> supportedFeatures;
  /** The time that the schema was last modified. */
  private long modifyTime;
@@ -257,25 +249,18 @@
    // Perform all initialization in initializeBackend.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config)
       throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(SchemaBackendCfg cfg) throws ConfigException
  {
    // Make sure that a configuration entry was provided.  If not, then we will
    // not be able to complete initialization.
    if (config == null)
    if (cfg == null)
    {
      LocalizableMessage message = ERR_SCHEMA_CONFIG_ENTRY_NULL.get();
      throw new ConfigException(message);
    }
    Reject.ifFalse(config instanceof SchemaBackendCfg);
    SchemaBackendCfg cfg = (SchemaBackendCfg)config;
    ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn());
    configEntryDN = configEntry.getDN();
@@ -320,11 +305,6 @@
    schemaObjectClasses.put(subschemaOC, OC_SUBSCHEMA);
    // Define empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    configEntryDN = configEntry.getDN();
    DN[] newBaseDNs = new DN[cfg.getBaseDN().size()];
@@ -379,12 +359,8 @@
    currentConfig = cfg;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -447,8 +423,7 @@
        {
          String runningUnitTestsStr =
               System.getProperty(PROPERTY_RUNNING_UNIT_TESTS);
          if ((runningUnitTestsStr != null) &&
              runningUnitTestsStr.equalsIgnoreCase("true"))
          if ("true".equalsIgnoreCase(runningUnitTestsStr))
          {
            Schema.writeConcatenatedSchema();
            concatFile = new File(upgradeDirectory, SCHEMA_CONCAT_FILE_NAME);
@@ -516,12 +491,8 @@
    currentConfig.addSchemaChangeListener(this);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    currentConfig.removeSchemaChangeListener(this);
@@ -568,83 +539,55 @@
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    // There is always only a single entry in this backend.
    return 1;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
    return ConditionResult.FALSE;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
         throws DirectoryException
  {
    return 0L;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  {
@@ -863,11 +806,10 @@
      builder.add(value);
    }
    ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
    Attribute attribute = builder.toAttribute();
    attrList.add(attribute);
    ArrayList<Attribute> attrList = newArrayList(attribute);
    if (attribute.getAttributeType().isOperational()
        && (ignoreShowAllOption || (!showAllAttributes)))
        && (ignoreShowAllOption || !showAllAttributes))
    {
      operationalAttrs.put(attribute.getAttributeType(), attrList);
    }
@@ -877,12 +819,15 @@
    }
  }
  private ArrayList<Attribute> newArrayList(Attribute a)
  {
    ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
    attrList.add(a);
    return attrList;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean entryExists(DN entryDN)
         throws DirectoryException
  {
@@ -899,38 +844,26 @@
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_SCHEMA_ADD_NOT_SUPPORTED.get(entry.getName()));
        ERR_BACKEND_ADD_NOT_SUPPORTED.get(entry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_SCHEMA_DELETE_NOT_SUPPORTED.get(entryDN));
        ERR_BACKEND_DELETE_NOT_SUPPORTED.get(entryDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -1312,25 +1245,22 @@
        case REPLACE:
          if ((!m.isInternal()) &&
              (!modifyOperation.isSynchronizationOperation()))
          if (!m.isInternal()
              && !modifyOperation.isSynchronizationOperation())
          {
            throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
                ERR_SCHEMA_INVALID_MODIFICATION_TYPE.get(m.getModificationType()));
          }
          else  if (SchemaConfigManager.isSchemaAttribute(a))
          {
            logger.error(ERR_SCHEMA_INVALID_REPLACE_MODIFICATION, a.getNameWithOptions());
          }
          else
          {
            // If this is not a Schema attribute, we put it
            // in the extraAttribute map. This in fact acts as a replace.
            if (SchemaConfigManager.isSchemaAttribute(a))
            {
              logger.error(ERR_SCHEMA_INVALID_REPLACE_MODIFICATION, a.getNameWithOptions());
            }
            else
            {
              newSchema.addExtraAttribute(at.getNameOrOID(), a);
              modifiedSchemaFiles.add(FILE_USER_SCHEMA_ELEMENTS);
            }
            newSchema.addExtraAttribute(at.getNameOrOID(), a);
            modifiedSchemaFiles.add(FILE_USER_SCHEMA_ELEMENTS);
          }
          break;
@@ -1493,7 +1423,7 @@
    // Make sure that none of the associated matching rules are marked OBSOLETE.
    MatchingRule mr = attributeType.getEqualityMatchingRule();
    if ((mr != null) && mr.isObsolete())
    if (mr != null && mr.isObsolete())
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
          attributeType.getNameOrOID(), mr.getNameOrOID());
@@ -1501,7 +1431,7 @@
    }
    mr = attributeType.getOrderingMatchingRule();
    if ((mr != null) && mr.isObsolete())
    if (mr != null && mr.isObsolete())
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
          attributeType.getNameOrOID(), mr.getNameOrOID());
@@ -1509,7 +1439,7 @@
    }
    mr = attributeType.getSubstringMatchingRule();
    if ((mr != null) && mr.isObsolete())
    if (mr != null && mr.isObsolete())
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
          attributeType.getNameOrOID(), mr.getNameOrOID());
@@ -1517,7 +1447,7 @@
    }
    mr = attributeType.getApproximateMatchingRule();
    if ((mr != null) && mr.isObsolete())
    if (mr != null && mr.isObsolete())
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get(
          attributeType.getNameOrOID(), mr.getNameOrOID());
@@ -1548,7 +1478,7 @@
      SchemaFileElement elem)
  {
    String schemaFile = getSchemaFile(elem);
    if ((schemaFile == null) || (schemaFile.length() == 0))
    if (schemaFile == null || schemaFile.length() == 0)
    {
      schemaFile = FILE_USER_SCHEMA_ELEMENTS;
      setSchemaFile(elem, schemaFile);
@@ -1574,17 +1504,14 @@
      setSchemaFile(newElem, oldSchemaFile);
      modifiedSchemaFiles.add(oldSchemaFile);
    }
    else if (oldSchemaFile == null || oldSchemaFile.equals(newSchemaFile))
    {
      modifiedSchemaFiles.add(newSchemaFile);
    }
    else
    {
      if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile))
      {
        modifiedSchemaFiles.add(newSchemaFile);
      }
      else
      {
        modifiedSchemaFiles.add(newSchemaFile);
        modifiedSchemaFiles.add(oldSchemaFile);
      }
      modifiedSchemaFiles.add(newSchemaFile);
      modifiedSchemaFiles.add(oldSchemaFile);
    }
  }
@@ -1626,7 +1553,7 @@
    // See if the specified attribute type is actually defined in the server
    // schema.  If not, then fail.
    AttributeType removeType = schema.getAttributeType(attributeType.getOID());
    if ((removeType == null) || (! removeType.equals(attributeType)))
    if (removeType == null || !removeType.equals(attributeType))
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_ATTRIBUTE_TYPE.get(
          attributeType.getNameOrOID());
@@ -1642,8 +1569,8 @@
      Modification m = modifications.get(i);
      Attribute    a = m.getAttribute();
      if ((m.getModificationType() != ModificationType.ADD) ||
          (! a.getAttributeType().equals(attributeTypesType)))
      if (m.getModificationType() != ModificationType.ADD
          || !a.getAttributeType().equals(attributeTypesType))
      {
        continue;
      }
@@ -1680,7 +1607,7 @@
    for (AttributeType at : schema.getAttributeTypes().values())
    {
      AttributeType superiorType = at.getSuperiorType();
      if ((superiorType != null) && superiorType.equals(removeType))
      if (superiorType != null && superiorType.equals(removeType))
      {
        LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_AT_SUPERIOR_TYPE.get(
            removeType.getNameOrOID(), superiorType.getNameOrOID());
@@ -1920,7 +1847,7 @@
    // See if the specified objectclass is actually defined in the server
    // schema.  If not, then fail.
    ObjectClass removeClass = schema.getObjectClass(objectClass.getOID());
    if ((removeClass == null) || (! removeClass.equals(objectClass)))
    if (removeClass == null || !removeClass.equals(objectClass))
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_OBJECTCLASS.get(
          objectClass.getNameOrOID());
@@ -1936,8 +1863,8 @@
      Modification m = modifications.get(i);
      Attribute    a = m.getAttribute();
      if ((m.getModificationType() != ModificationType.ADD) ||
          (! a.getAttributeType().equals(objectClassesType)))
      if (m.getModificationType() != ModificationType.ADD ||
          !a.getAttributeType().equals(objectClassesType))
      {
        continue;
      }
@@ -2188,7 +2115,7 @@
    // See if the specified name form is actually defined in the server schema.
    // If not, then fail.
    NameForm removeNF = schema.getNameForm(nameForm.getOID());
    if ((removeNF == null) || (! removeNF.equals(nameForm)))
    if (removeNF == null || !removeNF.equals(nameForm))
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_NAME_FORM.get(
          nameForm.getNameOrOID());
@@ -2204,8 +2131,8 @@
      Modification m = modifications.get(i);
      Attribute    a = m.getAttribute();
      if ((m.getModificationType() != ModificationType.ADD) ||
          (! a.getAttributeType().equals(nameFormsType)))
      if (m.getModificationType() != ModificationType.ADD ||
          !a.getAttributeType().equals(nameFormsType))
      {
        continue;
      }
@@ -2316,7 +2243,7 @@
    ObjectClass structuralClass = ditContentRule.getStructuralClass();
    DITContentRule existingRuleForClass =
         schema.getDITContentRule(structuralClass);
    if ((existingRuleForClass != null) && (existingRuleForClass != existingDCR))
    if (existingRuleForClass != null && existingRuleForClass != existingDCR)
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_STRUCTURAL_OC_CONFLICT_FOR_ADD_DCR.
          get(ditContentRule.getNameOrOID(), structuralClass.getNameOrOID(),
@@ -2468,7 +2395,7 @@
    // schema.  If not, then fail.
    DITContentRule removeDCR =
         schema.getDITContentRule(ditContentRule.getStructuralClass());
    if ((removeDCR == null) || (! removeDCR.equals(ditContentRule)))
    if (removeDCR == null || !removeDCR.equals(ditContentRule))
    {
      LocalizableMessage message =
          ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_DCR.get(ditContentRule.getNameOrOID());
@@ -2528,7 +2455,7 @@
        {
          // We really do want to use the "!=" operator here because it's
          // acceptable if we find match for the same object instance.
          if ((existingDSR != null) && (existingDSR != dsr))
          if (existingDSR != null && existingDSR != dsr)
          {
            LocalizableMessage message = ERR_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_DSR.
                get(ditStructureRule.getNameOrRuleID(),
@@ -2562,8 +2489,8 @@
    NameForm nameForm = ditStructureRule.getNameForm();
    DITStructureRule existingRuleForNameForm =
         schema.getDITStructureRule(nameForm);
    if ((existingRuleForNameForm != null) &&
        (existingRuleForNameForm != existingDSR))
    if (existingRuleForNameForm != null &&
        existingRuleForNameForm != existingDSR)
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_NAME_FORM_CONFLICT_FOR_ADD_DSR.
          get(ditStructureRule.getNameOrRuleID(), nameForm.getNameOrOID(),
@@ -2657,7 +2584,7 @@
    // schema.  If not, then fail.
    DITStructureRule removeDSR =
         schema.getDITStructureRule(ditStructureRule.getRuleID());
    if ((removeDSR == null) || (! removeDSR.equals(ditStructureRule)))
    if (removeDSR == null || !removeDSR.equals(ditStructureRule))
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_DSR.get(
          ditStructureRule.getNameOrRuleID());
@@ -2673,8 +2600,8 @@
      Modification m = modifications.get(i);
      Attribute    a = m.getAttribute();
      if ((m.getModificationType() != ModificationType.ADD) ||
          (! a.getAttributeType().equals(ditStructureRulesType)))
      if (m.getModificationType() != ModificationType.ADD ||
          !a.getAttributeType().equals(ditStructureRulesType))
      {
        continue;
      }
@@ -2792,7 +2719,7 @@
    MatchingRule matchingRule = matchingRuleUse.getMatchingRule();
    MatchingRuleUse existingMRUForRule =
         schema.getMatchingRuleUse(matchingRule);
    if ((existingMRUForRule != null) && (existingMRUForRule != existingMRU))
    if (existingMRUForRule != null && existingMRUForRule != existingMRU)
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_MR_CONFLICT_FOR_ADD_MR_USE.
          get(matchingRuleUse.getNameOrOID(), matchingRule.getNameOrOID(),
@@ -2877,7 +2804,7 @@
    // schema.  If not, then fail.
    MatchingRuleUse removeMRU =
         schema.getMatchingRuleUse(matchingRuleUse.getMatchingRule());
    if ((removeMRU == null) || (! removeMRU.equals(matchingRuleUse)))
    if (removeMRU == null || !removeMRU.equals(matchingRuleUse))
    {
      LocalizableMessage message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_MR_USE.get(
          matchingRuleUse.getNameOrOID());
@@ -2956,7 +2883,7 @@
  //Gets rid of the ldap syntax description.
  /** Gets rid of the ldap syntax description. */
  private void removeLdapSyntaxDescription(LDAPSyntaxDescription ldapSyntaxDesc,
                                    Schema schema,
                                    Set<String> modifiedSchemaFiles)
@@ -2969,7 +2896,7 @@
    String oid = ldapSyntaxDesc.getLdapSyntaxDescriptionSyntax().getOID();
    LDAPSyntaxDescription removeLSD = schema.getLdapSyntaxDescription(oid);
    if ((removeLSD == null) || (! removeLSD.equals(ldapSyntaxDesc)))
    if (removeLSD == null || !removeLSD.equals(ldapSyntaxDesc))
    {
      LocalizableMessage message =
          ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_LSD.get(oid);
@@ -3071,11 +2998,9 @@
   if (! values.isEmpty())
   {
     ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
     AttributeBuilder builder = new AttributeBuilder(ldapSyntaxesType);
     builder.addAll(values);
     attrList.add(builder.toAttribute());
     schemaEntry.putAttribute(ldapSyntaxesType, attrList);
     schemaEntry.putAttribute(ldapSyntaxesType, newArrayList(builder.toAttribute()));
   }
    // Add all of the appropriate attribute types to the schema entry.  We need
@@ -3093,11 +3018,9 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(attributeTypesType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(attributeTypesType, attrList);
      schemaEntry.putAttribute(attributeTypesType, newArrayList(builder.toAttribute()));
    }
@@ -3117,11 +3040,9 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(objectClassesType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(objectClassesType, attrList);
      schemaEntry.putAttribute(objectClassesType, newArrayList(builder.toAttribute()));
    }
@@ -3142,11 +3063,9 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(nameFormsType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(nameFormsType, attrList);
      schemaEntry.putAttribute(nameFormsType, newArrayList(builder.toAttribute()));
    }
@@ -3164,11 +3083,9 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(ditContentRulesType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(ditContentRulesType, attrList);
      schemaEntry.putAttribute(ditContentRulesType, newArrayList(builder.toAttribute()));
    }
@@ -3188,11 +3105,9 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(ditStructureRulesType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(ditStructureRulesType, attrList);
      schemaEntry.putAttribute(ditStructureRulesType, newArrayList(builder.toAttribute()));
    }
@@ -3210,21 +3125,18 @@
    if (! values.isEmpty())
    {
      ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
      AttributeBuilder builder = new AttributeBuilder(matchingRuleUsesType);
      builder.addAll(values);
      attrList.add(builder.toAttribute());
      schemaEntry.putAttribute(matchingRuleUsesType, attrList);
      schemaEntry.putAttribute(matchingRuleUsesType, newArrayList(builder.toAttribute()));
    }
    if (schemaFile.equals(FILE_USER_SCHEMA_ELEMENTS))
    if (FILE_USER_SCHEMA_ELEMENTS.equals(schemaFile))
    {
      Map<String, Attribute> attributes = schema.getExtraAttributes();
      for (Attribute attribute : attributes.values())
      {
        ArrayList<Attribute> attrList = new ArrayList<Attribute>(1);
        attrList.add(attribute);
        ArrayList<Attribute> attrList = newArrayList(attribute);
        schemaEntry.putAttribute(attribute.getAttributeType(), attrList);
      }
    }
@@ -3279,9 +3191,9 @@
    }
    AttributeType superiorType = attributeType.getSuperiorType();
    if ((superiorType != null) &&
    if (superiorType != null &&
        schemaFile.equals(getSchemaFile(superiorType)) &&
        (! addedTypes.contains(superiorType)))
        !addedTypes.contains(superiorType))
    {
      addAttrTypeToSchemaFile(schema, schemaFile, superiorType, values,
                              addedTypes, depth+1);
@@ -3331,7 +3243,7 @@
    for(ObjectClass superiorClass : objectClass.getSuperiorClasses())
    {
      if (schemaFile.equals(getSchemaFile(superiorClass)) &&
          (! addedClasses.contains(superiorClass)))
          !addedClasses.contains(superiorClass))
      {
        addObjectClassToSchemaFile(schema, schemaFile, superiorClass, values,
                                   addedClasses, depth+1);
@@ -3380,7 +3292,7 @@
    for (DITStructureRule dsr : ditStructureRule.getSuperiorRules())
    {
      if (schemaFile.equals(getSchemaFile(dsr)) && (! addedDSRs.contains(dsr)))
      if (schemaFile.equals(getSchemaFile(dsr)) && !addedDSRs.contains(dsr))
      {
        addDITStructureRuleToSchemaFile(schema, schemaFile, dsr, values,
                                        addedDSRs, depth+1);
@@ -3459,12 +3371,9 @@
      {
        try
        {
          if (f.exists())
          if (f.exists() && !f.delete())
          {
            if (! f.delete())
            {
              allCleaned = false;
            }
            allCleaned = false;
          }
        }
        catch (Exception e2)
@@ -3522,12 +3431,9 @@
        try
        {
          if (origFile.exists())
          if (origFile.exists() && !origFile.renameTo(installedFile))
          {
            if (! origFile.renameTo(installedFile))
            {
              allRestored = false;
            }
            allRestored = false;
          }
        }
        catch (Exception e2)
@@ -3632,26 +3538,18 @@
    deleteFiles(tempSchemaFiles.values());
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                                   ModifyDNOperation modifyDNOperation)
         throws DirectoryException
  {
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED.get(currentDN));
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -3685,8 +3583,8 @@
    // 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();
    if ((scope == SearchScope.SINGLE_LEVEL) ||
        (scope == SearchScope.SUBORDINATES))
    if (scope == SearchScope.SINGLE_LEVEL ||
        scope == SearchScope.SUBORDINATES)
    {
      return;
    }
@@ -3702,46 +3600,30 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // We will only export the DSE entry itself.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -3783,23 +3665,15 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
@@ -3916,7 +3790,7 @@
    // and add them in the existing schema.
    List<Attribute> attrList = newSchemaEntry.getAttribute(attributeAttrType);
    Set<String> oidList = new HashSet<String>(1000);
    if ((attrList != null) && (! attrList.isEmpty()))
    if (attrList != null && !attrList.isEmpty())
    {
      for (Attribute a : attrList)
      {
@@ -3927,8 +3801,7 @@
          // Parse the attribute type.
          AttributeType attrType = AttributeTypeSyntax.decodeAttributeType(v, schema, false);
          String schemaFile = getSchemaFile(attrType);
          if ((schemaFile != null) &&
              (schemaFile.equals(CONFIG_SCHEMA_ELEMENTS_FILE)))
          if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
          {
            // Don't import the file containing the definitions of the
            // Schema elements used for configuration because these
@@ -3943,8 +3816,8 @@
            // unless it is already defined with the same syntax.
            AttributeType oldAttrType =
              schema.getAttributeType(attrType.getOID());
            if ((oldAttrType == null) ||
                (!oldAttrType.toString().equals(attrType.toString())))
            if (oldAttrType == null ||
                !oldAttrType.toString().equals(attrType.toString()))
            {
              newSchema.registerAttributeType(attrType, true);
@@ -3974,9 +3847,8 @@
    for (AttributeType removeType : currentAttrTypes.values())
    {
      String schemaFile = getSchemaFile(removeType);
      if ((schemaFile != null) &&
           ((schemaFile.equals(CONFIG_SCHEMA_ELEMENTS_FILE)) ||
            (schemaFile.equals(CORE_SCHEMA_ELEMENTS_FILE))) )
      if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile)
          || CORE_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
      {
        // Don't import the file containing the definitions of the
        // Schema elements used for configuration because these
@@ -4024,7 +3896,7 @@
    oidList.clear();
    List<Attribute> ocList = newSchemaEntry.getAttribute(objectclassAttrType);
    if ((ocList != null) && (! ocList.isEmpty()))
    if (ocList != null && !ocList.isEmpty())
    {
      for (Attribute a : ocList)
      {
@@ -4034,8 +3906,7 @@
          // appear in the new config schema.
          ObjectClass newObjectClass = ObjectClassSyntax.decodeObjectClass(v, newSchema, true);
          String schemaFile = getSchemaFile(newObjectClass);
          if ((schemaFile != null) &&
              (schemaFile.equals(CONFIG_SCHEMA_ELEMENTS_FILE)))
          if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
          {
            // Don't import the file containing the definitions of the
            // Schema elements used for configuration because these
@@ -4054,8 +3925,8 @@
            // unless it is already defined with the same syntax.
            ObjectClass oldObjectClass =
              schema.getObjectClass(newObjectClass.getOID());
            if ((oldObjectClass == null) ||
                (!oldObjectClass.toString().equals(newObjectClass.toString())))
            if (oldObjectClass == null ||
                !oldObjectClass.toString().equals(newObjectClass.toString()))
            {
              newSchema.registerObjectClass(newObjectClass, true);
@@ -4085,8 +3956,7 @@
    for (ObjectClass removeClass : currentObjectClasses.values())
    {
      String schemaFile = getSchemaFile(removeClass);
      if ((schemaFile != null) &&
          (schemaFile.equals(CONFIG_SCHEMA_ELEMENTS_FILE)))
      if (CONFIG_SCHEMA_ELEMENTS_FILE.equals(schemaFile))
      {
        // Don't import the file containing the definition of the
        // Schema elements used for configuration because these
@@ -4113,24 +3983,16 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // We do support an online backup mechanism for the schema.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
@@ -4141,12 +4003,8 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -4495,12 +4353,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
@@ -4549,24 +4403,16 @@
    archiveFile.delete();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // We will provide a restore, but only for offline operations.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -4859,7 +4705,7 @@
      // If we're doing the restore, then create the output stream to write the
      // file.
      OutputStream outputStream = null;
      if ((! verifyOnly) && restoreIt)
      if (!verifyOnly && restoreIt)
      {
        String filePath = baseDirPath + File.separator + fileName;
        try
@@ -5021,11 +4867,7 @@
    logger.info(NOTE_SCHEMA_RESTORE_SUCCESSFUL, backupID, backupPath);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
       SchemaBackendCfg configEntry,
@@ -5034,11 +4876,7 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(
       SchemaBackendCfg backendCfg)
@@ -5209,33 +5047,21 @@
    this.showAllAttributes = showAllAttributes;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public DN getComponentEntryDN()
  {
    return configEntryDN;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public String getClassName()
  {
    return CLASS_NAME;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public Map<String, String> getAlerts()
  {
@@ -5249,11 +5075,7 @@
    return alerts;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/backends/TrustStoreBackend.java
@@ -40,12 +40,13 @@
import java.security.KeyStoreException;
import java.security.cert.Certificate;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Random;
import java.util.SortedSet;
import java.util.Set;
import javax.naming.ldap.Rdn;
import javax.net.ssl.KeyManager;
@@ -59,7 +60,6 @@
import org.forgerock.opendj.ldap.ConditionResult;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.TrustStoreBackendCfg;
import org.opends.server.api.Backend;
@@ -85,42 +85,35 @@
 * This class defines a backend used to provide an LDAP view of public keys
 * stored in a key store.
 */
public class TrustStoreBackend
     extends Backend
public class TrustStoreBackend extends Backend<TrustStoreBackendCfg>
       implements ConfigurationChangeListener<TrustStoreBackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The current configuration state.
  /** The current configuration state. */
  private TrustStoreBackendCfg configuration;
  // The DN for the base entry.
  /** The DN for the base entry. */
  private DN baseDN;
  // The set of base DNs for this backend.
  /** The set of base DNs for this backend. */
  private DN[] baseDNs;
  // The base entry.
  /** The base entry. */
  private Entry baseEntry;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  // The PIN needed to access the trust store backing file.
  /** The PIN needed to access the trust store backing file. */
  private char[] trustStorePIN;
  // The path to the trust store backing file.
  /** The path to the trust store backing file. */
  private String trustStoreFile;
  // The type of trust store backing file to use.
  /** The type of trust store backing file to use. */
  private String trustStoreType;
  // The certificate manager for the trust store.
  /** The certificate manager for the trust store. */
  private CertificateManager certificateManager;
@@ -137,26 +130,16 @@
    // Perform all initialization in initializeBackend.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config) throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(TrustStoreBackendCfg config) throws ConfigException
  {
    Reject.ifNull(config);
    Reject.ifFalse(config instanceof TrustStoreBackendCfg);
    configuration = (TrustStoreBackendCfg)config;
    configuration = config;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -264,12 +247,7 @@
            }
            finally
            {
              try
              {
                br.close();
              } catch (Exception e) {
                // ignore
              }
              close(br);
            }
            if (pinStr == null)
@@ -348,11 +326,6 @@
                                opAttrs);
    // Define empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    // Register this as a change listener.
    configuration.addTrustStoreChangeListener(this);
@@ -369,12 +342,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    configuration.addTrustStoreChangeListener(this);
@@ -389,23 +358,15 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    int numEntries = 1;
@@ -426,45 +387,31 @@
    return numEntries;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN) throws DirectoryException
  {
    // If the requested entry was null, then throw an exception.
    if (entryDN == null)
    {
      LocalizableMessage message = ERR_TRUSTSTORE_GET_ENTRY_NULL.get();
      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                   message);
          ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID()));
    }
@@ -478,11 +425,7 @@
    // 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 = entryDN.getParentDNInSuffix();
    if (parentDN == null)
    {
      return null;
    }
    else if (parentDN.equals(baseDN))
    if (parentDN != null && parentDN.equals(baseDN))
    {
      try
      {
@@ -490,13 +433,10 @@
      }
      catch (DirectoryException e)
      {
        return null;
        logger.traceException(e);
      }
    }
    else
    {
      return null;
    }
    return null;
  }
@@ -582,12 +522,8 @@
    return e;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
@@ -617,12 +553,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
@@ -642,39 +574,27 @@
    deleteCertificate(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
    LocalizableMessage message = ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_MODIFY_NOT_SUPPORTED.get(oldEntry.getName(), getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                          ModifyDNOperation modifyDNOperation)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -690,13 +610,10 @@
    SearchFilter filter = searchOperation.getFilter();
    if (this.baseDN.equals(baseDN))
    {
      if ((scope == SearchScope.BASE_OBJECT) ||
          (scope == SearchScope.WHOLE_SUBTREE))
      if ((scope == SearchScope.BASE_OBJECT || scope == SearchScope.WHOLE_SUBTREE)
          && filter.matchesEntry(baseEntry))
      {
        if (filter.matchesEntry(baseEntry))
        {
          searchOperation.returnEntry(baseEntry, null);
        }
        searchOperation.returnEntry(baseEntry, null);
      }
      String[] aliases = null;
@@ -714,7 +631,7 @@
        aliases = new String[0];
      }
      if ((scope != SearchScope.BASE_OBJECT) && (! (aliases.length == 0) ))
      if (scope != SearchScope.BASE_OBJECT && aliases.length != 0)
      {
        AttributeType certAliasType =
             DirectoryServer.getAttributeType(ATTR_CRYPTO_KEY_ID, true);
@@ -745,13 +662,10 @@
    {
      Entry certEntry = getCertEntry(baseDN);
      if ((scope == SearchScope.BASE_OBJECT) ||
          (scope == SearchScope.WHOLE_SUBTREE))
      if ((scope == SearchScope.BASE_OBJECT || scope == SearchScope.WHOLE_SUBTREE)
          && filter.matchesEntry(certEntry))
      {
        if (filter.matchesEntry(certEntry))
        {
          searchOperation.returnEntry(certEntry, null);
        }
        searchOperation.returnEntry(certEntry, null);
      }
    }
    else
@@ -761,165 +675,104 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // We do not support LDIF exports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    // This backend does not support LDIF imports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
    // This backend does not support LDIF imports.
    LocalizableMessage message = ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
       throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does not provide a backup/restore mechanism.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
    // This backend does not provide a backup/restore mechanism.
    LocalizableMessage message = ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
      throws DirectoryException
  {
@@ -927,12 +780,8 @@
        ERR_HAS_SUBORDINATES_NOT_SUPPORTED.get());
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
      throws DirectoryException
  {
@@ -940,11 +789,7 @@
        ERR_NUM_SUBORDINATES_NOT_SUPPORTED.get());
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(
       TrustStoreBackendCfg configuration, List<LocalizableMessage> unacceptableReasons)
@@ -995,26 +840,20 @@
    // If there is a PIN property, then make sure the corresponding
    // property is set.
    String pinProp = configuration.getTrustStorePinProperty();
    if (pinProp != null)
    if (pinProp != null && System.getProperty(pinProp) == null)
    {
      if (System.getProperty(pinProp) == null)
      {
        unacceptableReasons.add(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProp, cfgEntryDN));
        configAcceptable = false;
      }
      unacceptableReasons.add(ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get(pinProp, cfgEntryDN));
      configAcceptable = false;
    }
    // If there is a PIN environment variable, then make sure the corresponding
    // environment variable is set.
    String pinEnVar = configuration.getTrustStorePinEnvironmentVariable();
    if (pinEnVar != null)
    if (pinEnVar != null && System.getenv(pinEnVar) == null)
    {
      if (System.getenv(pinEnVar) == null)
      {
        unacceptableReasons.add(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinEnVar, cfgEntryDN));
        configAcceptable = false;
      }
      unacceptableReasons.add(ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get(pinEnVar, cfgEntryDN));
      configAcceptable = false;
    }
@@ -1041,12 +880,7 @@
        }
        finally
        {
          try
          {
            br.close();
          } catch (Exception e) {
            // ignore
          }
          close(br);
        }
        if (pinStr == null)
@@ -1061,11 +895,7 @@
    return configAcceptable;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(TrustStoreBackendCfg cfg)
  {
@@ -1173,12 +1003,7 @@
            }
            finally
            {
              try
              {
                br.close();
              } catch (Exception e) {
                // ignore
              }
              close(br);
            }
            if (pinStr == null)
@@ -1356,14 +1181,7 @@
      TrustManagerFactory trustManagerFactory =
           TrustManagerFactory.getInstance(trustManagerAlgorithm);
      trustManagerFactory.init(trustStore);
      TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
//    TrustManager[] newTrustManagers = new TrustManager[trustManagers.length];
//    for (int i=0; i < trustManagers.length; i++)
//    {
//      newTrustManagers[i] = new ExpirationCheckTrustManager(
//                                     (X509TrustManager) trustManagers[i]);
//    }
      return trustManagers;
      return trustManagerFactory.getTrustManagers();
    }
    catch (Exception e)
    {
@@ -1645,7 +1463,7 @@
      d = next % 10;
      if (d < 0)
      {
        d = d * (-1);
        d = d * -1;
      }
      generatedChar = (char) (d+48);
      break;
@@ -1654,16 +1472,16 @@
      d = next % 26;
      if (d < 0)
      {
        d = d * (-1);
        d = d * -1;
      }
      generatedChar =  (char) (d + 97);
      break;
    default:
      // Will return a capital letter
      d = (next % 26);
      d = next % 26;
      if (d < 0)
      {
        d = d * (-1);
        d = d * -1;
      }
      generatedChar = (char) (d + 65) ;
    }
@@ -1673,7 +1491,7 @@
  private static int getRandomInt(Random random,int modulo)
  {
    return (random.nextInt() & modulo);
    return random.nextInt() & modulo;
  }
  /**
@@ -1748,11 +1566,7 @@
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -40,9 +40,10 @@
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.ResultCode;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.meta.LocalDBIndexCfgDefn;
import org.opends.server.admin.std.server.LocalDBBackendCfg;
@@ -51,11 +52,9 @@
import org.opends.server.api.DiskSpaceMonitorHandler;
import org.opends.server.api.MonitorProvider;
import org.opends.server.backends.jeb.importLDIF.Importer;
import org.forgerock.opendj.config.server.ConfigException;
import org.opends.server.core.*;
import org.opends.server.extensions.DiskSpaceMonitor;
import org.opends.server.types.*;
import org.forgerock.opendj.ldap.ResultCode;
import org.opends.server.util.RuntimeInformation;
import com.sleepycat.je.DatabaseException;
@@ -74,8 +73,7 @@
 * This is an implementation of a Directory Server Backend which stores entries
 * locally in a Berkeley DB JE database.
 */
public class BackendImpl
    extends Backend
public class BackendImpl extends Backend<LocalDBBackendCfg>
    implements ConfigurationChangeListener<LocalDBBackendCfg>, AlertGenerator,
    DiskSpaceMonitorHandler
{
@@ -120,23 +118,12 @@
  /**
   * The controls supported by this backend.
   */
  private static HashSet<String> supportedControls;
  static
  {
    // Set our supported controls.
    supportedControls = new HashSet<String>();
    supportedControls.add(OID_SUBTREE_DELETE_CONTROL);
    supportedControls.add(OID_PAGED_RESULTS_CONTROL);
    supportedControls.add(OID_MANAGE_DSAIT_CONTROL);
    supportedControls.add(OID_SERVER_SIDE_SORT_REQUEST_CONTROL);
    supportedControls.add(OID_VLV_REQUEST_CONTROL);
  }
  /**
   * The features supported by this backend.
   */
  private static HashSet<String> supportedFeatures = new HashSet<String>();
  private static final Set<String> supportedControls = new HashSet<String>(Arrays.asList(
      OID_SUBTREE_DELETE_CONTROL,
      OID_PAGED_RESULTS_CONTROL,
      OID_MANAGE_DSAIT_CONTROL,
      OID_SERVER_SIDE_SORT_REQUEST_CONTROL,
      OID_VLV_REQUEST_CONTROL));
  /**
   * Begin a Backend API method that reads the database.
@@ -247,21 +234,16 @@
  /** {@inheritDoc} */
  @Override
  public void configureBackend(Configuration cfg)
      throws ConfigException
  public void configureBackend(LocalDBBackendCfg cfg) throws ConfigException
  {
    Reject.ifNull(cfg);
    Reject.ifFalse(cfg instanceof LocalDBBackendCfg);
    this.cfg = (LocalDBBackendCfg)cfg;
    Set<DN> dnSet = this.cfg.getBaseDN();
    baseDNs = new DN[dnSet.size()];
    dnSet.toArray(baseDNs);
    this.cfg = cfg;
    baseDNs = this.cfg.getBaseDN().toArray(new DN[0]);
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void initializeBackend()
      throws ConfigException, InitializationException
  {
@@ -327,7 +309,7 @@
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public void finalizeBackend()
  {
    // Deregister as a change listener.
@@ -382,7 +364,7 @@
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean isLocal()
  {
    return true;
@@ -391,7 +373,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    try
@@ -439,28 +421,28 @@
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsLDIFExport()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsLDIFImport()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsBackup()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
@@ -468,35 +450,35 @@
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public boolean supportsRestore()
  {
    return true;
  }
  /** {@inheritDoc} */
  @Override()
  public HashSet<String> getSupportedFeatures()
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /** {@inheritDoc} */
  @Override()
  public HashSet<String> getSupportedControls()
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /** {@inheritDoc} */
  @Override()
  @Override
  public long getEntryCount()
  {
    if (rootContainer != null)
@@ -517,7 +499,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
@@ -532,7 +514,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
      throws DirectoryException
  {
@@ -580,7 +562,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public Entry getEntry(DN entryDN) throws DirectoryException
  {
    readerBegin();
@@ -620,7 +602,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
      throws DirectoryException, CanceledOperationException
  {
@@ -660,7 +642,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
      throws DirectoryException, CanceledOperationException
  {
@@ -699,7 +681,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException,
      CanceledOperationException
@@ -741,7 +723,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                          ModifyDNOperation modifyDNOperation)
      throws DirectoryException, CanceledOperationException
@@ -791,7 +773,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void search(SearchOperation searchOperation)
      throws DirectoryException, CanceledOperationException
  {
@@ -829,7 +811,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
      throws DirectoryException
  {
@@ -881,7 +863,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
      throws DirectoryException
  {
@@ -1161,7 +1143,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void createBackup(BackupConfig backupConfig)
      throws DirectoryException
  {
@@ -1175,7 +1157,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void removeBackup(BackupDirectory backupDirectory, String backupID)
      throws DirectoryException
  {
@@ -1187,7 +1169,7 @@
  /** {@inheritDoc} */
  @Override()
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
      throws DirectoryException
  {
@@ -1201,11 +1183,10 @@
  /** {@inheritDoc} */
  @Override()
  public boolean isConfigurationAcceptable(Configuration configuration,
  @Override
  public boolean isConfigurationAcceptable(LocalDBBackendCfg config,
                                           List<LocalizableMessage> unacceptableReasons)
  {
    LocalDBBackendCfg config = (LocalDBBackendCfg) configuration;
    return isConfigurationChangeAcceptable(config, unacceptableReasons);
  }
opendj3-server-dev/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -45,7 +45,6 @@
import org.forgerock.opendj.ldap.ModificationType;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Reject;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.server.ConfigurationChangeListener;
import org.opends.server.admin.std.server.TaskBackendCfg;
import org.opends.server.api.Backend;
@@ -70,51 +69,53 @@
 * recurring basis.
 */
public class TaskBackend
       extends Backend
       extends Backend<TaskBackendCfg>
       implements ConfigurationChangeListener<TaskBackendCfg>
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
  // The current configuration state.
  /** The current configuration state. */
  private TaskBackendCfg currentConfig;
  // The DN of the configuration entry for this backend.
  /** 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.
  /** The DN of the entry that will serve as the root for all task entries. */
  private DN taskRootDN;
  // The set of base DNs defined for this backend.
  /** The set of base DNs defined for this backend. */
  private DN[] baseDNs;
  // The set of supported controls for this backend.
  private HashSet<String> supportedControls;
  // The set of supported features for this backend.
  private HashSet<String> supportedFeatures;
  // The length of time in seconds after a task is completed that it should be
  // removed from the set of scheduled tasks.
  /**
   * The length of time in seconds after a task is completed that it should be
   * removed from the set of scheduled tasks.
   */
  private long retentionTime;
  // The e-mail address to use for the sender from notification messages.
  /** The e-mail address to use for the sender from notification messages. */
  private String notificationSenderAddress;
  // The path to the task backing file.
  /** 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;
@@ -133,19 +134,13 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration config)
         throws ConfigException
  /** {@inheritDoc} */
  @Override
  public void configureBackend(TaskBackendCfg cfg) throws ConfigException
  {
    Reject.ifNull(config);
    Reject.ifFalse(config instanceof TaskBackendCfg);
    Reject.ifNull(cfg);
    TaskBackendCfg cfg = (TaskBackendCfg)config;
    DN[] baseDNs = new DN[cfg.getBaseDN().size()];
    final DN[] baseDNs = new DN[cfg.getBaseDN().size()];
    cfg.getBaseDN().toArray(baseDNs);
    ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn());
@@ -155,10 +150,9 @@
    // Make sure that the provided set of base DNs contains exactly one value.
    // We will only allow one base for task entries.
    if ((baseDNs == null) || (baseDNs.length == 0))
    if (baseDNs.length == 0)
    {
      LocalizableMessage message = ERR_TASKBE_NO_BASE_DNS.get();
      throw new ConfigException(message);
      throw new ConfigException(ERR_TASKBE_NO_BASE_DNS.get());
    }
    else if (baseDNs.length > 1)
    {
@@ -172,7 +166,7 @@
      taskRootDN = baseDNs[0];
      String recurringTaskBaseString = RECURRING_TASK_BASE_RDN + "," +
                                       taskRootDN.toString();
                                       taskRootDN;
      try
      {
        recurringTaskParentDN = DN.valueOf(recurringTaskBaseString);
@@ -188,7 +182,7 @@
      }
      String scheduledTaskBaseString = SCHEDULED_TASK_BASE_RDN + "," +
                                       taskRootDN.toString();
                                       taskRootDN;
      try
      {
        scheduledTaskParentDN = DN.valueOf(scheduledTaskBaseString);
@@ -229,19 +223,13 @@
    // Get the path to the task data backing file.
    taskBackingFile = cfg.getTaskBackingFile();
    // Define an empty sets for the supported controls and features.
    supportedControls = new HashSet<String>(0);
    supportedFeatures = new HashSet<String>(0);
    currentConfig = cfg;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -271,10 +259,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    currentConfig.removeTaskChangeListener(this);
@@ -313,10 +299,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
@@ -324,10 +308,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    if (taskScheduler != null)
@@ -340,10 +322,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // For the purposes of this method, this is a local backend.
@@ -352,10 +332,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
@@ -364,10 +342,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
@@ -381,10 +357,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
      throws DirectoryException
  {
@@ -439,10 +413,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  {
@@ -497,10 +469,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
@@ -543,10 +513,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
@@ -620,10 +588,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -810,24 +776,20 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                                   ModifyDNOperation modifyDNOperation)
         throws DirectoryException
  {
    LocalizableMessage message = ERR_TASKBE_MODIFY_DN_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(currentDN, getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException, CanceledOperationException {
    // Look at the base DN and scope for the search operation to decide which
@@ -928,9 +890,8 @@
                                         scheduledTaskParentDN, null);
          }
          if (((searchScope == SearchScope.BASE_OBJECT) ||
               (searchScope == SearchScope.WHOLE_SUBTREE)) &&
              searchFilter.matchesEntry(e))
          if ((searchScope == SearchScope.BASE_OBJECT || searchScope == SearchScope.WHOLE_SUBTREE)
              && searchFilter.matchesEntry(e))
          {
            searchOperation.returnEntry(e, null);
          }
@@ -956,9 +917,8 @@
                                         recurringTaskParentDN, null);
          }
          if (((searchScope == SearchScope.BASE_OBJECT) ||
               (searchScope == SearchScope.WHOLE_SUBTREE)) &&
              searchFilter.matchesEntry(e))
          if ((searchScope == SearchScope.BASE_OBJECT || searchScope == SearchScope.WHOLE_SUBTREE)
              && searchFilter.matchesEntry(e))
          {
            searchOperation.returnEntry(e, null);
          }
@@ -981,12 +941,9 @@
    if (searchRoot)
    {
      Entry e = taskScheduler.getTaskRootEntry();
      if (searchFilter.matchesEntry(e))
      if (searchFilter.matchesEntry(e) && !searchOperation.returnEntry(e, null))
      {
        if (! searchOperation.returnEntry(e, null))
        {
          return;
        }
        return;
      }
    }
@@ -994,75 +951,59 @@
    if (searchScheduledParent)
    {
      Entry e = taskScheduler.getScheduledTaskParentEntry();
      if (searchFilter.matchesEntry(e))
      if (searchFilter.matchesEntry(e) && !searchOperation.returnEntry(e, null))
      {
        if (! searchOperation.returnEntry(e, null))
        {
          return;
        }
        return;
      }
    }
    if (searchScheduledTasks)
    if (searchScheduledTasks
        && !taskScheduler.searchScheduledTasks(searchOperation))
    {
      if (! taskScheduler.searchScheduledTasks(searchOperation))
      {
        return;
      }
      return;
    }
    if (searchRecurringParent)
    {
      Entry e = taskScheduler.getRecurringTaskParentEntry();
      if (searchFilter.matchesEntry(e))
      {
        if (! searchOperation.returnEntry(e, null))
        {
          return;
        }
      }
    }
    if (searchRecurringTasks)
    {
      if (! taskScheduler.searchRecurringTasks(searchOperation))
      if (searchFilter.matchesEntry(e) && !searchOperation.returnEntry(e, null))
      {
        return;
      }
    }
    if (searchRecurringTasks
        && !taskScheduler.searchRecurringTasks(searchOperation))
    {
      return;
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedControls()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return supportedControls;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public HashSet<String> getSupportedFeatures()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return supportedFeatures;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // LDIF exports are supported.
@@ -1071,10 +1012,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -1143,82 +1082,47 @@
    }
    finally
    {
      try
      {
        ldifWriter.close();
      }
      catch (Exception e)
      {
        logger.traceException(e);
      }
      try
      {
        ldifReader.close();
      }
      catch (Exception e)
      {
        logger.traceException(e);
      }
      close(ldifWriter, ldifReader);
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    // This backend does not support LDIF imports.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
    // This backend does not support LDIF imports.
    LocalizableMessage message = ERR_TASKBE_IMPORT_NOT_SUPPORTED.get();
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM,
        ERR_BACKEND_IMPORT_NOT_SUPPORTED.get(getBackendID()));
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // This backend does provide a backup/restore mechanism.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
    // This backend does provide a backup/restore mechanism.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -1415,16 +1319,7 @@
      inputStream.close();
    } catch (Exception e) {
      logger.traceException(e);
      try {
        inputStream.close();
      } catch (Exception e2) {
      }
      try {
        zipStream.close();
      } catch (Exception e2) {
      }
      close(inputStream, zipStream);
      message = ERR_TASKS_BACKUP_CANNOT_BACKUP_TASKS_FILE.get(baseName,
        stackTraceToSingleLineString(e));
@@ -1492,10 +1387,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
@@ -1546,10 +1439,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // This backend does provide a backup/restore mechanism.
@@ -1558,10 +1449,8 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -1874,22 +1763,17 @@
  /**
   * {@inheritDoc}
   */
  @Override()
  public boolean isConfigurationAcceptable(Configuration configuration,
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationAcceptable(TaskBackendCfg config,
                                           List<LocalizableMessage> unacceptableReasons)
  {
    TaskBackendCfg config = (TaskBackendCfg) configuration;
    return isConfigAcceptable(config, unacceptableReasons, null);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public boolean isConfigurationChangeAcceptable(TaskBackendCfg configEntry,
                                            List<LocalizableMessage> unacceptableReasons)
@@ -1925,8 +1809,8 @@
    try
    {
      String tmpBackingFile = config.getTaskBackingFile();
      if ((taskBackingFile == null) ||
          (! taskBackingFile.equals(tmpBackingFile)))
      if (taskBackingFile == null ||
          !taskBackingFile.equals(tmpBackingFile))
      {
        File f = getFileForPath(tmpBackingFile);
        if (f.exists())
@@ -1981,9 +1865,7 @@
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public ConfigChangeResult applyConfigurationChange(TaskBackendCfg configEntry)
  {
@@ -2213,9 +2095,7 @@
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
opendj3-server-dev/src/server/org/opends/server/core/DirectoryServer.java
@@ -44,6 +44,7 @@
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -794,7 +795,7 @@
  /** The set of backends registered with the server. */
  private TreeMap<String,Backend> backends;
  private TreeMap<String, Backend<?>> backends;
  /**
   * The mapping between backends and their unique identifiers for their offline
@@ -804,10 +805,31 @@
  private ConcurrentMap<String, Long> offlineBackendsStateIDs;
  /** The set of supported controls registered with the Directory Server. */
  private TreeSet<String> supportedControls;
  private final TreeSet<String> supportedControls = new TreeSet<String>(Arrays.asList(
      OID_LDAP_ASSERTION,
      OID_LDAP_READENTRY_PREREAD,
      OID_LDAP_READENTRY_POSTREAD,
      OID_LDAP_NOOP_OPENLDAP_ASSIGNED,
      OID_PERSISTENT_SEARCH,
      OID_PROXIED_AUTH_V1,
      OID_PROXIED_AUTH_V2,
      OID_AUTHZID_REQUEST,
      OID_MATCHED_VALUES,
      OID_LDAP_SUBENTRIES,
      OID_LDUP_SUBENTRIES,
      OID_PASSWORD_POLICY_CONTROL,
      OID_PERMISSIVE_MODIFY_CONTROL,
      OID_REAL_ATTRS_ONLY,
      OID_VIRTUAL_ATTRS_ONLY,
      OID_ACCOUNT_USABLE_CONTROL,
      OID_NS_PASSWORD_EXPIRED,
      OID_NS_PASSWORD_EXPIRING));
  /** The set of supported feature OIDs registered with the Directory Server. */
  private TreeSet<String> supportedFeatures;
  private final TreeSet<String> supportedFeatures = new TreeSet<String>(Arrays.asList(
      OID_ALL_OPERATIONAL_ATTRS_FEATURE,
      OID_MODIFY_INCREMENT_FEATURE,
      OID_TRUE_FALSE_FILTERS_FEATURE));
  /**
   * The trust manager provider configuration manager for the Directory Server.
@@ -1117,7 +1139,7 @@
      directoryServer.monitorProviders =
           new ConcurrentHashMap<String,
                    MonitorProvider<? extends MonitorProviderCfg>>();
      directoryServer.backends = new TreeMap<String,Backend>();
      directoryServer.backends = new TreeMap<String, Backend<?>>();
      directoryServer.offlineBackendsStateIDs =
           new ConcurrentHashMap<String,Long>();
      directoryServer.backendInitializationListeners =
@@ -1132,8 +1154,6 @@
      directoryServer.synchronizationProviders =
           new CopyOnWriteArrayList<SynchronizationProvider
                                   <SynchronizationProviderCfg>>();
      directoryServer.supportedControls = new TreeSet<String>();
      directoryServer.supportedFeatures = new TreeSet<String>();
      directoryServer.supportedLDAPVersions =
           new ConcurrentHashMap<Integer,List<ConnectionHandler>>();
      directoryServer.connectionHandlers =
@@ -1601,9 +1621,6 @@
      // Reset the map as we can no longer guarantee offline state.
      directoryServer.offlineBackendsStateIDs.clear();
      initializeSupportedControls();
      initializeSupportedFeatures();
      initializeExtendedOperations();
      initializeSASLMechanisms();
@@ -2504,16 +2521,13 @@
    // For each base DN in a backend create a workflow and register
    // the workflow with the default network group
    Map<String, Backend> backendMap = getBackends();
    for (String backendID: backendMap.keySet())
    for (Backend<?> backend : getBackends().values())
    {
      Backend backend = backendMap.get(backendID);
      for (DN baseDN: backend.getBaseDNs())
      {
        WorkflowImpl workflowImpl;
        try
        {
          workflowImpl = createWorkflow(baseDN, backend);
          final WorkflowImpl workflowImpl = createWorkflow(baseDN, backend);
          registerWorkflowWithInternalNetworkGroup(workflowImpl);
          registerWorkflowWithAdminNetworkGroup(workflowImpl);
          registerWorkflowWithDefaultNetworkGroup(workflowImpl);
@@ -2591,55 +2605,6 @@
  /**
   * Initializes the set of supported controls for the Directory Server.
   *
   * @throws ConfigException
   *           If there is a configuration problem with the list of supported
   *           controls.
   * @throws InitializationException
   *           If a problem occurs while initializing the set of supported
   *           controls that is not related to the server configuration.
   */
  private void initializeSupportedControls() throws ConfigException, InitializationException
  {
    supportedControls.add(OID_LDAP_ASSERTION);
    supportedControls.add(OID_LDAP_READENTRY_PREREAD);
    supportedControls.add(OID_LDAP_READENTRY_POSTREAD);
    supportedControls.add(OID_LDAP_NOOP_OPENLDAP_ASSIGNED);
    supportedControls.add(OID_PERSISTENT_SEARCH);
    supportedControls.add(OID_PROXIED_AUTH_V1);
    supportedControls.add(OID_PROXIED_AUTH_V2);
    supportedControls.add(OID_AUTHZID_REQUEST);
    supportedControls.add(OID_MATCHED_VALUES);
    supportedControls.add(OID_LDAP_SUBENTRIES);
    supportedControls.add(OID_LDUP_SUBENTRIES);
    supportedControls.add(OID_PASSWORD_POLICY_CONTROL);
    supportedControls.add(OID_PERMISSIVE_MODIFY_CONTROL);
    supportedControls.add(OID_REAL_ATTRS_ONLY);
    supportedControls.add(OID_VIRTUAL_ATTRS_ONLY);
    supportedControls.add(OID_ACCOUNT_USABLE_CONTROL);
    supportedControls.add(OID_NS_PASSWORD_EXPIRED);
    supportedControls.add(OID_NS_PASSWORD_EXPIRING);
  }
  /**
   * Initializes the set of supported features for the Directory Server.
   *
   * @throws ConfigException
   *           If there is a configuration problem with the list of supported
   *           features.
   * @throws InitializationException
   *           If a problem occurs while initializing the set of supported
   *           features that is not related to the server configuration.
   */
  private void initializeSupportedFeatures() throws ConfigException, InitializationException
  {
    supportedFeatures.add(OID_ALL_OPERATIONAL_ATTRS_FEATURE);
    supportedFeatures.add(OID_MODIFY_INCREMENT_FEATURE);
    supportedFeatures.add(OID_TRUE_FALSE_FILTERS_FEATURE);
  }
  /**
   * Initializes the set of extended operation handlers for the Directory
   * Server.
   *
@@ -5638,9 +5603,9 @@
   * @return  The set of backends that have been registered with the Directory
   *          Server.
   */
  public static Map<String,Backend> getBackends()
  public static Map<String, Backend> getBackends()
  {
    return directoryServer.backends;
    return (Map) directoryServer.backends;
  }
@@ -5688,7 +5653,7 @@
   *                              conflicts with the backend ID of an existing
   *                              backend.
   */
  public static void registerBackend(Backend backend)
  public static void registerBackend(Backend<?> backend)
         throws DirectoryException
  {
    ifNull(backend);
@@ -5698,8 +5663,8 @@
    synchronized (directoryServer)
    {
      TreeMap<String, Backend> newBackends =
          new TreeMap<String, Backend>(directoryServer.backends);
      TreeMap<String, Backend<?>> newBackends =
          new TreeMap<String, Backend<?>>(directoryServer.backends);
      if (newBackends.containsKey(backendID))
      {
        LocalizableMessage message = ERR_REGISTER_BACKEND_ALREADY_EXISTS.get(backendID);
@@ -5744,8 +5709,8 @@
    synchronized (directoryServer)
    {
      TreeMap<String,Backend> newBackends =
           new TreeMap<String,Backend>(directoryServer.backends);
      TreeMap<String, Backend<?>> newBackends =
          new TreeMap<String, Backend<?>>(directoryServer.backends);
      newBackends.remove(backend.getBackendID());
      directoryServer.backends = newBackends;
opendj3-server-dev/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -26,7 +26,6 @@
 */
package org.opends.server.extensions;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -53,7 +52,7 @@
import org.forgerock.opendj.ldap.ResultCode;
import org.forgerock.opendj.ldap.SearchScope;
import org.forgerock.util.Utils;
import org.opends.server.admin.Configuration;
import org.opends.server.admin.std.server.ConfigFileHandlerBackendCfg;
import org.opends.server.api.AlertGenerator;
import org.opends.server.api.ClientConnection;
import org.opends.server.api.ConfigAddListener;
@@ -89,7 +88,7 @@
 * that will read the server configuration from an LDIF file.
 */
public class ConfigFileHandler
       extends ConfigHandler
       extends ConfigHandler<ConfigFileHandlerBackendCfg>
       implements AlertGenerator
{
  private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
@@ -102,24 +101,6 @@
  private static final String CLASS_NAME =
       "org.opends.server.extensions.ConfigFileHandler";
  /**
   * The set of supported control OIDs for this backend.
   */
  private static final Set<String> SUPPORTED_CONTROLS =
                            new HashSet<String>(0);
  /**
   * The set of supported feature OIDs for this backend.
   */
  private static final Set<String> SUPPORTED_FEATURES =
                            new HashSet<String>(0);
  /**
   * The privilege array containing both the CONFIG_READ and CONFIG_WRITE
   * privileges.
@@ -185,12 +166,8 @@
    super();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeConfigHandler(String configFile, boolean checkSchema)
         throws InitializationException
  {
@@ -771,12 +748,8 @@
    changesFile.renameTo(newChanges);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeConfigHandler()
  {
    try
@@ -789,79 +762,53 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void finalizeBackend()
  {
    // No implementation is required.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConfigEntry getConfigRootEntry()
         throws ConfigException
  {
    return configRootEntry;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConfigEntry getConfigEntry(DN entryDN)
         throws ConfigException
  {
    return configEntries.get(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public String getServerRoot()
  {
    return serverRoot;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public String getInstanceRoot()
  {
    return instanceRoot;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  public void configureBackend(Configuration cfg)
  /** {@inheritDoc} */
  @Override
  public void configureBackend(ConfigFileHandlerBackendCfg cfg)
         throws ConfigException
  {
    // No action is required.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void initializeBackend()
         throws ConfigException, InitializationException
  {
@@ -869,58 +816,38 @@
    // initializeConfigHandler method.
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public DN[] getBaseDNs()
  {
    return baseDNs;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long getEntryCount()
  {
    return configEntries.size();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isLocal()
  {
    // The configuration information will always be local.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean isIndexed(AttributeType attributeType, IndexType indexType)
  {
    // All searches in this backend will always be considered indexed.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public ConditionResult hasSubordinates(DN entryDN)
         throws DirectoryException
  {
@@ -932,12 +859,8 @@
    return ConditionResult.UNDEFINED;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public long numSubordinates(DN entryDN, boolean subtree)
      throws DirectoryException
  {
@@ -963,12 +886,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Entry getEntry(DN entryDN)
         throws DirectoryException
  {
@@ -981,24 +900,16 @@
    return configEntry.getEntry().duplicate(true);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean entryExists(DN entryDN)
         throws DirectoryException
  {
    return configEntries.containsKey(entryDN);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void addEntry(Entry entry, AddOperation addOperation)
         throws DirectoryException
  {
@@ -1135,12 +1046,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void deleteEntry(DN entryDN, DeleteOperation deleteOperation)
         throws DirectoryException
  {
@@ -1272,12 +1179,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void replaceEntry(Entry oldEntry, Entry newEntry,
      ModifyOperation modifyOperation) throws DirectoryException
  {
@@ -1422,12 +1325,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void renameEntry(DN currentDN, Entry entry,
                          ModifyDNOperation modifyDNOperation)
         throws DirectoryException
@@ -1454,12 +1353,8 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void search(SearchOperation searchOperation)
         throws DirectoryException
  {
@@ -1596,12 +1491,8 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void writeUpdatedConfig()
         throws DirectoryException
  {
@@ -1882,12 +1773,8 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void writeSuccessfulStartupConfig()
  {
    if (useLastKnownGoodConfig)
@@ -2013,46 +1900,30 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedControls()
  {
    return SUPPORTED_CONTROLS;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public Set<String> getSupportedFeatures()
  {
    return SUPPORTED_FEATURES;
    return Collections.emptySet();
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFExport()
  {
    // TODO We would need export-ldif to initialize this backend.
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void exportLDIF(LDIFExportConfig exportConfig)
         throws DirectoryException
  {
@@ -2145,23 +2016,15 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsLDIFImport()
  {
    return false;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public LDIFImportResult importLDIF(LDIFImportConfig importConfig)
         throws DirectoryException
  {
@@ -2169,24 +2032,16 @@
    throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message);
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup()
  {
    // We do support an online backup mechanism for the configuration.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsBackup(BackupConfig backupConfig,
                                StringBuilder unsupportedReason)
  {
@@ -2197,12 +2052,8 @@
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void createBackup(BackupConfig backupConfig)
         throws DirectoryException
  {
@@ -2549,12 +2400,8 @@
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void removeBackup(BackupDirectory backupDirectory,
                           String backupID)
         throws DirectoryException
@@ -2562,24 +2409,16 @@
    // NYI
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public boolean supportsRestore()
  {
    // We will provide a restore, but only for offline operations.
    return true;
  }
  /**
   * {@inheritDoc}
   */
  @Override()
  /** {@inheritDoc} */
  @Override
  public void restoreBackup(RestoreConfig restoreConfig)
         throws DirectoryException
  {
@@ -3039,33 +2878,21 @@
    logger.info(NOTE_CONFIG_RESTORE_SUCCESSFUL, backupID, backupPath);
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public DN getComponentEntryDN()
  {
    return configRootEntry.getDN();
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public String getClassName()
  {
    return CLASS_NAME;
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public Map<String,String> getAlerts()
  {
@@ -3127,25 +2954,10 @@
    }
  }
  /**
   * {@inheritDoc}
   */
  /** {@inheritDoc} */
  @Override
  public void preloadEntryCache() throws UnsupportedOperationException {
    throw new UnsupportedOperationException("Operation not supported.");
  }
  private void close(Closeable toClose)
  {
    try
    {
      toClose.close();
    }
    catch (Exception e)
    {
      logger.traceException(e);
    }
  }
}