| | |
| | | import java.io.File; |
| | | import java.util.*; |
| | | |
| | | import org.opends.messages.Message; |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.opends.server.admin.Configuration; |
| | | import org.opends.server.admin.server.ConfigurationChangeListener; |
| | | import org.opends.server.admin.std.server.BackupBackendCfg; |
| | |
| | | // not be able to complete initialization. |
| | | if (config == null) |
| | | { |
| | | Message message = ERR_BACKUP_CONFIG_ENTRY_NULL.get(); |
| | | LocalizableMessage message = ERR_BACKUP_CONFIG_ENTRY_NULL.get(); |
| | | throw new ConfigException(message); |
| | | } |
| | | |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN.get(getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_BACKEND_CANNOT_REGISTER_BASEDN.get( |
| | | LocalizableMessage message = ERR_BACKEND_CANNOT_REGISTER_BASEDN.get( |
| | | backupBaseDN.toString(), getExceptionMessage(e)); |
| | | throw new InitializationException(message, e); |
| | | } |
| | |
| | | // If the requested entry was null, then throw an exception. |
| | | if (entryDN == null) |
| | | { |
| | | Message message = ERR_BACKUP_GET_ENTRY_NULL.get(); |
| | | LocalizableMessage message = ERR_BACKUP_GET_ENTRY_NULL.get(); |
| | | throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), |
| | | message); |
| | | } |
| | |
| | | DN parentDN = entryDN.getParentDNInSuffix(); |
| | | if (parentDN == null) |
| | | { |
| | | Message message = ERR_BACKUP_INVALID_BASE.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_BACKUP_INVALID_BASE.get(String.valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); |
| | | } |
| | | else if (parentDN.equals(backupBaseDN)) |
| | |
| | | } |
| | | else |
| | | { |
| | | Message message = ERR_BACKUP_INVALID_BASE.get(String.valueOf(entryDN)); |
| | | LocalizableMessage message = ERR_BACKUP_INVALID_BASE.get(String.valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, |
| | | message, backupBaseDN, null); |
| | | } |
| | |
| | | AttributeValue v = entryDN.rdn().getAttributeValue(t); |
| | | if (v == null) |
| | | { |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY.get(String.valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message, |
| | | backupBaseDN, null); |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, ce); |
| | | } |
| | | |
| | | Message message = ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get( |
| | | LocalizableMessage message = ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get( |
| | | String.valueOf(entryDN), ce.getMessage()); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); |
| | | } |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = |
| | | LocalizableMessage message = |
| | | ERR_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY.get(getExceptionMessage(e)); |
| | | throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), |
| | | message); |
| | |
| | | true); |
| | | AttributeValue idValue = entryDN.rdn().getAttributeValue(idType); |
| | | if (idValue == null) { |
| | | Message message = ERR_BACKUP_NO_BACKUP_ID_IN_DN.get(String |
| | | LocalizableMessage message = ERR_BACKUP_NO_BACKUP_ID_IN_DN.get(String |
| | | .valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); |
| | | } |
| | |
| | | // Next, get the backup directory from the parent DN. |
| | | DN parentDN = entryDN.getParentDNInSuffix(); |
| | | if (parentDN == null) { |
| | | Message message = ERR_BACKUP_NO_BACKUP_PARENT_DN.get(String |
| | | LocalizableMessage message = ERR_BACKUP_NO_BACKUP_PARENT_DN.get(String |
| | | .valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); |
| | | } |
| | |
| | | ATTR_BACKUP_DIRECTORY_PATH, true); |
| | | AttributeValue v = parentDN.rdn().getAttributeValue(t); |
| | | if (v == null) { |
| | | Message message = ERR_BACKUP_NO_BACKUP_DIR_IN_DN.get(String |
| | | LocalizableMessage message = ERR_BACKUP_NO_BACKUP_DIR_IN_DN.get(String |
| | | .valueOf(entryDN)); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); |
| | | } |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, ce); |
| | | } |
| | | |
| | | Message message = ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get(String |
| | | LocalizableMessage message = ERR_BACKUP_INVALID_BACKUP_DIRECTORY.get(String |
| | | .valueOf(entryDN), ce.getMessageObject()); |
| | | throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message); |
| | | } catch (Exception e) { |
| | |
| | | TRACER.debugCaught(DebugLogLevel.ERROR, e); |
| | | } |
| | | |
| | | Message message = ERR_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY |
| | | LocalizableMessage message = ERR_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY |
| | | .get(getExceptionMessage(e)); |
| | | throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), |
| | | message); |
| | |
| | | |
| | | BackupInfo backupInfo = backupDirectory.getBackupInfo(backupID); |
| | | if (backupInfo == null) { |
| | | Message message = ERR_BACKUP_NO_SUCH_BACKUP.get(backupID, backupDirectory |
| | | LocalizableMessage message = ERR_BACKUP_NO_SUCH_BACKUP.get(backupID, backupDirectory |
| | | .getPath()); |
| | | throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message, |
| | | parentDN, null); |
| | |
| | | public void addEntry(Entry entry, AddOperation addOperation) |
| | | throws DirectoryException |
| | | { |
| | | Message message = ERR_BACKUP_ADD_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_ADD_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | public void deleteEntry(DN entryDN, DeleteOperation deleteOperation) |
| | | throws DirectoryException |
| | | { |
| | | Message message = ERR_BACKUP_DELETE_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_DELETE_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | public void replaceEntry(Entry oldEntry, Entry newEntry, |
| | | ModifyOperation modifyOperation) throws DirectoryException |
| | | { |
| | | Message message = ERR_BACKUP_MODIFY_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_MODIFY_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | ModifyDNOperation modifyDNOperation) |
| | | throws DirectoryException |
| | | { |
| | | Message message = ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_MODIFY_DN_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | if ((parentDN == null) |
| | | || (! backupBaseDN.equals(parentDN.getParentDNInSuffix()))) |
| | | { |
| | | Message message = ERR_BACKUP_NO_SUCH_ENTRY.get( |
| | | LocalizableMessage message = ERR_BACKUP_NO_SUCH_ENTRY.get( |
| | | String.valueOf(backupBaseDN) |
| | | ); |
| | | throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); |
| | |
| | | Entry backupEntry = getBackupEntry(baseDN); |
| | | if (backupEntry == null) |
| | | { |
| | | Message message = ERR_BACKUP_NO_SUCH_ENTRY.get( |
| | | LocalizableMessage message = ERR_BACKUP_NO_SUCH_ENTRY.get( |
| | | String.valueOf(backupBaseDN)); |
| | | throw new DirectoryException(ResultCode.NO_SUCH_OBJECT, message); |
| | | } |
| | |
| | | public void exportLDIF(LDIFExportConfig exportConfig) |
| | | throws DirectoryException |
| | | { |
| | | Message message = ERR_BACKUP_EXPORT_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_EXPORT_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | throws DirectoryException |
| | | { |
| | | // This backend does not support LDIF imports. |
| | | Message message = ERR_BACKUP_IMPORT_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_IMPORT_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | throws DirectoryException |
| | | { |
| | | // This backend does not provide a backup/restore mechanism. |
| | | Message message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | throws DirectoryException |
| | | { |
| | | // This backend does not provide a backup/restore mechanism. |
| | | Message message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | throws DirectoryException |
| | | { |
| | | // This backend does not provide a backup/restore mechanism. |
| | | Message message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | LocalizableMessage message = ERR_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED.get(); |
| | | throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, message); |
| | | } |
| | | |
| | |
| | | * {@inheritDoc} |
| | | */ |
| | | public boolean isConfigurationChangeAcceptable( |
| | | BackupBackendCfg cfg, List<Message> unacceptableReasons) |
| | | BackupBackendCfg cfg, List<LocalizableMessage> unacceptableReasons) |
| | | { |
| | | // We'll accept anything here. The only configurable attribute is the |
| | | // default set of backup directories, but that doesn't require any |
| | |
| | | { |
| | | ResultCode resultCode = ResultCode.SUCCESS; |
| | | boolean adminActionRequired = false; |
| | | ArrayList<Message> messages = new ArrayList<Message>(); |
| | | ArrayList<LocalizableMessage> messages = new ArrayList<LocalizableMessage>(); |
| | | |
| | | |
| | | Set<String> values = cfg.getBackupDirectory(); |