opends/src/guitools/org/opends/guitools/controlpanel/util/ReadOnlyConfigFileHandler.java
@@ -22,19 +22,20 @@ * * * Copyright 2008-2010 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ package org.opends.guitools.controlpanel.util; import static org.opends.messages.ConfigMessages.*; import static org.opends.server.util.StaticUtils.*; import java.io.File; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Set; import org.opends.messages.Message; 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.opends.server.config.ConfigException; @@ -65,70 +66,62 @@ /** * 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) throws InitializationException @@ -253,134 +246,106 @@ } catch (Throwable t) { } finally { try { if (reader != null) { reader.close(); } } catch (Throwable t) { // Ignore } close(reader); } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void writeSuccessfulStartupConfig() { } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void writeUpdatedConfig() throws DirectoryException { } /** * {@inheritDoc} */ public void addEntry(Entry arg0, AddOperation arg1) /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation arg1) throws DirectoryException, CanceledOperationException { } /** * {@inheritDoc} */ public void configureBackend(Configuration arg0) throws ConfigException /** {@inheritDoc} */ @Override 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 { ConfigEntry baseEntry = configEntries.get(entryDN); @@ -398,42 +363,37 @@ } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig arg0) throws DirectoryException { 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 { @@ -459,90 +419,78 @@ } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { } /** * {@inheritDoc} */ public void removeBackup(BackupDirectory arg0, String arg1) /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException { } /** * {@inheritDoc} */ public void renameEntry(DN arg0, Entry arg1, ModifyDNOperation arg2) /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException, CanceledOperationException { } /** * {@inheritDoc} */ public void replaceEntry(Entry arg0, Entry arg1, ModifyOperation arg2) /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException, CanceledOperationException { } /** * {@inheritDoc} */ public void restoreBackup(RestoreConfig arg0) throws DirectoryException /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { } /** * {@inheritDoc} */ public void search(SearchOperation arg0) /** {@inheritDoc} */ @Override 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; } } opends/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 MILD_ERR_ROOTDSE_ADD_NOT_SUPPORTED_7=Unwilling to add entry "%s" because add \ operations are not supported in the root DSE backend MILD_ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=Unwilling to remove entry "%s" \ because delete operations are not supported in the root DSE backend MILD_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 MILD_ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED_10=Unwilling to rename entry "%s" \ because modify DN operations are not supported in the root DSE backend MILD_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 SEVERE_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 SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=The root DSE backend does not \ support LDIF import operations SEVERE_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 MILD_ERR_MONITOR_ADD_NOT_SUPPORTED_23=Unwilling to add entry "%s" because add \ operations are not supported in the monitor backend MILD_ERR_MONITOR_DELETE_NOT_SUPPORTED_24=Unwilling to remove entry "%s" \ because delete operations are not supported in the monitor backend MILD_ERR_BACKEND_ADD_NOT_SUPPORTED_23=Unwilling to add entry "%s" because add \ operations are not supported in the "%s" backend MILD_ERR_BACKEND_DELETE_NOT_SUPPORTED_24=Unwilling to remove entry "%s" \ because delete operations are not supported in the "%s" backend MILD_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 MILD_ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=Unwilling to rename entry "%s" \ because modify DN operations are not supported in the monitor backend MILD_ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=Unwilling to rename entry "%s" \ because modify DN operations are not supported in the "%s" backend SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=An error occurred while \ attempting to export the base monitor entry: %s SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=An error occurred while \ attempting to export the monitor entry for monitor provider %s: %s SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=The monitor backend does not \ SEVERE_ERR_BACKEND_IMPORT_NOT_SUPPORTED_29=The "%s" backend does not \ support LDIF import operations SEVERE_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 MILD_ERR_MONITOR_GET_ENTRY_NULL_32=Unable to retrieve the requested entry \ from the monitor backend because the provided DN was null MILD_ERR_BACKEND_GET_ENTRY_NULL_32=Unable to retrieve the requested entry \ from the "%s" backend because the provided DN was null SEVERE_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 MILD_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 MILD_ERR_SCHEMA_ADD_NOT_SUPPORTED_41=Unwilling to add entry "%s" because add \ operations are not supported in the schema backend MILD_ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=Unwilling to remove entry "%s" \ because delete operations are not supported in the schema backend MILD_ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=Unwilling to rename entry "%s" \ because modify DN operations are not supported in the schema backend SEVERE_ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=An error occurred while attempting \ to export the base schema entry: %s MILD_ERR_SCHEMA_INVALID_BASE_48=Unable to retrieve the requested entry %s \ @@ -347,8 +334,6 @@ SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_ERR_BACKUP_CONFIG_ENTRY_NULL_171=Unable to initialize the backup \ SEVERE_ERR_BACKEND_CONFIG_ENTRY_NULL_171=Unable to initialize the "%s" \ backend because the provided configuration entry is null SEVERE_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 SEVERE_ERR_BACKUP_GET_ENTRY_NULL_175=Unable to retrieve an entry from the \ backup backend because the requested entry was null SEVERE_ERR_BACKUP_INVALID_BASE_176=Requested entry %s does not exist in the \ backup backend SEVERE_ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY_177=Unable to retrieve entry \ @@ -477,22 +455,10 @@ which the requested backup should reside SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=Backup %s does not exist in backup \ directory %s SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=Add operations are not supported in \ the backup backend SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=Delete operations are not \ supported in the backup backend SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=Modify operations are not \ supported in the backup backend SEVERE_ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=Modify DN operations are not \ supported in the backup backend MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=Unwilling to update entry "%s" \ because modify operations are not supported in the "%s" backend SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=The requested entry %s does not exist in \ the backup backend SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=LDIF export operations are not \ supported in the backup backend SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=LDIF import operations are not \ supported in the backup backend SEVERE_ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=Backup and restore \ operations are not supported in the backup backend SEVERE_ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Exactly one base DN \ must be provided for use with the memory-based backend SEVERE_ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=Entry %s already exists in \ @@ -501,8 +467,8 @@ the memory-based backend SEVERE_ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=Unable to add entry %s \ because its parent entry %s does not exist in the memory-based backend SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Entry %s does not exist in \ the memory-based backend SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Entry %s does not exist in \ the "%s" backend SEVERE_ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=Cannot delete \ entry %s because it has one or more subordinate entries SEVERE_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 SEVERE_ERR_TRUSTSTORE_GET_ENTRY_NULL_300=Unable to retrieve an entry from the \ trust store backend because the requested entry was null SEVERE_ERR_TRUSTSTORE_INVALID_BASE_301=Requested entry %s does not exist in \ the trust store backend SEVERE_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 SEVERE_ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Error while trying to retrieve \ certificate %s from the trust store file %s: %s SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=Modify operations are not \ supported in the trust store backend SEVERE_ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=Modify DN operations are not \ supported in the trust store backend SEVERE_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 SEVERE_ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF import and \ export operations are not supported in the trust store backend SEVERE_ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Backup and \ restore operations are not supported in the trust store backend MILD_ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF import and \ export operations are not supported in the "%s" backend MILD_ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Backup and \ restore operations are not supported in the "%s" backend SEVERE_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 opends/src/messages/messages/backend_ca_ES.properties
@@ -1,4 +1,4 @@ SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=L'entrada %s no existeix en la infraestructura de fons (Backend) basada en mem\u00f2ria SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=L'entrada %s no existeix en la infraestructura de fons (Backend) "%s" SEVERE_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 NOTICE_BACKEND_OFFLINE_370=La infraestructura de fons (Backend): %s, ara s'est\u00e0 desconnectant SEVERE_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 opends/src/messages/messages/backend_de.properties
@@ -52,39 +52,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_ERR_ROOTDSE_DELETE_NOT_SUPPORTED_8=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Root-DSE-Backend nicht unterst\u00fctzt werden MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_ERR_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER_14=Unerwarteter Fehler beim Versuch, den LDIF-Schreiber f\u00fcr das Root-DSE-Backend zu \u00f6ffnen: %s SEVERE_ERR_ROOTDSE_UNABLE_TO_EXPORT_DSE_15=Unerwarteter Fehler beim Versuch, den Root-DSE-Eintrag in ein spezifiziertes LDIF-Ziel zu exportieren: %s SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Das Root-DSE-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge SEVERE_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 SEVERE_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 SEVERE_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 MILD_ERR_MONITOR_ADD_NOT_SUPPORTED_23=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im Monitoring-Backend nicht unterst\u00fctzt werden MILD_ERR_MONITOR_DELETE_NOT_SUPPORTED_24=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Monitoring-Backend nicht unterst\u00fctzt werden MILD_ERR_BACKEND_ADD_NOT_SUPPORTED_23=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im "%s"-Backend nicht unterst\u00fctzt werden MILD_ERR_BACKEND_DELETE_NOT_SUPPORTED_24=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im "%s"-Backend nicht unterst\u00fctzt werden MILD_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 MILD_ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED_26=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4ngen im Monitoring-Backend nicht unterst\u00fctzt werden MILD_ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED_26=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4ngen im "%s"-Backend nicht unterst\u00fctzt werden SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=Fehler beim Versuch, den Basismonitoreintrag zu exportieren: %s SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY_28=Fehler beim Versuch, den Monitoreintrag f\u00fcr den \u00dcberwachungsanbieter %s zu exportieren: %s SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=Das Monitoring-Backend unterst\u00fctzt keine LDIF-Importvorg\u00e4nge SEVERE_ERR_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED_30=Das Monitoring-Backend bietet keine M\u00f6glichkeit f\u00fcr Sicherungs- und Wiederherstellungsvorg\u00e4nge MILD_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 MILD_ERR_MONITOR_GET_ENTRY_NULL_32=Angeforderter Eintrag kann nicht vom Monitoring-Backend abgerufen werden, da der angegebene DN ung\u00fcltig ist MILD_ERR_BACKEND_GET_ENTRY_NULL_32=Angeforderter Eintrag kann nicht vom "%s"-Backend abgerufen werden, da der angegebene DN ung\u00fcltig ist MILD_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 SEVERE_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 SEVERE_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 MILD_ERR_SCHEMA_ADD_NOT_SUPPORTED_41=Eintrag "%s" kann nicht hinzugef\u00fcgt werden, da Hinzuf\u00fcgevorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden MILD_ERR_SCHEMA_DELETE_NOT_SUPPORTED_42=Eintrag "%s" kann nicht entfernt werden, da L\u00f6schvorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden MILD_ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED_44=Eintrag "%s" kann nicht umbenannt werden, da DN-Bearbeitungsvorg\u00e4nge im Schema-Backend nicht unterst\u00fctzt werden SEVERE_ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=Fehler beim Versuch, den Basisschemaeintrag zu exportieren: %s MILD_ERR_SCHEMA_INVALID_BASE_48=Angeforderter Eintrag %s kann nicht vom Schema-Backend abgerufen werden, weil der DN einem der Schemaeintrags-DNs entspricht SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_CONFIG_ENTRY_NULL_171=Das Sicherungs-Backend konnte nicht initialisiert werden, da der angegebene Konfigurationseintrag Null ist SEVERE_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 SEVERE_ERR_BACKUP_GET_ENTRY_NULL_175=Der Eintrag konnte nicht vom Sicherungs-Backend abgerufen werden, da der angeforderte Eintrag Null ist SEVERE_ERR_BACKEND_CONFIG_ENTRY_NULL_171=Das "%s"-Backend konnte nicht initialisiert werden, da der angegebene Konfigurationseintrag Null ist SEVERE_ERR_BACKUP_INVALID_BASE_176=Der angeforderte Eintrag %s ist nicht im Sicherungs-Backend vorhanden SEVERE_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 SEVERE_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 @@ SEVERE_ERR_BACKUP_NO_BACKUP_PARENT_DN_181=Eintrag %s konnte nicht vom Sicherungs-Backend abgerufen werden, da er keinen \u00fcbergeordneten Eintrag besitzt SEVERE_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 SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=Sicherung %s ist nicht im Sicherungsverzeichnis %s vorhanden SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=Hinzuf\u00fcgevorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=L\u00f6schvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=DN-\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u00c4nderungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=Der angeforderte Eintrag %s ist nicht in dem Sicherungs-Backup vorhanden SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=LDIF-Exportvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=LDIF-Importvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem Sicherungs-Backend unterst\u00fctzt SEVERE_ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Es muss exakt eine Basis-DN f\u00fcr die Verwendung mit dem speicherbasierten Backend vorliegen SEVERE_ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=Eintrag %s ist bereits im speicherbasierten Backend vorhanden SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=Eintrag %s geh\u00f6rt nicht zum speicherbasierten Backup SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=Eintrag %s geh\u00f6rt nicht zum speicherbasierten Backend SEVERE_ERR_MEMORYBACKEND_PARENT_DOESNT_EXIST_195=Eintrag %s konnte nicht hinzugef\u00fcgt werden, da dessen \u00fcbergeordneter Eintrag %s nicht im speicherbasierten Backend vorhanden ist SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Eintrag %s ist nicht im speicherbasierten Backup vorhanden SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Eintrag %s ist nicht im "%s" Backend vorhanden SEVERE_ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=Eintrag %s kann nicht gel\u00f6scht werden, da er einen oder mehrere untergeordnete Eintr\u00e4ge besitzt SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Ein LDIF-Schreiber konnte nicht erstellt werden: %s SEVERE_ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=Eintrag %s konnte nicht in LDIF geschrieben werden: %s @@ -314,15 +296,12 @@ NOTICE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_GET_ENTRY_NULL_300=Der Eintrag konnte nicht vom Trust-Speicher-Backend abgerufen werden, da der angeforderte Eintrag Null ist SEVERE_ERR_TRUSTSTORE_INVALID_BASE_301=Der angeforderte Eintrag %s ist nicht im Trust-Speicher-Backup vorhanden SEVERE_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 SEVERE_ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Fehler beim Versuch, Zertifikat %s aus der Trust-Speicherdatei %s abzurufen: %s SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u00c4nderungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt SEVERE_ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=DN-\u00c4nderungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt SEVERE_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 SEVERE_ERR_TRUSTSTORE_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF-Import- und Exportvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt SEVERE_ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem Trust-Speicher-Backend unterst\u00fctzt MILD_ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307=LDIF-Import- und Exportvorg\u00e4nge werden nicht in dem "%s"-Backend unterst\u00fctzt MILD_ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=Sicherungs- und Wiederherstellungsvorg\u00e4nge werden nicht in dem "%s"-Backend unterst\u00fctzt SEVERE_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 SEVERE_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 SEVERE_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 opends/src/messages/messages/backend_es.properties
@@ -52,39 +52,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=El backend de DSE ra\u00edz no admite operaciones de importaci\u00f3n de LDIF SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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" MILD_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" MILD_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 MILD_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 MILD_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" SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=Se ha producido un error al tratar de exportar la entrada de supervisi\u00f3n de base: %s SEVERE_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 SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=El backend de supervisi\u00f3n no admite operaciones de importaci\u00f3n de LDIF SEVERE_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 MILD_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 MILD_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 MILD_ERR_BACKEND_GET_ENTRY_NULL_32=No se puede recuperar la entrada solicitada del backend "%s" porque el ND especificado es nulo MILD_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 SEVERE_ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=Se ha producido un error al tratar de exportar la entrada de esquema de base: %s MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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) SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK_161=No se puede suprimir la tarea pendiente %s porque no existe @@ -196,9 +186,7 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_GET_ENTRY_NULL_175=No se puede recuperar una entrada del backend de copia de seguridad porque la entrada solicitada era nula SEVERE_ERR_BACKEND_CONFIG_ENTRY_NULL_171=No se puede inicializar el backend "%s" porque la entrada de configuraci\u00f3n proporcionada es nula SEVERE_ERR_BACKUP_INVALID_BASE_176=No existe la entrada %s solicitada en el backend de copia de seguridad SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=No existe la copia de seguridad %s en el directorio de copia de seguridad %s SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=No se admiten las operaciones de adici\u00f3n en el backend de copia de seguridad SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=No se admiten las operaciones de eliminaci\u00f3n en el backend de copia de seguridad SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=No se admiten las operaciones de modificaci\u00f3n en el backend de copia de seguridad SEVERE_ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=No se admiten las operaciones de modificaci\u00f3n de ND en el backend de copia de seguridad MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=No se admiten las operaciones de modificaci\u00f3n en el backend de copia de seguridad SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=No existe la entrada %s solicitada en el backend de copia de seguridad SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=No se admiten las operaciones de exportaci\u00f3n de LDIF en el backend de copia de seguridad SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=No se admiten las operaciones de importaci\u00f3n de LDIF en el backend de copia de seguridad SEVERE_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 SEVERE_ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE_192=Debe proporcionarse exactamente un ND de base para su uso con el backend basado en memoria SEVERE_ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=La entrada %s ya existe en el backend basado en memoria SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=La entrada %s no pertenece al backend basado en memoria SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=La entrada %s no existe en el backend basado en memoria SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=La entrada %s no existe en el backend "%s" SEVERE_ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN_197=No se puede eliminar la entrada %s porque tiene una o m\u00e1s entradas subordinadas SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Unable to create an LDIF writer: %s SEVERE_ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=No se puede escribir la entrada %s en el LDIF: %s @@ -314,15 +296,12 @@ NOTICE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_INVALID_BASE_301=La entrada %s solicitada no existe en el backend de almac\u00e9n de confianza SEVERE_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 SEVERE_ERR_TRUSTSTORE_CANNOT_RETRIEVE_CERT_303=Error al tratar de recuperar el certificado %s del archivo de almac\u00e9n de confianza %s: %s SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=No se admiten las operaciones de modificaci\u00f3n en el backend de almac\u00e9n de confianza SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=No se admiten las operaciones de copia de seguridad y restauraci\u00f3n en el "%s" backend SEVERE_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 SEVERE_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 SEVERE_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 opends/src/messages/messages/backend_fr.properties
@@ -52,39 +52,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Le backend de DSE racine ne prend pas en charge les op\u00e9rations d'importation LDIF SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=Le backend de contr\u00f4le ne prend pas en charge les op\u00e9rations d'importation LDIF SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 SEVERE_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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) SEVERE_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) SEVERE_ERR_BACKUP_CONFIG_ENTRY_NULL_171=Impossible d'initialiser le backend de sauvegarde car l'entr\u00e9e de configuration fournie est Null SEVERE_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 SEVERE_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 SEVERE_ERR_BACKEND_CONFIG_ENTRY_NULL_171=Impossible d'initialiser le backend "%s" car l'entr\u00e9e de configuration fournie est Null SEVERE_ERR_BACKUP_INVALID_BASE_176=L'entr\u00e9e demand\u00e9e (%s) n'existe pas dans le backend de sauvegarde SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=La sauvegarde %s n'existe pas dans le r\u00e9pertoire de sauvegarde %s SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=Les op\u00e9rations d'ajout ne sont pas prises en charge dans le backend de sauvegarde SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=Les op\u00e9rations de suppression ne sont pas prises en charge dans le backend de sauvegarde SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de sauvegarde SEVERE_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 MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de sauvegarde SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=L'entr\u00e9e demand\u00e9e (%s) n'existe pas dans le backend de sauvegarde SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=Les op\u00e9rations d'exportation LDIF ne sont pas prises en charge dans le backend de sauvegarde SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=Les op\u00e9rations d'importation LDIF ne sont pas prises en charge dans le backend de sauvegarde SEVERE_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 SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=L'entr\u00e9e %s existe d\u00e9j\u00e0 dans le backend bas\u00e9 sur la m\u00e9moire SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=L'entr\u00e9e %s n'appartient pas au backend bas\u00e9 sur la m\u00e9moire SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=L'entr\u00e9e %s n'existe pas dans le backend bas\u00e9 sur la m\u00e9moire SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=L'entr\u00e9e %s n'existe pas dans le backend "%s" SEVERE_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 SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Impossible de cr\u00e9er un g\u00e9n\u00e9rateur LDIF\u00a0: %s SEVERE_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 @@ NOTICE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_INVALID_BASE_301=L'entr\u00e9e %s demand\u00e9e n'existe pas dans le backend de magasin d'approbations SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=Les op\u00e9rations de modification ne sont pas prises en charge dans le backend de magasin d'approbations SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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" MILD_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" SEVERE_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 SEVERE_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 SEVERE_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 opends/src/messages/messages/backend_ja.properties
@@ -51,39 +51,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 SEVERE_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=Unable to create an LDIF writer: %s SEVERE_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 @@ NOTICE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 opends/src/messages/messages/backend_ko.properties
@@ -51,39 +51,31 @@ SEVERE_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. SEVERE_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 MILD_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. MILD_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. MILD_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. MILD_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. MILD_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. MILD_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. SEVERE_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 SEVERE_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. SEVERE_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 SEVERE_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 SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. MILD_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. MILD_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. MILD_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. MILD_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. MILD_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. MILD_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. MILD_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. SEVERE_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 SEVERE_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 SEVERE_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. SEVERE_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. MILD_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. MILD_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. MILD_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. MILD_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 SEVERE_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. SEVERE_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. MILD_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. MILD_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. MILD_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. SEVERE_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 MILD_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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 @@ SEVERE_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. SEVERE_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 SEVERE_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. SEVERE_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. SEVERE_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 @@ SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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 SEVERE_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. SEVERE_ERR_BACKUP_INVALID_BASE_176=\uc694\uccad\ud55c \ud56d\ubaa9 %s\uc774(\uac00) \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. SEVERE_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. SEVERE_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 @@ SEVERE_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. SEVERE_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. SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=\ubc31\uc5c5 %s\uc774(\uac00) \ubc31\uc5c5 \ub514\ub809\ud1a0\ub9ac %s\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. MILD_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. SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=\uc694\uccad\ud55c \ud56d\ubaa9 %s\uc774(\uac00) \ubc31\uc5c5 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\ud56d\ubaa9 %s\uc774(\uac00) \uba54\ubaa8\ub9ac \uae30\ubc18 \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=\ud56d\ubaa9 %s\uc774(\uac00) "%s" \ubc31\uc5d4\ub4dc\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. SEVERE_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. SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=LDIF \uc791\uc131\uae30\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: %s SEVERE_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 @@ NOTICE_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. SEVERE_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 SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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 SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. SEVERE_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. MILD_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. MILD_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. SEVERE_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. SEVERE_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 SEVERE_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. opends/src/messages/messages/backend_pl.properties
@@ -3,4 +3,4 @@ NOTICE_TASK_STARTED_413=%s zadanie %s rozpocz\u0119\u0142o wykonywanie SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=Wpis %s nie istnieje w zapleczu opartym o pami\u0119\u0107 SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=Wpis %s nie istnieje w zapleczu "%s" opends/src/messages/messages/backend_zh_CN.properties
@@ -51,39 +51,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=\u6839 DSE \u540e\u7aef\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u64cd\u4f5c SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\u5c1d\u8bd5\u5bfc\u51fa\u57fa\u76d1\u89c6\u5668\u6761\u76ee\u65f6\u53d1\u751f\u9519\u8bef: %s SEVERE_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 SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\u76d1\u89c6\u5668\u540e\u7aef\u4e0d\u652f\u6301 lDIF \u5bfc\u5165\u64cd\u4f5c SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 SEVERE_ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\u5c1d\u8bd5\u5bfc\u51fa\u57fa\u6a21\u5f0f\u6761\u76ee\u65f6\u53d1\u751f\u9519\u8bef: %s MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_INVALID_BASE_176=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=\u5907\u4efd %s \u4e0d\u5b58\u5728\u4e8e\u5907\u4efd\u76ee\u5f55 %s \u4e2d SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u6dfb\u52a0\u64cd\u4f5c SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5220\u9664\u64cd\u4f5c SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c SEVERE_ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u51fa\u64cd\u4f5c SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u64cd\u4f5c SEVERE_ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\u5907\u4efd\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_ALREADY_EXISTS_193=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u5df2\u5b58\u5728\u6761\u76ee %s SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u4e0d\u62e5\u6709\u6761\u76ee %s SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\u57fa\u4e8e\u5185\u5b58\u7684\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u6761\u76ee %s SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196="%s" \u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u6761\u76ee %s SEVERE_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 SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=\u65e0\u6cd5\u521b\u5efa LDIF \u4e66\u5199\u5668: %s SEVERE_ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\u65e0\u6cd5\u5c06\u6761\u76ee %s \u5199\u5165 LDIF: %s @@ -313,15 +295,12 @@ NOTICE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_INVALID_BASE_301=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u5b58\u5728\u8bf7\u6c42\u7684\u6761\u76ee %s SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539\u64cd\u4f5c SEVERE_ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u4fee\u6539 DN \u64cd\u4f5c SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_BACKUP_AND_RESTORE_NOT_SUPPORTED_308=\u4fe1\u4efb\u5e93\u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c MILD_ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301 LDIF \u5bfc\u5165\u548c\u5bfc\u51fa\u64cd\u4f5c MILD_ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s" \u540e\u7aef\u4e2d\u4e0d\u652f\u6301\u5907\u4efd\u548c\u6062\u590d\u64cd\u4f5c SEVERE_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 SEVERE_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 SEVERE_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 opends/src/messages/messages/backend_zh_TW.properties
@@ -51,39 +51,31 @@ SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_ROOTDSE_IMPORT_NOT_SUPPORTED_16=Root DSE \u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d SEVERE_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 MILD_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 SEVERE_ERR_MONITOR_UNABLE_TO_EXPORT_BASE_27=\u5617\u8a66\u532f\u51fa\u57fa\u5e95\u76e3\u8996\u9805\u76ee\u6642\u767c\u751f\u932f\u8aa4: %s SEVERE_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 SEVERE_ERR_MONITOR_IMPORT_NOT_SUPPORTED_29=\u76e3\u8996\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d SEVERE_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 MILD_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 MILD_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 MILD_ERR_BACKEND_GET_ENTRY_NULL_32=\u7121\u6cd5\u5f9e "%s" \u5f8c\u7aef\u64f7\u53d6\u8acb\u6c42\u7684\u9805\u76ee\uff0c\u56e0\u70ba\u6240\u63d0\u4f9b\u7684 DN \u70ba\u7a7a\u503c MILD_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 SEVERE_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 SEVERE_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 MILD_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 MILD_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 MILD_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 SEVERE_ERR_SCHEMA_UNABLE_TO_EXPORT_BASE_45=\u5617\u8a66\u532f\u51fa\u57fa\u5e95\u6a21\u5f0f\u9805\u76ee\u6642\u767c\u751f\u932f\u8aa4: %s MILD_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_INVALID_BASE_176=\u8acb\u6c42\u7684\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u5f8c\u7aef\u4e2d SEVERE_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 SEVERE_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 @@ SEVERE_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 SEVERE_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 SEVERE_ERR_BACKUP_NO_SUCH_BACKUP_183=\u5099\u4efd %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u76ee\u9304 %s \u4e2d SEVERE_ERR_BACKUP_ADD_NOT_SUPPORTED_184=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u589e\u52a0\u4f5c\u696d SEVERE_ERR_BACKUP_DELETE_NOT_SUPPORTED_185=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u522a\u9664\u4f5c\u696d SEVERE_ERR_BACKUP_MODIFY_NOT_SUPPORTED_186=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d SEVERE_ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED_187=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d MILD_ERR_BACKEND_MODIFY_NOT_SUPPORTED_186=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d SEVERE_ERR_BACKUP_NO_SUCH_ENTRY_188=\u8acb\u6c42\u7684\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u5099\u4efd\u5f8c\u7aef\u4e2d SEVERE_ERR_BACKUP_EXPORT_NOT_SUPPORTED_189=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u51fa\u4f5c\u696d SEVERE_ERR_BACKUP_IMPORT_NOT_SUPPORTED_190=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u4f5c\u696d SEVERE_ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED_191=\u5099\u4efd\u5f8c\u7aef\u4e0d\u652f\u63f4\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d SEVERE_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 SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_BELONG_194=\u9805\u76ee %s \u4e0d\u5c6c\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef SEVERE_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 SEVERE_ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST_196=\u9805\u76ee %s \u4e0d\u5b58\u5728\u65bc\u4ee5\u8a18\u61b6\u9ad4\u70ba\u57fa\u790e\u7684\u5f8c\u7aef\u4e2d SEVERE_ERR_BACKEND_ENTRY_DOESNT_EXIST_196=\u9805\u76ee %s \u4e0d\u5b58\u5728 "%s" \u5f8c\u7aef\u4e2d SEVERE_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 SEVERE_ERR_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER_199=\u7121\u6cd5\u5efa\u7acb LDIF \u5beb\u5165\u5668: %s SEVERE_ERR_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF_200=\u7121\u6cd5\u5c07\u9805\u76ee %s \u5beb\u5165\u81f3 LDIF: % @@ -308,15 +290,12 @@ NOTICE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_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 SEVERE_ERR_TRUSTSTORE_MODIFY_NOT_SUPPORTED_304=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539\u4f5c\u696d SEVERE_ERR_TRUSTSTORE_MODIFY_DN_NOT_SUPPORTED_305=\u4fe1\u4efb\u6e05\u55ae\u5b58\u653e\u5340\u5f8c\u7aef\u4e0d\u652f\u63f4\u4fee\u6539 DN \u4f5c\u696d SEVERE_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 SEVERE_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 SEVERE_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 MILD_ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED_307="%s" \u5f8c\u7aef\u4e0d\u652f\u63f4 LDIF \u532f\u5165\u8207\u532f\u51fa\u4f5c\u696d MILD_ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED_308="%s" \u5f8c\u7aef\u4e0d\u652f\u63f4\u5099\u4efd\u8207\u5fa9\u539f\u4f5c\u696d SEVERE_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 SEVERE_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 SEVERE_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 opends/src/server/org/opends/server/api/Backend.java
@@ -22,77 +22,63 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ package org.opends.server.api; import org.opends.messages.Message; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import org.opends.messages.Message; import org.opends.server.admin.Configuration; import org.opends.server.config.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; import org.opends.server.types.BackupDirectory; import org.opends.server.types.CanceledOperationException; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; import org.opends.server.types.Entry; import org.opends.server.types.IndexType; import org.opends.server.types.InitializationException; import org.opends.server.types.LDIFExportConfig; import org.opends.server.types.LDIFImportConfig; import org.opends.server.types.LDIFImportResult; import org.opends.server.types.RestoreConfig; import org.opends.server.types.SearchFilter; import org.opends.server.types.WritabilityMode; import org.opends.server.types.ConditionResult; import org.opends.server.types.*; 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; @@ -123,8 +109,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; @@ -148,7 +133,7 @@ * for this backend, or {@code false} if not. */ public boolean isConfigurationAcceptable( Configuration configuration, C configuration, List<Message> unacceptableReasons) { // This default implementation does not perform any special @@ -329,7 +314,7 @@ return false; } } return (! filter.getFilterComponents().isEmpty()); return !filter.getFilterComponents().isEmpty(); case NOT: @@ -389,15 +374,7 @@ { matchingRule = attrType.getEqualityMatchingRule(); } if (matchingRule == null) { return false; } else { return isIndexed(attrType, matchingRule); } return matchingRule != null && isIndexed(attrType, matchingRule); default: @@ -483,7 +460,7 @@ public boolean entryExists(DN entryDN) throws DirectoryException { return (getEntry(entryDN) != null); return getEntry(entryDN) != null; } @@ -641,8 +618,7 @@ public final boolean supportsControl(String controlOID) { Set<String> supportedControls = getSupportedControls(); return ((supportedControls != null) && supportedControls.contains(controlOID)); return supportedControls != null && supportedControls.contains(controlOID); } @@ -670,8 +646,7 @@ public final boolean supportsFeature(String featureOID) { Set<String> supportedFeatures = getSupportedFeatures(); return ((supportedFeatures != null) && supportedFeatures.contains(featureOID)); return supportedFeatures != null && supportedFeatures.contains(featureOID); } @@ -964,7 +939,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; } @@ -976,7 +951,7 @@ * * @param parentBackend The parent backend for this backend. */ public final void setParentBackend(Backend parentBackend) public final void setParentBackend(Backend<?> parentBackend) { synchronized (this) { @@ -992,7 +967,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; } @@ -1006,7 +981,7 @@ * this backend. */ public final void setSubordinateBackends( Backend[] subordinateBackends) Backend<?>[] subordinateBackends) { synchronized (this) { @@ -1030,8 +1005,7 @@ */ public final boolean hasSubSuffix(DN subSuffixDN) { Backend[] subBackends = subordinateBackends; for (Backend b : subBackends) for (Backend<?> b : subordinateBackends) { for (DN baseDN : b.getBaseDNs()) { @@ -1072,9 +1046,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(); @@ -1112,7 +1086,7 @@ if (matchFound) { Backend[] newSubordinateBackends = Backend<?>[] newSubordinateBackends = new Backend[subBackendList.size()]; subBackendList.toArray(newSubordinateBackends); subordinateBackends = newSubordinateBackends; @@ -1130,21 +1104,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; @@ -1163,15 +1136,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)) { @@ -1185,7 +1158,7 @@ if (found) { Backend[] newSubordinateBackends = Backend<?>[] newSubordinateBackends = new Backend[backendList.size()]; backendList.toArray(newSubordinateBackends); subordinateBackends = newSubordinateBackends; @@ -1207,13 +1180,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)) { @@ -1249,7 +1220,7 @@ { if (entryDN.isDescendantOf(baseDN)) { if ((excludeDNs == null) || excludeDNs.isEmpty()) if (excludeDNs == null || excludeDNs.isEmpty()) { return true; } opends/src/server/org/opends/server/api/ConfigHandler.java
@@ -22,29 +22,29 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ package org.opends.server.api; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.config.ConfigEntry; import org.opends.server.config.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 opends/src/server/org/opends/server/backends/BackupBackend.java
@@ -22,16 +22,14 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ package org.opends.server.backends; import java.io.File; import java.util.*; import org.opends.messages.Message; 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; @@ -46,7 +44,6 @@ import org.opends.server.types.*; import org.opends.server.schema.BooleanSyntax; import org.opends.server.schema.GeneralizedTimeSyntax; import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.server.config.ConfigConstants.*; @@ -54,7 +51,6 @@ import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This class defines a backend used to present information about Directory * Server backups. It will not actually store anything, but upon request will @@ -64,7 +60,7 @@ * unknown backup directory is included in the base DN. */ public class BackupBackend extends Backend extends Backend<BackupBackendCfg> implements ConfigurationChangeListener<BackupBackendCfg> { /** @@ -74,25 +70,19 @@ // 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; @@ -111,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) { Message message = ERR_BACKUP_CONFIG_ENTRY_NULL.get(); throw new ConfigException(message); throw new ConfigException(ERR_BACKEND_CONFIG_ENTRY_NULL.get(getBackendID())); } Validator.ensureTrue(config instanceof BackupBackendCfg); currentConfig = (BackupBackendCfg)config; currentConfig = config; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void initializeBackend() throws ConfigException, InitializationException { @@ -153,8 +134,8 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } Message message = ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN.get(getExceptionMessage(e)); Message message = ERR_BACKEND_CANNOT_DECODE_BACKEND_ROOT_DN.get( getExceptionMessage(e), getBackendID()); throw new InitializationException(message, e); } @@ -200,16 +181,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 { @@ -230,10 +203,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { currentConfig.removeBackupChangeListener(this); @@ -253,10 +224,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public DN[] getBaseDNs() { return baseDNs; @@ -264,10 +233,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long getEntryCount() { int numEntries = 1; @@ -299,10 +266,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean isLocal() { // For the purposes of this method, this is a local backend. @@ -311,10 +276,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean isIndexed(AttributeType attributeType, IndexType indexType) { // All searches in this backend will always be considered indexed. @@ -323,10 +286,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException { long ret = numSubordinates(entryDN, false); @@ -346,10 +307,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -412,7 +371,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 (AttributeValue v : attrList.get(0)) { @@ -443,19 +402,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) { Message message = ERR_BACKUP_GET_ENTRY_NULL.get(); throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message); ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID())); } @@ -715,7 +671,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) { @@ -747,7 +703,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); @@ -764,63 +720,53 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { Message 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(String.valueOf(entry.getDN()), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { Message 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(String.valueOf(entryDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { Message 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(String.valueOf(oldEntry.getDN()), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException { Message 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(String.valueOf(currentDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -837,16 +783,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); @@ -888,7 +831,7 @@ { List<Attribute> attrList = backupDirEntry.getAttribute(backupPathType); if ((attrList != null) && (! attrList.isEmpty())) if (attrList != null && !attrList.isEmpty()) { for (AttributeValue v : attrList.get(0)) { @@ -930,13 +873,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); } @@ -945,7 +885,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 (AttributeValue v : attrList.get(0)) { @@ -983,8 +923,8 @@ } else { if ((parentDN == null) || (! backupBaseDN.equals(parentDN.getParentDNInSuffix()))) if (parentDN == null || !backupBaseDN.equals(parentDN.getParentDNInSuffix())) { Message message = ERR_BACKUP_NO_SUCH_ENTRY.get( String.valueOf(backupBaseDN) @@ -992,8 +932,8 @@ 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) @@ -1013,32 +953,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. @@ -1047,128 +977,101 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException { Message 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. Message 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. Message 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. Message 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. Message 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<Message> unacceptableReasons) { @@ -1180,9 +1083,8 @@ /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange(BackupBackendCfg cfg) { ResultCode resultCode = ResultCode.SUCCESS; @@ -1221,9 +1123,8 @@ /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); } opends/src/server/org/opends/server/backends/ChangelogBackend.java
@@ -25,21 +25,26 @@ */ package org.opends.server.backends; import java.util.Collections; import java.util.Set; import org.opends.server.admin.Configuration; import org.opends.server.api.Backend; import org.opends.server.config.ConfigEntry; import org.opends.server.config.ConfigException; import org.opends.server.core.AddOperation; import org.opends.server.core.DeleteOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.core.ModifyDNOperation; import org.opends.server.core.ModifyOperation; import org.opends.server.core.SearchOperation; import org.opends.server.loggers.debug.DebugTracer; import org.opends.server.types.AttributeType; import org.opends.server.types.BackupConfig; import org.opends.server.types.BackupDirectory; import org.opends.server.types.CanceledOperationException; import org.opends.server.types.ConditionResult; import org.opends.server.types.DebugLogLevel; import org.opends.server.types.DN; import org.opends.server.types.DirectoryException; import org.opends.server.types.Entry; @@ -49,6 +54,13 @@ import org.opends.server.types.LDIFImportConfig; import org.opends.server.types.LDIFImportResult; import org.opends.server.types.RestoreConfig; import org.opends.server.types.ResultCode; import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.server.loggers.debug.DebugLogger.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * A backend that provides access to the changelog, ie the "cn=changelog" suffix. @@ -56,34 +68,89 @@ */ public class ChangelogBackend extends Backend { private static final DebugTracer TRACER = getTracer(); /** The DN for the base changelog entry. */ private DN baseChangelogDN; /** The set of base DNs for this backend. */ private DN[] baseDNs; /** The set of supported controls for this backend. */ private final Set<String> supportedControls = Collections.singleton(OID_ECL_COOKIE_EXCHANGE_CONTROL); /** {@inheritDoc} */ @Override public void configureBackend(Configuration cfg) throws ConfigException public void configureBackend(final Configuration cfg) throws ConfigException { throw new RuntimeException("Not implemented"); Validator.ensureNotNull(cfg); final ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn()); // Make sure that a configuration entry was provided. If not, then we will // not be able to complete initialization. if (configEntry == null) { throw new ConfigException(ERR_BACKEND_CONFIG_ENTRY_NULL.get(getBackendID())); } // Create the set of base DNs that we will handle. In this case, it's just // the DN of the base changelog entry. try { baseChangelogDN = DN.decode(DN_EXTERNAL_CHANGELOG_ROOT); } catch (final Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } throw new ConfigException( ERR_BACKEND_CANNOT_DECODE_BACKEND_ROOT_DN.get(getBackendID(), getExceptionMessage(e)), e); } this.baseDNs = new DN[] { baseChangelogDN }; } /** {@inheritDoc} */ @Override public void initializeBackend() throws ConfigException, InitializationException public void initializeBackend() throws ConfigException, InitializationException { throw new RuntimeException("Not implemented"); try { DirectoryServer.registerBaseDN(baseChangelogDN, this, true); } catch (final Exception e) { throw new InitializationException( ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(baseChangelogDN.toString(), getExceptionMessage(e)), e); } } /** {@inheritDoc} */ @Override public void finalizeBackend() { throw new RuntimeException("Not implemented"); try { DirectoryServer.deregisterBaseDN(baseChangelogDN); } catch (final Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } } /** {@inheritDoc} */ @Override public DN[] getBaseDNs() { throw new RuntimeException("Not implemented"); return baseDNs; } /** {@inheritDoc} */ @@ -111,6 +178,11 @@ @Override public Entry getEntry(DN entryDN) throws DirectoryException { if (entryDN == null) { throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID())); } throw new RuntimeException("Not implemented"); } @@ -134,7 +206,8 @@ public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException, CanceledOperationException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN()), getBackendID())); } /** {@inheritDoc} */ @@ -142,7 +215,8 @@ public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException, CanceledOperationException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_DELETE_NOT_SUPPORTED.get(String.valueOf(entryDN), getBackendID())); } /** {@inheritDoc} */ @@ -151,7 +225,8 @@ ModifyOperation modifyOperation) throws DirectoryException, CanceledOperationException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_MODIFY_NOT_SUPPORTED.get(String.valueOf(newEntry.getDN()), getBackendID())); } /** {@inheritDoc} */ @@ -160,7 +235,8 @@ ModifyDNOperation modifyDNOperation) throws DirectoryException, CanceledOperationException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN), getBackendID())); } /** {@inheritDoc} */ @@ -175,21 +251,21 @@ @Override public Set<String> getSupportedControls() { throw new RuntimeException("Not implemented"); return supportedControls; } /** {@inheritDoc} */ @Override public Set<String> getSupportedFeatures() { throw new RuntimeException("Not implemented"); return Collections.emptySet(); } /** {@inheritDoc} */ @Override public boolean supportsLDIFExport() { throw new RuntimeException("Not implemented"); return false; } /** {@inheritDoc} */ @@ -197,14 +273,15 @@ public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { throw new RuntimeException("Not implemented"); return false; } /** {@inheritDoc} */ @@ -212,7 +289,8 @@ public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_IMPORT_AND_EXPORT_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @@ -234,7 +312,8 @@ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @@ -242,7 +321,8 @@ public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ @@ -257,7 +337,8 @@ public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { throw new RuntimeException("Not implemented"); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(getBackendID())); } /** {@inheritDoc} */ opends/src/server/org/opends/server/backends/LDIFBackend.java
@@ -22,7 +22,7 @@ * * * Copyright 2007-2008 Sun Microsystems, Inc. * Portions Copyright 2011-2013 ForgeRock AS * Portions Copyright 2011-2014 ForgeRock AS */ package org.opends.server.backends; @@ -31,7 +31,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import org.opends.messages.Message; 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; @@ -41,7 +40,10 @@ import org.opends.server.core.*; import org.opends.server.loggers.debug.DebugTracer; import org.opends.server.types.*; import org.opends.server.util.*; import org.opends.server.util.LDIFException; import org.opends.server.util.LDIFReader; import org.opends.server.util.LDIFWriter; import org.opends.server.util.StaticUtils; import static org.opends.messages.BackendMessages.*; import static org.opends.server.loggers.ErrorLogger.*; @@ -57,7 +59,7 @@ * re-written on disk. */ public class LDIFBackend extends Backend extends Backend<LDIFBackendCfg> implements ConfigurationChangeListener<LDIFBackendCfg>, AlertGenerator { /** @@ -77,10 +79,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; @@ -113,10 +113,8 @@ backendLock = new ReentrantReadWriteLock(useFairLocking); } /** {@inheritDoc} */ @Override() @Override public void initializeBackend() throws ConfigException, InitializationException { @@ -323,10 +321,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void finalizeBackend() { backendLock.writeLock().lock(); @@ -357,19 +353,15 @@ } } /** {@inheritDoc} */ @Override() @Override public DN[] getBaseDNs() { return baseDNs; } /** {@inheritDoc} */ @Override() @Override public long getEntryCount() { backendLock.readLock().lock(); @@ -389,29 +381,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 { @@ -446,10 +432,8 @@ } } /** {@inheritDoc} */ @Override() @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -498,10 +482,8 @@ } } /** {@inheritDoc} */ @Override() @Override public Entry getEntry(DN entryDN) { backendLock.readLock().lock(); @@ -516,10 +498,8 @@ } } /** {@inheritDoc} */ @Override() @Override public boolean entryExists(DN entryDN) { backendLock.readLock().lock(); @@ -534,10 +514,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { @@ -611,10 +589,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { @@ -740,10 +716,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -784,10 +758,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException @@ -927,10 +899,8 @@ } } /** {@inheritDoc} */ @Override() @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -998,37 +968,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 { @@ -1085,19 +1047,15 @@ } } /** {@inheritDoc} */ @Override() @Override public boolean supportsLDIFImport() { return true; } /** {@inheritDoc} */ @Override() @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -1267,31 +1225,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 { @@ -1299,10 +1249,8 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** {@inheritDoc} */ @Override() @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException { @@ -1310,20 +1258,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 { @@ -1331,17 +1274,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) { Validator.ensureTrue(config instanceof LDIFBackendCfg); currentConfig = (LDIFBackendCfg) config; currentConfig = config; currentConfig.addLDIFChangeListener(this); baseDNs = new DN[currentConfig.getBaseDN().size()]; @@ -1355,17 +1294,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, @@ -1384,8 +1316,6 @@ return configAcceptable; } /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange( @@ -1419,8 +1349,6 @@ messages); } /** {@inheritDoc} */ @Override public DN getComponentEntryDN() @@ -1428,8 +1356,6 @@ return currentConfig.dn(); } /** {@inheritDoc} */ @Override public String getClassName() @@ -1437,8 +1363,6 @@ return LDIFBackend.class.getName(); } /** {@inheritDoc} */ @Override public Map<String,String> getAlerts() @@ -1451,8 +1375,6 @@ return alerts; } /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { opends/src/server/org/opends/server/backends/MemoryBackend.java
@@ -22,11 +22,11 @@ * * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ package org.opends.server.backends; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -34,7 +34,6 @@ import java.util.Set; import org.opends.messages.Message; import org.opends.server.admin.Configuration; import org.opends.server.admin.std.server.MemoryBackendCfg; import org.opends.server.api.Backend; import org.opends.server.config.ConfigException; @@ -67,15 +66,12 @@ import org.opends.server.util.LDIFException; import org.opends.server.util.LDIFReader; import org.opends.server.util.LDIFWriter; import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.server.loggers.debug.DebugLogger.*; 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 @@ -104,7 +100,7 @@ * entry has any children (which must not be the case for delete operations). */ public class MemoryBackend extends Backend extends Backend<MemoryBackendCfg> { /** * The tracer object for the debug logger. @@ -113,22 +109,20 @@ // 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; @@ -157,28 +151,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) { Validator.ensureTrue(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 { @@ -186,7 +173,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) { Message message = ERR_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE.get(); throw new ConfigException(message); @@ -201,11 +188,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 @@ -237,12 +219,8 @@ childDNs.clear(); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void finalizeBackend() { clearMemoryBackend(); @@ -263,23 +241,15 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public DN[] getBaseDNs() { return baseDNs; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized long getEntryCount() { if (entryMap != null) @@ -290,35 +260,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 @@ -338,10 +296,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -373,10 +329,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized Entry getEntry(DN entryDN) { Entry entry = entryMap.get(entryDN); @@ -388,23 +342,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 { @@ -454,12 +400,8 @@ children.add(entryDN); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException @@ -467,21 +409,14 @@ // Make sure the entry exists. If not, then throw an exception. if (! entryMap.containsKey(entryDN)) { Message message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(entryDN)); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, ERR_BACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(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) @@ -511,7 +446,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()) { Message message = ERR_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN. get(String.valueOf(entryDN)); @@ -541,12 +476,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -556,9 +487,8 @@ DN entryDN = e.getDN(); if (! entryMap.containsKey(entryDN)) { Message message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(entryDN)); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, ERR_BACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(entryDN), getBackendID())); } @@ -566,12 +496,8 @@ entryMap.put(entryDN, e); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException @@ -581,9 +507,8 @@ // Make sure that the target entry exists. if (! entryMap.containsKey(currentDN)) { Message message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(currentDN)); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, ERR_BACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(currentDN), getBackendID())); } @@ -635,7 +560,7 @@ // Make sure that the parent of the new entry exists. DN parentDN = e.getDN().getParentDNInSuffix(); if ((parentDN == null) || (! entryMap.containsKey(parentDN))) if (parentDN == null || !entryMap.containsKey(parentDN)) { Message message = ERR_MEMORYBACKEND_RENAME_PARENT_DOESNT_EXIST.get( String.valueOf(currentDN), String.valueOf(parentDN)); @@ -648,12 +573,8 @@ addEntry(e, null); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void search(SearchOperation searchOperation) throws DirectoryException { @@ -665,7 +586,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) @@ -679,7 +600,7 @@ } Message message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(baseDN)); ERR_BACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(baseDN), getBackendID()); throw new DirectoryException( ResultCode.NO_SUCH_OBJECT, message, matchedDN, null); } @@ -713,45 +634,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 { @@ -794,37 +699,19 @@ } finally { try { ldifWriter.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } close(ldifWriter); } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -904,37 +791,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 { @@ -942,12 +815,8 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException @@ -956,24 +825,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 { @@ -981,11 +841,7 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); opends/src/server/org/opends/server/backends/MonitorBackend.java
@@ -22,25 +22,21 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions copyright 2012 ForgeRock AS. * Portions copyright 2012-2014 ForgeRock AS. */ package org.opends.server.backends; import static org.opends.messages.BackendMessages.*; import static org.opends.messages.ConfigMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.loggers.debug.DebugLogger.debugEnabled; import static org.opends.server.loggers.debug.DebugLogger.getTracer; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.getExceptionMessage; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import static org.opends.server.util.StaticUtils.*; import java.util.*; import org.opends.messages.Message; 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; @@ -55,15 +51,13 @@ import org.opends.server.util.TimeThread; import org.opends.server.util.Validator; /** * This class defines a backend to hold Directory Server monitor entries. It * will not actually store anything, but upon request will retrieve the * 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> { /** @@ -71,31 +65,26 @@ */ private static final DebugTracer TRACER = getTracer(); // 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; /** @@ -108,25 +97,17 @@ super(); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(final Entry entry, final AddOperation addOperation) throws DirectoryException { final Message message = ERR_MONITOR_ADD_NOT_SUPPORTED.get(String .valueOf(entry.getDN())); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN()), getBackendID())); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange( final MonitorBackendCfg backendCfg) { @@ -184,19 +165,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 { Validator.ensureNotNull(config); Validator.ensureTrue(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 @@ -245,10 +221,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 @@ -273,51 +245,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 Message 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 { final Message message = ERR_MONITOR_DELETE_NOT_SUPPORTED.get(String .valueOf(entryDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_DELETE_NOT_SUPPORTED.get(String.valueOf(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 { @@ -354,17 +308,7 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } try { ldifWriter.close(); } catch (final Exception e2) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e2); } } close(ldifWriter); final Message message = ERR_MONITOR_UNABLE_TO_EXPORT_BASE .get(stackTraceToSingleLineString(e)); @@ -388,17 +332,7 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } try { ldifWriter.close(); } catch (final Exception e2) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e2); } } close(ldifWriter); final Message message = ERR_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY .get(monitorProvider.getMonitorInstanceName(), @@ -408,26 +342,11 @@ } } // Close the monitor provider and return. try { ldifWriter.close(); } catch (final Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } close(ldifWriter); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { currentConfig.removeMonitorChangeListener(this); @@ -444,31 +363,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 Message 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 @@ -491,45 +401,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 { @@ -552,26 +446,17 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(final LDIFImportConfig importConfig) throws DirectoryException { // This backend does not support LDIF imports. final Message 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 { @@ -596,11 +481,8 @@ } } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable( final MonitorBackendCfg backendCfg, final List<Message> unacceptableReasons) @@ -610,12 +492,8 @@ return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean isIndexed(final AttributeType attributeType, final IndexType indexType) { @@ -623,24 +501,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 { @@ -668,51 +538,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 Message 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 { final Message message = ERR_MONITOR_MODIFY_DN_NOT_SUPPORTED.get(String .valueOf(currentDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(final Entry oldEntry, final Entry newEntry, final ModifyOperation modifyOperation) throws DirectoryException { @@ -721,26 +573,17 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void restoreBackup(final RestoreConfig restoreConfig) throws DirectoryException { // This backend does not provide a backup/restore mechanism. final Message 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 { @@ -765,10 +608,8 @@ } matchedDN = matchedDN.getParent(); } final Message message = ERR_MEMORYBACKEND_ENTRY_DOESNT_EXIST.get(String .valueOf(baseDN)); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null); final Message message = ERR_BACKEND_ENTRY_DOESNT_EXIST.get(String.valueOf(baseDN), getBackendID()); throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, matchedDN, null); } // Walk through all entries and send the ones that match. @@ -792,37 +633,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. @@ -831,27 +658,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; } @@ -939,13 +756,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 Message upTimeStr = INFO_MONITOR_UPTIME.get(upDays, upHours, upMinutes, upSeconds); @@ -1209,17 +1025,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()); } } opends/src/server/org/opends/server/backends/NullBackend.java
@@ -22,19 +22,20 @@ * * * Copyright 2008 Sun Microsystems, Inc. * Portions Copyright 2014 ForgeRock AS */ 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.opends.messages.Category; import org.opends.messages.Message; import org.opends.messages.Severity; import org.opends.server.admin.Configuration; import org.opends.server.admin.std.server.BackendCfg; import org.opends.server.api.Backend; import org.opends.server.config.ConfigException; @@ -65,15 +66,12 @@ import org.opends.server.util.LDIFException; import org.opends.server.util.LDIFReader; import org.opends.server.util.LDIFWriter; import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.server.loggers.debug.DebugLogger.*; 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 @@ -102,7 +100,7 @@ * 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> { /** * The tracer object for the debug logger. @@ -111,19 +109,21 @@ // 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; @@ -151,27 +151,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) { Validator.ensureTrue(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 { @@ -181,17 +175,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) { @@ -249,10 +232,8 @@ objectClasses.put(extOC, extOCName); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public synchronized void finalizeBackend() { for (DN dn : baseDNs) @@ -271,47 +252,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 @@ -319,68 +290,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 @@ -388,10 +345,8 @@ return; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -409,37 +364,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 { @@ -458,28 +405,18 @@ message); } try { ldifWriter.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } close(ldifWriter); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -555,31 +492,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 { @@ -589,10 +518,8 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException @@ -603,20 +530,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 { @@ -626,9 +548,7 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); opends/src/server/org/opends/server/backends/RootDSEBackend.java
@@ -22,18 +22,15 @@ * * * Copyright 2006-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2012 ForgeRock AS * Portions Copyright 2011-2014 ForgeRock AS */ package org.opends.server.backends; import java.util.ArrayList; import java.util.Arrays; 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; @@ -45,7 +42,6 @@ import javax.net.ssl.SSLParameters; import org.opends.messages.Message; 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; @@ -65,16 +61,13 @@ import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.messages.ConfigMessages. ERR_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY; import static org.opends.messages.ConfigMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.loggers.debug.DebugLogger.*; import static org.opends.server.loggers.ErrorLogger.*; import static org.opends.server.loggers.debug.DebugLogger.*; import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This class defines a backend to hold the Directory Server root DSE. It is a * kind of meta-backend in that it will dynamically generate the root DSE entry @@ -88,53 +81,51 @@ * with the other backends. */ public class RootDSEBackend extends Backend extends Backend<RootDSEBackendCfg> implements ConfigurationChangeListener<RootDSEBackendCfg> { /** * The tracer object for the debug logger. */ /** The tracer object for the debug logger. */ private static final DebugTracer TRACER = getTracer(); // 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; /** @@ -149,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 { Validator.ensureNotNull(config); Validator.ensureTrue(config instanceof RootDSEBackendCfg); currentConfig = (RootDSEBackendCfg)config; currentConfig = config; configEntryDN = config.dn(); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void initializeBackend() throws ConfigException, InitializationException { @@ -270,12 +251,10 @@ // 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())); @@ -298,11 +277,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__"); @@ -312,12 +286,8 @@ currentConfig.addChangeListener(this); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { currentConfig.removeChangeListener(this); @@ -337,69 +307,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 { @@ -418,12 +363,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -468,17 +409,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.isNullDN()) if (entryDN == null || entryDN.isNullDN()) { return getRootDSE(); } @@ -560,127 +497,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. @@ -693,22 +540,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. @@ -722,8 +554,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); @@ -769,62 +601,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 { @@ -832,13 +630,9 @@ if (attrs == null) { attrs = new ArrayList<Attribute>(); attrs.add(a); dseUserAttrs.put(type, attrs); } else { attrs.add(a); } attrs.add(a); } } @@ -848,19 +642,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 { @@ -868,13 +658,9 @@ if (attrs == null) { attrs = new ArrayList<Attribute>(); attrs.add(a); dseUserAttrs.put(type, attrs); } else { attrs.add(a); } attrs.add(a); } } @@ -888,6 +674,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 @@ -927,26 +733,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. * @@ -1008,12 +794,8 @@ return builder.toAttribute(); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean entryExists(DN entryDN) throws DirectoryException { @@ -1052,40 +834,26 @@ return false; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { Message message = ERR_ROOTDSE_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN())); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN()), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { Message message = ERR_ROOTDSE_DELETE_NOT_SUPPORTED.get(String.valueOf(entryDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_DELETE_NOT_SUPPORTED.get(String.valueOf(entryDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -1094,27 +862,18 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException { Message message = ERR_ROOTDSE_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException, CanceledOperationException { DN baseDN = searchOperation.getBaseDN(); @@ -1157,7 +916,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); } @@ -1241,46 +1000,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 { @@ -1324,144 +1067,85 @@ } finally { try { ldifWriter.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, 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. Message 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. Message 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. Message 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. Message 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<Message> unacceptableReasons) { RootDSEBackendCfg config = (RootDSEBackendCfg) configuration; return isConfigurationChangeAcceptable(config, unacceptableReasons); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable( RootDSEBackendCfg cfg, @@ -1509,11 +1193,7 @@ return configIsAcceptable; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange(RootDSEBackendCfg cfg) { @@ -1629,8 +1309,7 @@ if (subordinateBaseDNs == null) { Message message = INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get(); messages.add(message); messages.add(INFO_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS.get()); } else { @@ -1668,22 +1347,16 @@ userDefinedAttributes = userAttrs; Message message = INFO_ROOTDSE_USING_NEW_USER_ATTRS.get(); messages.add(message); messages.add(INFO_ROOTDSE_USING_NEW_USER_ATTRS.get()); } return new ConfigChangeResult(resultCode, adminActionRequired, messages); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); } } opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -26,8 +26,6 @@ */ package org.opends.server.backends; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -37,6 +35,7 @@ import java.security.MessageDigest; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -55,7 +54,6 @@ import javax.crypto.Mac; import org.opends.messages.Message; import org.opends.server.admin.Configuration; import org.opends.server.admin.std.server.SchemaBackendCfg; import org.opends.server.admin.server.ConfigurationChangeListener; import org.opends.server.api.AlertGenerator; @@ -86,7 +84,6 @@ import org.opends.server.util.LDIFException; import org.opends.server.util.LDIFReader; import org.opends.server.util.LDIFWriter; import org.opends.server.util.Validator; import static org.opends.messages.BackendMessages.*; import static org.opends.messages.ConfigMessages.*; @@ -98,14 +95,12 @@ import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This class defines a backend to hold the Directory Server schema information. * 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 { /** @@ -228,12 +223,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 +246,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) { Message message = ERR_SCHEMA_CONFIG_ENTRY_NULL.get(); throw new ConfigException(message); } Validator.ensureTrue(config instanceof SchemaBackendCfg); SchemaBackendCfg cfg = (SchemaBackendCfg)config; ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn()); configEntryDN = configEntry.getDN(); @@ -320,11 +302,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()]; @@ -381,12 +358,8 @@ currentConfig = cfg; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void initializeBackend() throws ConfigException, InitializationException { @@ -451,8 +424,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); @@ -525,12 +497,8 @@ currentConfig.addSchemaChangeListener(this); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { currentConfig.removeSchemaChangeListener(this); @@ -580,83 +548,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 { @@ -726,8 +666,7 @@ AttributeType attrType = rdn.getAttributeType(i); Attribute a = Attributes.create(attrType, rdn .getAttributeValue(i)); ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(a); ArrayList<Attribute> attrList = newArrayList(a); if (attrType.isOperational()) { @@ -805,10 +744,9 @@ builder.addAll(valueSet); } ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); if (attributeTypesType.isOperational() && (ignoreShowAllOption || (!showAllAttributes))) ArrayList<Attribute> attrList = newArrayList(builder.toAttribute()); if (attributeTypesType.isOperational() && (ignoreShowAllOption || !showAllAttributes)) { operationalAttrs.put(attributeTypesType, attrList); } @@ -850,11 +788,10 @@ builder = new AttributeBuilder(objectClassesType, ATTR_OBJECTCLASSES); builder.addAll(valueSet); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); attrList = newArrayList(builder.toAttribute()); if (objectClassesType.isOperational() && (ignoreShowAllOption || (!showAllAttributes))) if (objectClassesType.isOperational() && (ignoreShowAllOption || !showAllAttributes)) { operationalAttrs.put(objectClassesType, attrList); } @@ -866,11 +803,10 @@ // Add the "matchingRules" attribute. builder = new AttributeBuilder(matchingRulesType, ATTR_MATCHING_RULES); builder.addAll(DirectoryServer.getMatchingRuleSet()); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); attrList = newArrayList(builder.toAttribute()); if (matchingRulesType.isOperational() && (ignoreShowAllOption || (!showAllAttributes))) if (matchingRulesType.isOperational() && (ignoreShowAllOption || !showAllAttributes)) { operationalAttrs.put(matchingRulesType, attrList); } @@ -882,8 +818,7 @@ // Add the "ldapSyntaxes" attribute. builder = new AttributeBuilder(ldapSyntaxesType, ATTR_LDAP_SYNTAXES); builder.addAll(DirectoryServer.getAttributeSyntaxSet()); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); attrList = newArrayList(builder.toAttribute()); // Note that we intentionally ignore showAllAttributes for // attribute syntaxes, name forms, matching rule uses, DIT content @@ -901,92 +836,20 @@ userAttrs.put(ldapSyntaxesType, attrList); } // If there are any name forms defined, then add them. valueSet = DirectoryServer.getNameFormSet(); if (!valueSet.isEmpty()) { builder = new AttributeBuilder(nameFormsType, ATTR_NAME_FORMS); builder.addAll(valueSet); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); if (nameFormsType.isOperational()) { operationalAttrs.put(nameFormsType, attrList); } else { userAttrs.put(nameFormsType, attrList); } } // If there are any DIT content rules defined, then add them. valueSet = DirectoryServer.getDITContentRuleSet(); if (!valueSet.isEmpty()) { builder = new AttributeBuilder(ditContentRulesType, ATTR_DIT_CONTENT_RULES); builder.addAll(valueSet); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); if (ditContentRulesType.isOperational()) { operationalAttrs.put(ditContentRulesType, attrList); } else { userAttrs.put(ditContentRulesType, attrList); } } // If there are any DIT structure rules defined, then add them. valueSet = DirectoryServer.getDITStructureRuleSet(); if (!valueSet.isEmpty()) { builder = new AttributeBuilder(ditStructureRulesType, ATTR_DIT_STRUCTURE_RULES); builder.addAll(valueSet); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); if (ditStructureRulesType.isOperational()) { operationalAttrs.put(ditStructureRulesType, attrList); } else { userAttrs.put(ditStructureRulesType, attrList); } } // If there are any matching rule uses defined, then add them. valueSet = DirectoryServer.getMatchingRuleUseSet(); if (!valueSet.isEmpty()) { builder = new AttributeBuilder(matchingRuleUsesType, ATTR_MATCHING_RULE_USE); builder.addAll(valueSet); attrList = new ArrayList<Attribute>(1); attrList.add(builder.toAttribute()); if (matchingRuleUsesType.isOperational()) { operationalAttrs.put(matchingRuleUsesType, attrList); } else { userAttrs.put(matchingRuleUsesType, attrList); } } addAttributeIfValuesExist(nameFormsType, ATTR_NAME_FORMS, DirectoryServer.getNameFormSet(), userAttrs, operationalAttrs); addAttributeIfValuesExist(ditContentRulesType, ATTR_DIT_CONTENT_RULES, DirectoryServer.getDITContentRuleSet(), userAttrs, operationalAttrs); addAttributeIfValuesExist(ditStructureRulesType, ATTR_DIT_STRUCTURE_RULES, DirectoryServer.getDITStructureRuleSet(), userAttrs, operationalAttrs); addAttributeIfValuesExist(matchingRuleUsesType, ATTR_MATCHING_RULE_USE, DirectoryServer.getMatchingRuleUseSet(), userAttrs, operationalAttrs); // Add the lastmod attributes. attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(creatorsNameType, creatorsName)); attrList = newArrayList(Attributes.create(creatorsNameType, creatorsName)); operationalAttrs.put(creatorsNameType, attrList); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(createTimestampType, createTimestamp)); attrList = newArrayList(Attributes.create(createTimestampType, createTimestamp)); operationalAttrs.put(createTimestampType, attrList); if (DirectoryServer.getSchema().getYoungestModificationTime() != modifyTime) @@ -999,12 +862,10 @@ } } attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(modifiersNameType, modifiersName)); attrList = newArrayList(Attributes.create(modifiersNameType, modifiersName)); operationalAttrs.put(modifiersNameType, attrList); attrList = new ArrayList<Attribute>(1); attrList.add(Attributes.create(modifyTimestampType, modifyTimestamp)); attrList = newArrayList(Attributes.create(modifyTimestampType, modifyTimestamp)); operationalAttrs.put(modifyTimestampType, attrList); // Add the extra attributes. @@ -1012,8 +873,7 @@ .getExtraAttributes(); for (Attribute attribute : attributes.values()) { attrList = new ArrayList<Attribute>(1); attrList.add(attribute); attrList = newArrayList(attribute); operationalAttrs.put(attribute.getAttributeType(), attrList); } @@ -1028,13 +888,9 @@ if (attrs == null) { attrs = new ArrayList<Attribute>(); attrs.add(a); operationalAttrs.put(type, attrs); } else { attrs.add(a); } attrs.add(a); } else { @@ -1042,13 +898,9 @@ if (attrs == null) { attrs = new ArrayList<Attribute>(); attrs.add(a); userAttrs.put(type, attrs); } else { attrs.add(a); } attrs.add(a); } } @@ -1059,12 +911,38 @@ return e; } /** If there are any values defined, then add them. */ private void addAttributeIfValuesExist(final AttributeType attrType, final String attrName, final Set<AttributeValue> valueSet, final Map<AttributeType, List<Attribute>> userAttrs, final Map<AttributeType, List<Attribute>> operationalAttrs) { if (!valueSet.isEmpty()) { AttributeBuilder builder = new AttributeBuilder(attrType, attrName); builder.addAll(valueSet); ArrayList<Attribute> attrList = newArrayList(builder.toAttribute()); if (attrType.isOperational()) { operationalAttrs.put(attrType, attrList); } else { userAttrs.put(attrType, attrList); } } } /** * {@inheritDoc} */ @Override() private ArrayList<Attribute> newArrayList(Attribute a) { ArrayList<Attribute> attrList = new ArrayList<Attribute>(1); attrList.add(a); return attrList; } /** {@inheritDoc} */ @Override public boolean entryExists(DN entryDN) throws DirectoryException { @@ -1081,40 +959,26 @@ return false; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { Message message = ERR_SCHEMA_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN())); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_ADD_NOT_SUPPORTED.get(String.valueOf(entry.getDN()), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { Message message = ERR_SCHEMA_DELETE_NOT_SUPPORTED.get(String.valueOf(entryDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_DELETE_NOT_SUPPORTED.get(String.valueOf(entryDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -1555,8 +1419,8 @@ case REPLACE: if ((!m.isInternal()) && (!modifyOperation.isSynchronizationOperation())) if (!m.isInternal() && !modifyOperation.isSynchronizationOperation()) { Message message = ERR_SCHEMA_INVALID_MODIFICATION_TYPE.get( String.valueOf(m.getModificationType())); @@ -1749,7 +1613,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()) { Message message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get( attributeType.getNameOrOID(), mr.getNameOrOID()); @@ -1757,7 +1621,7 @@ } mr = attributeType.getOrderingMatchingRule(); if ((mr != null) && mr.isObsolete()) if (mr != null && mr.isObsolete()) { Message message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get( attributeType.getNameOrOID(), mr.getNameOrOID()); @@ -1765,7 +1629,7 @@ } mr = attributeType.getSubstringMatchingRule(); if ((mr != null) && mr.isObsolete()) if (mr != null && mr.isObsolete()) { Message message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get( attributeType.getNameOrOID(), mr.getNameOrOID()); @@ -1773,7 +1637,7 @@ } mr = attributeType.getApproximateMatchingRule(); if ((mr != null) && mr.isObsolete()) if (mr != null && mr.isObsolete()) { Message message = ERR_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR.get( attributeType.getNameOrOID(), mr.getNameOrOID()); @@ -1787,7 +1651,7 @@ { schema.registerAttributeType(attributeType, false); String schemaFile = attributeType.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; attributeType.setSchemaFile(schemaFile); @@ -1801,11 +1665,11 @@ schema.registerAttributeType(attributeType, false); schema.rebuildDependentElements(existingType); if ((attributeType.getSchemaFile() == null) || (attributeType.getSchemaFile().length() == 0)) if (attributeType.getSchemaFile() == null || attributeType.getSchemaFile().length() == 0) { String schemaFile = existingType.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -1817,13 +1681,9 @@ { String newSchemaFile = attributeType.getSchemaFile(); String oldSchemaFile = existingType.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -1868,7 +1728,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)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_ATTRIBUTE_TYPE.get( attributeType.getNameOrOID()); @@ -1884,8 +1744,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; } @@ -1927,7 +1787,7 @@ for (AttributeType at : schema.getAttributeTypes().values()) { AttributeType superiorType = at.getSuperiorType(); if ((superiorType != null) && superiorType.equals(removeType)) if (superiorType != null && superiorType.equals(removeType)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_AT_SUPERIOR_TYPE.get( removeType.getNameOrOID(), superiorType.getNameOrOID()); @@ -2119,7 +1979,7 @@ { schema.registerObjectClass(objectClass, false); String schemaFile = objectClass.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; objectClass.setSchemaFile(schemaFile); @@ -2133,11 +1993,11 @@ schema.registerObjectClass(objectClass, false); schema.rebuildDependentElements(existingClass); if ((objectClass.getSchemaFile() == null) || (objectClass.getSchemaFile().length() == 0)) if (objectClass.getSchemaFile() == null || objectClass.getSchemaFile().length() == 0) { String schemaFile = existingClass.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -2149,13 +2009,9 @@ { String newSchemaFile = objectClass.getSchemaFile(); String oldSchemaFile = existingClass.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -2199,7 +2055,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)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_OBJECTCLASS.get( objectClass.getNameOrOID()); @@ -2215,8 +2071,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; } @@ -2425,7 +2281,7 @@ { schema.registerNameForm(nameForm, false); String schemaFile = nameForm.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; nameForm.setSchemaFile(schemaFile); @@ -2439,11 +2295,11 @@ schema.registerNameForm(nameForm, false); schema.rebuildDependentElements(existingNF); if ((nameForm.getSchemaFile() == null) || (nameForm.getSchemaFile().length() == 0)) if (nameForm.getSchemaFile() == null || nameForm.getSchemaFile().length() == 0) { String schemaFile = existingNF.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -2455,13 +2311,9 @@ { String newSchemaFile = nameForm.getSchemaFile(); String oldSchemaFile = existingNF.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -2504,7 +2356,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)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_NAME_FORM.get( nameForm.getNameOrOID()); @@ -2520,8 +2372,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; } @@ -2636,7 +2488,7 @@ ObjectClass structuralClass = ditContentRule.getStructuralClass(); DITContentRule existingRuleForClass = schema.getDITContentRule(structuralClass); if ((existingRuleForClass != null) && (existingRuleForClass != existingDCR)) if (existingRuleForClass != null && existingRuleForClass != existingDCR) { Message message = ERR_SCHEMA_MODIFY_STRUCTURAL_OC_CONFLICT_FOR_ADD_DCR. get(ditContentRule.getName(), structuralClass.getNameOrOID(), @@ -2746,7 +2598,7 @@ { schema.registerDITContentRule(ditContentRule, false); String schemaFile = ditContentRule.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; ditContentRule.setSchemaFile(schemaFile); @@ -2760,11 +2612,11 @@ schema.registerDITContentRule(ditContentRule, false); schema.rebuildDependentElements(existingDCR); if ((ditContentRule.getSchemaFile() == null) || (ditContentRule.getSchemaFile().length() == 0)) if (ditContentRule.getSchemaFile() == null || ditContentRule.getSchemaFile().length() == 0) { String schemaFile = existingDCR.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -2776,13 +2628,9 @@ { String newSchemaFile = ditContentRule.getSchemaFile(); String oldSchemaFile = existingDCR.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -2828,7 +2676,7 @@ // schema. If not, then fail. DITContentRule removeDCR = schema.getDITContentRule(ditContentRule.getStructuralClass()); if ((removeDCR == null) || (! removeDCR.equals(ditContentRule))) if (removeDCR == null || !removeDCR.equals(ditContentRule)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_DCR.get(ditContentRule.getName()); @@ -2888,7 +2736,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) { Message message = ERR_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_DSR. get(ditStructureRule.getNameOrRuleID(), @@ -2922,8 +2770,8 @@ NameForm nameForm = ditStructureRule.getNameForm(); DITStructureRule existingRuleForNameForm = schema.getDITStructureRule(nameForm); if ((existingRuleForNameForm != null) && (existingRuleForNameForm != existingDSR)) if (existingRuleForNameForm != null && existingRuleForNameForm != existingDSR) { Message message = ERR_SCHEMA_MODIFY_NAME_FORM_CONFLICT_FOR_ADD_DSR. get(ditStructureRule.getNameOrRuleID(), nameForm.getNameOrOID(), @@ -2967,7 +2815,7 @@ { schema.registerDITStructureRule(ditStructureRule, false); String schemaFile = ditStructureRule.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; ditStructureRule.setSchemaFile(schemaFile); @@ -2981,11 +2829,11 @@ schema.registerDITStructureRule(ditStructureRule, false); schema.rebuildDependentElements(existingDSR); if ((ditStructureRule.getSchemaFile() == null) || (ditStructureRule.getSchemaFile().length() == 0)) if (ditStructureRule.getSchemaFile() == null || ditStructureRule.getSchemaFile().length() == 0) { String schemaFile = existingDSR.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -2997,13 +2845,9 @@ { String newSchemaFile = ditStructureRule.getSchemaFile(); String oldSchemaFile = existingDSR.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -3049,7 +2893,7 @@ // schema. If not, then fail. DITStructureRule removeDSR = schema.getDITStructureRule(ditStructureRule.getRuleID()); if ((removeDSR == null) || (! removeDSR.equals(ditStructureRule))) if (removeDSR == null || !removeDSR.equals(ditStructureRule)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_DSR.get( ditStructureRule.getNameOrRuleID()); @@ -3065,8 +2909,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; } @@ -3189,7 +3033,7 @@ MatchingRule matchingRule = matchingRuleUse.getMatchingRule(); MatchingRuleUse existingMRUForRule = schema.getMatchingRuleUse(matchingRule); if ((existingMRUForRule != null) && (existingMRUForRule != existingMRU)) if (existingMRUForRule != null && existingMRUForRule != existingMRU) { Message message = ERR_SCHEMA_MODIFY_MR_CONFLICT_FOR_ADD_MR_USE. get(matchingRuleUse.getName(), matchingRule.getNameOrOID(), @@ -3230,7 +3074,7 @@ { schema.registerMatchingRuleUse(matchingRuleUse, false); String schemaFile = matchingRuleUse.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; matchingRuleUse.setSchemaFile(schemaFile); @@ -3244,11 +3088,11 @@ schema.registerMatchingRuleUse(matchingRuleUse, false); schema.rebuildDependentElements(existingMRU); if ((matchingRuleUse.getSchemaFile() == null) || (matchingRuleUse.getSchemaFile().length() == 0)) if (matchingRuleUse.getSchemaFile() == null || matchingRuleUse.getSchemaFile().length() == 0) { String schemaFile = existingMRU.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -3260,13 +3104,9 @@ { String newSchemaFile = matchingRuleUse.getSchemaFile(); String oldSchemaFile = existingMRU.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -3313,7 +3153,7 @@ // schema. If not, then fail. MatchingRuleUse removeMRU = schema.getMatchingRuleUse(matchingRuleUse.getMatchingRule()); if ((removeMRU == null) || (! removeMRU.equals(matchingRuleUse))) if (removeMRU == null || !removeMRU.equals(matchingRuleUse)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_MR_USE.get( matchingRuleUse.getName()); @@ -3379,7 +3219,7 @@ { schema.registerLdapSyntaxDescription(ldapSyntaxDesc, false); String schemaFile = ldapSyntaxDesc.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; ldapSyntaxDesc.setSchemaFile(schemaFile); @@ -3393,11 +3233,11 @@ schema.registerLdapSyntaxDescription(ldapSyntaxDesc, false); schema.rebuildDependentElements(existingLSD); if ((ldapSyntaxDesc.getSchemaFile() == null) || (ldapSyntaxDesc.getSchemaFile().length() == 0)) if (ldapSyntaxDesc.getSchemaFile() == null || ldapSyntaxDesc.getSchemaFile().length() == 0) { String schemaFile = ldapSyntaxDesc.getSchemaFile(); if ((schemaFile == null) || (schemaFile.length() == 0)) if (schemaFile == null || schemaFile.length() == 0) { schemaFile = FILE_USER_SCHEMA_ELEMENTS; } @@ -3409,13 +3249,9 @@ { String newSchemaFile = ldapSyntaxDesc.getSchemaFile(); String oldSchemaFile = existingLSD.getSchemaFile(); if ((oldSchemaFile == null) || oldSchemaFile.equals(newSchemaFile)) modifiedSchemaFiles.add(newSchemaFile); if (oldSchemaFile != null && !oldSchemaFile.equals(newSchemaFile)) { modifiedSchemaFiles.add(newSchemaFile); } else { modifiedSchemaFiles.add(newSchemaFile); modifiedSchemaFiles.add(oldSchemaFile); } } @@ -3424,7 +3260,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) @@ -3437,7 +3273,7 @@ String oid = ldapSyntaxDesc.getLdapSyntaxDescriptionSyntax().getOID(); LDAPSyntaxDescription removeLSD = schema.getLdapSyntaxDescription(oid); if ((removeLSD == null) || (! removeLSD.equals(ldapSyntaxDesc))) if (removeLSD == null || !removeLSD.equals(ldapSyntaxDesc)) { Message message = ERR_SCHEMA_MODIFY_REMOVE_NO_SUCH_LSD.get(oid); @@ -3690,13 +3526,12 @@ } 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); } } @@ -3751,9 +3586,9 @@ } AttributeType superiorType = attributeType.getSuperiorType(); if ((superiorType != null) && if (superiorType != null && schemaFile.equals(superiorType.getSchemaFile()) && (! addedTypes.contains(superiorType))) !addedTypes.contains(superiorType)) { addAttrTypeToSchemaFile(schema, schemaFile, superiorType, values, addedTypes, depth+1); @@ -3804,7 +3639,7 @@ for(ObjectClass superiorClass : objectClass.getSuperiorClasses()) { if (schemaFile.equals(superiorClass.getSchemaFile()) && (! addedClasses.contains(superiorClass))) !addedClasses.contains(superiorClass)) { addObjectClassToSchemaFile(schema, schemaFile, superiorClass, values, addedClasses, depth+1); @@ -3854,7 +3689,7 @@ for (DITStructureRule dsr : ditStructureRule.getSuperiorRules()) { if (schemaFile.equals(dsr.getSchemaFile()) && (! addedDSRs.contains(dsr))) if (schemaFile.equals(dsr.getSchemaFile()) && !addedDSRs.contains(dsr)) { addDITStructureRuleToSchemaFile(schema, schemaFile, dsr, values, addedDSRs, depth+1); @@ -3937,12 +3772,9 @@ { try { if (f.exists()) if (f.exists() && !f.delete()) { if (! f.delete()) { allCleaned = false; } allCleaned = false; } } catch (Exception e2) @@ -4023,12 +3855,9 @@ try { if (origFile.exists()) if (origFile.exists() && !origFile.renameTo(installedFile)) { if (! origFile.renameTo(installedFile)) { allRestored = false; } allRestored = false; } } catch (Exception e2) @@ -4134,21 +3963,7 @@ } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } } close(inputStream); if (outputStream != null) { outputStream.close(); @@ -4167,7 +3982,7 @@ */ private void cleanUpTempSchemaFiles(HashMap<String,File> tempSchemaFiles) { if ((tempSchemaFiles == null) || tempSchemaFiles.isEmpty()) if (tempSchemaFiles == null || tempSchemaFiles.isEmpty()) { return; } @@ -4191,27 +4006,18 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException { Message message = ERR_SCHEMA_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN)); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_BACKEND_MODIFY_DN_NOT_SUPPORTED.get(String.valueOf(currentDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -4245,8 +4051,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.SUBORDINATE_SUBTREE)) if (scope == SearchScope.SINGLE_LEVEL || scope == SearchScope.SUBORDINATE_SUBTREE) { return; } @@ -4262,46 +4068,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 { @@ -4345,37 +4135,19 @@ } finally { try { ldifWriter.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } close(ldifWriter); } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -4501,7 +4273,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) { @@ -4513,8 +4285,7 @@ AttributeType attrType = AttributeTypeSyntax.decodeAttributeType( v.getValue(), schema, false); String schemaFile = attrType.getSchemaFile(); 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 @@ -4529,8 +4300,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); @@ -4566,9 +4337,8 @@ for (AttributeType removeType : currentAttrTypes.values()) { String schemaFile = removeType.getSchemaFile(); 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 @@ -4619,7 +4389,7 @@ oidList.clear(); List<Attribute> ocList = newSchemaEntry.getAttribute(objectclassAttrType); if ((ocList != null) && (! ocList.isEmpty())) if (ocList != null && !ocList.isEmpty()) { for (Attribute a : ocList) { @@ -4630,8 +4400,7 @@ ObjectClass newObjectClass = ObjectClassSyntax.decodeObjectClass( v.getValue(), newSchema, true); String schemaFile = newObjectClass.getSchemaFile(); 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 @@ -4651,8 +4420,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); @@ -4688,8 +4457,7 @@ for (ObjectClass removeClass : currentObjectClasses.values()) { String schemaFile = removeClass.getSchemaFile(); 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 @@ -4716,24 +4484,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) { @@ -4744,12 +4504,8 @@ return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -4948,12 +4704,7 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } try { zipStream.close(); } catch (Exception e2) { } close(zipStream); message = ERR_SCHEMA_BACKUP_CANNOT_BACKUP_SCHEMA_FILE.get(commentName, stackTraceToSingleLineString(e)); @@ -5057,22 +4808,7 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } try { if (inputStream != null) { inputStream.close(); } } catch (Exception e2) { } try { zipStream.close(); } catch (Exception e2) { } close(inputStream, zipStream); message = ERR_SCHEMA_BACKUP_CANNOT_BACKUP_SCHEMA_FILE.get(baseName, stackTraceToSingleLineString(e)); @@ -5145,12 +4881,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException @@ -5205,24 +4937,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 { @@ -5523,7 +5247,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 @@ -5698,11 +5422,7 @@ logError(message); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable( SchemaBackendCfg configEntry, @@ -5711,11 +5431,7 @@ return true; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange( SchemaBackendCfg backendCfg) @@ -5905,33 +5621,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() { @@ -5945,11 +5649,7 @@ return alerts; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); opends/src/server/org/opends/server/backends/TrustStoreBackend.java
@@ -22,12 +22,10 @@ * * * Copyright 2007-2010 Sun Microsystems, Inc. * Portions Copyright 2011 ForgeRock AS * Portions Copyright 2011-2014 ForgeRock AS */ package org.opends.server.backends; import static org.opends.messages.BackendMessages.*; import static org.opends.server.config.ConfigConstants.*; import static org.opends.server.loggers.debug.DebugLogger.*; @@ -48,12 +46,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; @@ -62,7 +61,6 @@ import javax.net.ssl.TrustManagerFactory; import org.opends.messages.Message; 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; @@ -76,18 +74,16 @@ import org.opends.server.loggers.ErrorLogger; import org.opends.server.loggers.debug.DebugTracer; import org.opends.server.types.*; import org.opends.server.types.FilePermission; import org.opends.server.util.CertificateManager; import org.opends.server.util.SetupUtils; import org.opends.server.util.Validator; /** * 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> { /** @@ -97,34 +93,28 @@ // 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; @@ -141,26 +131,16 @@ // Perform all initialization in initializeBackend. } /** * {@inheritDoc} */ @Override() public void configureBackend(Configuration config) throws ConfigException /** {@inheritDoc} */ @Override public void configureBackend(TrustStoreBackendCfg config) throws ConfigException { Validator.ensureNotNull(config); Validator.ensureTrue(config instanceof TrustStoreBackendCfg); configuration = (TrustStoreBackendCfg)config; configuration = config; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void initializeBackend() throws ConfigException, InitializationException { @@ -278,12 +258,7 @@ } finally { try { br.close(); } catch (Exception e) { // ignore } close(br); } if (pinStr == null) @@ -366,11 +341,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); @@ -393,12 +363,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { configuration.addTrustStoreChangeListener(this); @@ -416,23 +382,15 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public DN[] getBaseDNs() { return baseDNs; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long getEntryCount() { int numEntries = 1; @@ -456,45 +414,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) { Message message = ERR_TRUSTSTORE_GET_ENTRY_NULL.get(); throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message); ERR_BACKEND_GET_ENTRY_NULL.get(getBackendID())); } @@ -508,11 +452,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 { @@ -520,13 +460,13 @@ } catch (DirectoryException e) { return null; if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.VERBOSE, e); } } } else { return null; } return null; } @@ -618,12 +558,8 @@ return e; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { @@ -657,12 +593,8 @@ } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { @@ -684,39 +616,27 @@ deleteCertificate(entryDN); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { Message 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(String.valueOf(oldEntry.getDN()), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException { Message 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(String.valueOf(currentDN), getBackendID())); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -732,13 +652,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; @@ -759,7 +676,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); @@ -795,13 +712,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 @@ -811,165 +725,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 { Message 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. Message 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. Message 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. Message 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. Message 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 { @@ -977,12 +830,8 @@ ERR_HAS_SUBORDINATES_NOT_SUPPORTED.get()); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -990,11 +839,8 @@ ERR_NUM_SUBORDINATES_NOT_SUPPORTED.get()); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable( TrustStoreBackendCfg configuration, List<Message> unacceptableReasons) { @@ -1057,32 +903,26 @@ // 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) { Message message = ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get( String.valueOf(pinProp), String.valueOf(cfgEntryDN)); unacceptableReasons.add(message); configAcceptable = false; } Message message = ERR_TRUSTSTORE_PIN_PROPERTY_NOT_SET.get( String.valueOf(pinProp), String.valueOf(cfgEntryDN)); unacceptableReasons.add(message); 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) { Message message = ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get( String.valueOf(pinEnVar), String.valueOf(cfgEntryDN)); unacceptableReasons.add(message); configAcceptable = false; } Message message = ERR_TRUSTSTORE_PIN_ENVAR_NOT_SET.get( String.valueOf(pinEnVar), String.valueOf(cfgEntryDN)); unacceptableReasons.add(message); configAcceptable = false; } @@ -1112,12 +952,7 @@ } finally { try { br.close(); } catch (Exception e) { // ignore } close(br); } if (pinStr == null) @@ -1135,11 +970,8 @@ return configAcceptable; } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange(TrustStoreBackendCfg cfg) { ResultCode resultCode = ResultCode.SUCCESS; @@ -1261,12 +1093,7 @@ } finally { try { br.close(); } catch (Exception e) { // ignore } close(br); } if (pinStr == null) @@ -1389,14 +1216,7 @@ } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception e){} } close(inputStream); } @@ -1460,14 +1280,7 @@ } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception e){} } close(inputStream); } @@ -1477,14 +1290,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) { @@ -1539,14 +1345,7 @@ } finally { if (inputStream != null) { try { inputStream.close(); } catch (Exception e){} } close(inputStream); } try @@ -1799,7 +1598,7 @@ d = next % 10; if (d < 0) { d = d * (-1); d = d * -1; } generatedChar = (char) (d+48); break; @@ -1808,16 +1607,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) ; } @@ -1827,7 +1626,7 @@ private static int getRandomInt(Random random,int modulo) { return (random.nextInt() & modulo); return random.nextInt() & modulo; } /** @@ -1904,11 +1703,7 @@ } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -39,7 +39,6 @@ import java.util.zip.CheckedInputStream; import org.opends.messages.Message; 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; @@ -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 { @@ -123,23 +121,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,16 +234,7 @@ TRACER.debugCaught(DebugLogLevel.ERROR, e); } } finally { if (fis != null) { try { fis.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } } close(fis); } } @@ -265,21 +243,16 @@ /** {@inheritDoc} */ @Override public void configureBackend(Configuration cfg) throws ConfigException public void configureBackend(LocalDBBackendCfg cfg) throws ConfigException { Validator.ensureNotNull(cfg); Validator.ensureTrue(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 { @@ -356,7 +329,7 @@ } /** {@inheritDoc} */ @Override() @Override public void finalizeBackend() { // Deregister as a change listener. @@ -419,7 +392,7 @@ } /** {@inheritDoc} */ @Override() @Override public boolean isLocal() { return true; @@ -428,7 +401,7 @@ /** {@inheritDoc} */ @Override() @Override public boolean isIndexed(AttributeType attributeType, IndexType indexType) { try @@ -479,28 +452,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) { @@ -508,35 +481,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) @@ -560,7 +533,7 @@ /** {@inheritDoc} */ @Override() @Override public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException { @@ -582,7 +555,7 @@ /** {@inheritDoc} */ @Override() @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -633,7 +606,7 @@ /** {@inheritDoc} */ @Override() @Override public Entry getEntry(DN entryDN) throws DirectoryException { readerBegin(); @@ -676,7 +649,7 @@ /** {@inheritDoc} */ @Override() @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException, CanceledOperationException { @@ -719,7 +692,7 @@ /** {@inheritDoc} */ @Override() @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException, CanceledOperationException { @@ -761,7 +734,7 @@ /** {@inheritDoc} */ @Override() @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException, CanceledOperationException @@ -806,7 +779,7 @@ /** {@inheritDoc} */ @Override() @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException, CanceledOperationException @@ -859,7 +832,7 @@ /** {@inheritDoc} */ @Override() @Override public void search(SearchOperation searchOperation) throws DirectoryException, CanceledOperationException { @@ -900,7 +873,7 @@ /** {@inheritDoc} */ @Override() @Override public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException { @@ -957,7 +930,7 @@ /** {@inheritDoc} */ @Override() @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -1285,7 +1258,7 @@ /** {@inheritDoc} */ @Override() @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -1299,7 +1272,7 @@ /** {@inheritDoc} */ @Override() @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException { @@ -1311,7 +1284,7 @@ /** {@inheritDoc} */ @Override() @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { @@ -1325,11 +1298,10 @@ /** {@inheritDoc} */ @Override() public boolean isConfigurationAcceptable(Configuration configuration, @Override public boolean isConfigurationAcceptable(LocalDBBackendCfg config, List<Message> unacceptableReasons) { LocalDBBackendCfg config = (LocalDBBackendCfg) configuration; return isConfigurationChangeAcceptable(config, unacceptableReasons); } opends/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -26,8 +26,6 @@ */ package org.opends.server.backends.task; import java.io.*; import java.net.InetAddress; import java.security.MessageDigest; @@ -41,7 +39,6 @@ import javax.crypto.Mac; import org.opends.messages.Message; 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; @@ -59,15 +56,13 @@ import static org.opends.server.util.ServerConstants.*; import static org.opends.server.util.StaticUtils.*; /** * This class provides an implementation of a Directory Server backend that may * be used to execute various kinds of administrative tasks on a one-time or * recurring basis. */ public class TaskBackend extends Backend extends Backend<TaskBackendCfg> implements ConfigurationChangeListener<TaskBackendCfg> { /** @@ -77,44 +72,46 @@ // 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 +130,13 @@ /** * {@inheritDoc} */ @Override() public void configureBackend(Configuration config) throws ConfigException /** {@inheritDoc} */ @Override public void configureBackend(TaskBackendCfg cfg) throws ConfigException { Validator.ensureNotNull(config); Validator.ensureTrue(config instanceof TaskBackendCfg); Validator.ensureNotNull(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 +146,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) { Message 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 +162,7 @@ taskRootDN = baseDNs[0]; String recurringTaskBaseString = RECURRING_TASK_BASE_RDN + "," + taskRootDN.toString(); taskRootDN; try { recurringTaskParentDN = DN.decode(recurringTaskBaseString); @@ -191,7 +181,7 @@ } String scheduledTaskBaseString = SCHEDULED_TASK_BASE_RDN + "," + taskRootDN.toString(); taskRootDN; try { scheduledTaskParentDN = DN.decode(scheduledTaskBaseString); @@ -235,19 +225,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 { @@ -280,10 +264,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeBackend() { currentConfig.removeTaskChangeListener(this); @@ -332,10 +314,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public DN[] getBaseDNs() { return baseDNs; @@ -343,10 +323,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long getEntryCount() { if (taskScheduler != null) @@ -359,10 +337,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean isLocal() { // For the purposes of this method, this is a local backend. @@ -371,10 +347,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean isIndexed(AttributeType attributeType, IndexType indexType) { // All searches in this backend will always be considered indexed. @@ -383,10 +357,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public ConditionResult hasSubordinates(DN entryDN) throws DirectoryException { @@ -407,10 +379,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -465,10 +435,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public Entry getEntry(DN entryDN) throws DirectoryException { @@ -523,10 +491,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void addEntry(Entry entry, AddOperation addOperation) throws DirectoryException { @@ -571,10 +537,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { @@ -653,10 +617,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -855,24 +817,20 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException { Message 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(String.valueOf(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 @@ -975,9 +933,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); } @@ -1004,9 +961,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); } @@ -1030,12 +986,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; } } @@ -1043,75 +996,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. @@ -1120,10 +1057,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void exportLDIF(LDIFExportConfig exportConfig) throws DirectoryException { @@ -1203,88 +1138,47 @@ } finally { try { ldifWriter.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } try { ldifReader.close(); } catch (Exception e) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, 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. Message 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 { @@ -1497,16 +1391,7 @@ if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, 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)); @@ -1580,10 +1465,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException @@ -1640,10 +1523,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean supportsRestore() { // This backend does provide a backup/restore mechanism. @@ -1652,10 +1533,8 @@ /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void restoreBackup(RestoreConfig restoreConfig) throws DirectoryException { @@ -1973,22 +1852,17 @@ /** * {@inheritDoc} */ @Override() public boolean isConfigurationAcceptable(Configuration configuration, /** {@inheritDoc} */ @Override public boolean isConfigurationAcceptable(TaskBackendCfg config, List<Message> unacceptableReasons) { TaskBackendCfg config = (TaskBackendCfg) configuration; return isConfigAcceptable(config, unacceptableReasons, null); } /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public boolean isConfigurationChangeAcceptable(TaskBackendCfg configEntry, List<Message> unacceptableReasons) @@ -2024,8 +1898,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()) @@ -2084,9 +1958,7 @@ /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public ConfigChangeResult applyConfigurationChange(TaskBackendCfg configEntry) { @@ -2325,9 +2197,7 @@ /** * {@inheritDoc} */ /** {@inheritDoc} */ @Override public void preloadEntryCache() throws UnsupportedOperationException { throw new UnsupportedOperationException("Operation not supported."); opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -92,7 +92,7 @@ import org.opends.server.util.args.*; import org.opends.server.workflowelement.WorkflowElement; import org.opends.server.workflowelement.WorkflowElementConfigManager; import org.opends.server.workflowelement.localbackend.*; import org.opends.server.workflowelement.localbackend.LocalBackendWorkflowElement; /** * This class defines the core of the Directory Server. It manages the startup @@ -649,7 +649,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 @@ -659,10 +659,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. @@ -895,7 +916,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 = @@ -910,8 +931,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 = @@ -1405,11 +1424,6 @@ // Reset the map as we can no longer guarantee offline state. directoryServer.offlineBackendsStateIDs.clear(); // Register the supported controls and supported features. initializeSupportedControls(); initializeSupportedFeatures(); // Initialize all the extended operation handlers. initializeExtendedOperations(); @@ -2394,23 +2408,19 @@ // 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); } catch (DirectoryException e) { // TODO Auto-generated catch block throw new ConfigException(e.getMessageObject()); } } @@ -2485,61 +2495,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 identity mappers for the Directory Server. * * @throws ConfigException If there is a configuration problem with any of @@ -5958,9 +5913,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; } @@ -6008,7 +5963,7 @@ * conflicts with the backend ID of an existing * backend. */ public static void registerBackend(Backend backend) public static void registerBackend(Backend<?> backend) throws DirectoryException { ensureNotNull(backend); @@ -6018,8 +5973,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)) { Message message = ERR_REGISTER_BACKEND_ALREADY_EXISTS.get(backendID); @@ -6064,8 +6019,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; opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -22,11 +22,10 @@ * * * Copyright 2006-2009 Sun Microsystems, Inc. * Portions Copyright 2011-2013 ForgeRock AS * Portions Copyright 2011-2014 ForgeRock AS */ package org.opends.server.extensions; import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -47,7 +46,7 @@ import org.opends.messages.Message; import org.opends.messages.MessageBuilder; 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; @@ -86,7 +85,7 @@ * that will read the server configuration from an LDIF file. */ public class ConfigFileHandler extends ConfigHandler extends ConfigHandler<ConfigFileHandlerBackendCfg> implements AlertGenerator { /** @@ -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. @@ -187,12 +168,8 @@ super(); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void initializeConfigHandler(String configFile, boolean checkSchema) throws InitializationException { @@ -920,12 +897,8 @@ changesFile.renameTo(newChanges); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void finalizeConfigHandler() { try @@ -941,79 +914,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 { @@ -1021,58 +968,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 { @@ -1091,12 +1018,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public long numSubordinates(DN entryDN, boolean subtree) throws DirectoryException { @@ -1122,12 +1045,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public Entry getEntry(DN entryDN) throws DirectoryException { @@ -1140,24 +1059,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 { @@ -1317,12 +1228,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) throws DirectoryException { @@ -1477,12 +1384,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void replaceEntry(Entry oldEntry, Entry newEntry, ModifyOperation modifyOperation) throws DirectoryException { @@ -1643,12 +1546,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void renameEntry(DN currentDN, Entry entry, ModifyDNOperation modifyDNOperation) throws DirectoryException @@ -1675,12 +1574,8 @@ throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void search(SearchOperation searchOperation) throws DirectoryException { @@ -1819,12 +1714,8 @@ return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void writeUpdatedConfig() throws DirectoryException { @@ -2120,12 +2011,8 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void writeSuccessfulStartupConfig() { if (useLastKnownGoodConfig) @@ -2280,46 +2167,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 { @@ -2423,23 +2294,15 @@ } } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public boolean supportsLDIFImport() { return false; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException { @@ -2447,24 +2310,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) { @@ -2475,12 +2330,8 @@ return true; } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void createBackup(BackupConfig backupConfig) throws DirectoryException { @@ -2856,12 +2707,8 @@ } /** * {@inheritDoc} */ @Override() /** {@inheritDoc} */ @Override public void removeBackup(BackupDirectory backupDirectory, String backupID) throws DirectoryException @@ -2869,24 +2716,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 { @@ -3367,33 +3206,21 @@ logError(message); } /** * {@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() { @@ -3480,28 +3307,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) { if (debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, e); } } } }