From 491d49aa75d97f97a1ef4718dfc768de76ad963b Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 22 Dec 2014 14:11:13 +0000
Subject: [PATCH] OPENDJ-1707 Persistit: various import problems Code review: Matthew Swift
---
opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java | 39 +++++++++++++++++++++------------------
1 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
index 6e4286f..05985cc 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/RootContainer.java
@@ -26,6 +26,13 @@
*/
package org.opends.server.backends.pluggable;
+import static org.opends.messages.BackendMessages.*;
+import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.JebMessages.*;
+import static org.opends.messages.UtilityMessages.*;
+import static org.opends.server.core.DirectoryServer.*;
+import static org.opends.server.util.StaticUtils.*;
+
import java.io.File;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -58,13 +65,6 @@
import org.opends.server.util.LDIFReader;
import org.opends.server.util.RuntimeInformation;
-import static org.opends.messages.BackendMessages.*;
-import static org.opends.messages.ConfigMessages.*;
-import static org.opends.messages.JebMessages.*;
-import static org.opends.messages.UtilityMessages.*;
-import static org.opends.server.core.DirectoryServer.*;
-import static org.opends.server.util.StaticUtils.*;
-
/**
* Wrapper class for the JE environment. Root container holds all the entry
* containers for each base DN. It also maintains all the openings and closings
@@ -126,12 +126,10 @@
return storage;
}
- LDIFImportResult importLDIF(LDIFImportConfig importConfig)
- throws DirectoryException
+ LDIFImportResult importLDIF(LDIFImportConfig importConfig) throws DirectoryException
{
RuntimeInformation.logInfo();
- if (!importConfig.appendToExistingData()
- && (importConfig.clearBackend() || config.getBaseDN().size() <= 1))
+ if (importConfig.clearBackend())
{
removeFiles();
}
@@ -195,12 +193,18 @@
switch (e.getResultCode().asEnum())
{
case ENTRY_ALREADY_EXISTS:
- // TODO: support replace of existing entries.
- reader.rejectLastEntry(WARN_JEB_IMPORT_ENTRY_EXISTS.get());
+ if (importConfig.replaceExistingEntries())
+ {
+ final Entry oldEntry = ec.getEntry(entry.getName());
+ ec.replaceEntry(oldEntry, entry, null);
+ }
+ else
+ {
+ reader.rejectLastEntry(WARN_JEB_IMPORT_ENTRY_EXISTS.get());
+ }
break;
case NO_SUCH_OBJECT:
- reader.rejectLastEntry(ERR_JEB_IMPORT_PARENT_NOT_FOUND.get(dn
- .parent()));
+ reader.rejectLastEntry(ERR_JEB_IMPORT_PARENT_NOT_FOUND.get(dn.parent()));
break;
default:
// Not sure why it failed.
@@ -240,9 +244,8 @@
{
if (!backendDirectory.isDirectory())
{
- LocalizableMessage message = ERR_JEB_DIRECTORY_INVALID
- .get(backendDirectory.getPath());
- throw new StorageRuntimeException(message.toString());
+ LocalizableMessage msg = ERR_JEB_DIRECTORY_INVALID.get(backendDirectory.getPath());
+ throw new StorageRuntimeException(msg.toString());
}
try
--
Gitblit v1.10.0