From a873d6d0b57a360b7ff038cf6aac11e8e7369cfa Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 13 May 2015 09:00:40 +0000
Subject: [PATCH] ImportStrategy.java: In importLDIF(), added InitializationException as a checked exception.
---
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java | 14 ----
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java | 71 ++++++++---------------
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java | 34 +++-------
opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportStrategy.java | 13 +++-
4 files changed, 46 insertions(+), 86 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
index 054786a..34b08ca 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -56,6 +56,7 @@
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
import org.opends.server.core.*;
import org.opends.server.types.*;
+import org.opends.server.util.LDIFException;
import org.opends.server.util.RuntimeInformation;
/**
@@ -350,16 +351,8 @@
public long getNumberOfEntriesInBaseDN(DN baseDN) throws DirectoryException
{
checkNotNull(baseDN, "baseDN must not be null");
- final EntryContainer ec;
- try {
- ec = accessBegin(null, baseDN);
- }
- catch (DirectoryException de)
- {
- throw de;
- }
-
+ final EntryContainer ec = accessBegin(null, baseDN);
ec.sharedLock.lock();
try
{
@@ -367,8 +360,7 @@
}
catch (Exception e)
{
- throw new DirectoryException(
- DirectoryServer.getServerErrorResultCode(), LocalizableMessage.raw(e.getMessage()), e);
+ throw new DirectoryException(getServerErrorResultCode(), LocalizableMessage.raw(e.getMessage()), e);
}
finally
{
@@ -587,7 +579,7 @@
if (rootContainer == null)
{
LocalizableMessage msg = ERR_ROOT_CONTAINER_NOT_INITIALIZED.get(getBackendID());
- throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), msg);
+ throw new DirectoryException(getServerErrorResultCode(), msg);
}
}
@@ -599,7 +591,6 @@
// If the backend already has the root container open, we must use the same
// underlying root container
boolean openRootContainer = mustOpenRootContainer();
- final ResultCode errorRC = DirectoryServer.getServerErrorResultCode();
try
{
if (openRootContainer)
@@ -612,23 +603,15 @@
}
catch (IOException ioe)
{
- throw new DirectoryException(errorRC, ERR_EXPORT_IO_ERROR.get(ioe.getMessage()), ioe);
+ throw new DirectoryException(getServerErrorResultCode(), ERR_EXPORT_IO_ERROR.get(ioe.getMessage()), ioe);
}
catch (StorageRuntimeException de)
{
throw createDirectoryException(de);
}
- catch (ConfigException ce)
+ catch (ConfigException | InitializationException | LDIFException e)
{
- throw new DirectoryException(errorRC, ce.getMessageObject(), ce);
- }
- catch (IdentifiedException e)
- {
- if (e instanceof DirectoryException)
- {
- throw (DirectoryException) e;
- }
- throw new DirectoryException(errorRC, e.getMessageObject(), e);
+ throw new DirectoryException(getServerErrorResultCode(), e.getMessageObject(), e);
}
finally
{
@@ -671,21 +654,17 @@
}
rootContainer = initializeRootContainer();
- return rootContainer.importLDIF(importConfig, serverContext);
+ return getImportStrategy().importLDIF(importConfig, rootContainer, serverContext);
}
catch (StorageRuntimeException e)
{
- throw new DirectoryException(getServerErrorResultCode(), LocalizableMessage.raw(e.getMessage()), e);
+ throw createDirectoryException(e);
}
catch (DirectoryException e)
{
throw e;
}
- catch (OpenDsException e)
- {
- throw new DirectoryException(getServerErrorResultCode(), e.getMessageObject(), e);
- }
- catch (ConfigException e)
+ catch (OpenDsException | ConfigException e)
{
throw new DirectoryException(getServerErrorResultCode(), e.getMessageObject(), e);
}
@@ -712,6 +691,12 @@
}
}
+ private ImportStrategy getImportStrategy() throws DirectoryException
+ {
+ // TODO JNR may call new SuccessiveAddsImportStrategy() depending on configured import strategy
+ return new Importer.StrategyImpl(cfg);
+ }
+
/** {@inheritDoc} */
@Override
public long verifyBackend(VerifyConfig verifyConfig)
@@ -771,10 +756,9 @@
* If the rootContainer is open, the backend is initialized by something else.
* We can't do any rebuild of system indexes while others are using this backend.
*/
- final ResultCode errorRC = DirectoryServer.getServerErrorResultCode();
if (!openRootContainer && rebuildConfig.includesSystemIndex())
{
- throw new DirectoryException(errorRC, ERR_REBUILD_BACKEND_ONLINE.get());
+ throw new DirectoryException(getServerErrorResultCode(), ERR_REBUILD_BACKEND_ONLINE.get());
}
try
@@ -787,23 +771,23 @@
}
catch (ExecutionException execEx)
{
- throw new DirectoryException(errorRC, ERR_EXECUTION_ERROR.get(execEx.getMessage()), execEx);
+ throw new DirectoryException(getServerErrorResultCode(), ERR_EXECUTION_ERROR.get(execEx.getMessage()), execEx);
}
catch (InterruptedException intEx)
{
- throw new DirectoryException(errorRC, ERR_INTERRUPTED_ERROR.get(intEx.getMessage()), intEx);
+ throw new DirectoryException(getServerErrorResultCode(), ERR_INTERRUPTED_ERROR.get(intEx.getMessage()), intEx);
}
catch (ConfigException ce)
{
- throw new DirectoryException(errorRC, ce.getMessageObject(), ce);
+ throw new DirectoryException(getServerErrorResultCode(), ce.getMessageObject(), ce);
}
catch (StorageRuntimeException e)
{
- throw new DirectoryException(errorRC, LocalizableMessage.raw(e.getMessage()), e);
+ throw createDirectoryException(e);
}
catch (InitializationException e)
{
- throw new InitializationException(e.getMessageObject(), e);
+ throw e;
}
finally
{
@@ -896,7 +880,7 @@
}
catch (Exception e)
{
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.setResultCode(getServerErrorResultCode());
ccr.addMessage(LocalizableMessage.raw(stackTraceToSingleLineString(e)));
}
return ccr;
@@ -934,7 +918,7 @@
{
logger.traceException(e);
- ccr.setResultCode(DirectoryServer.getServerErrorResultCode());
+ ccr.setResultCode(getServerErrorResultCode());
ccr.addMessage(ERR_BACKEND_CANNOT_REGISTER_BASEDN.get(baseDN, e));
return false;
}
@@ -985,14 +969,11 @@
Throwable cause = e.getCause();
if (cause instanceof OpenDsException)
{
- return new DirectoryException(
- DirectoryServer.getServerErrorResultCode(), (OpenDsException) cause);
+ return new DirectoryException(getServerErrorResultCode(), (OpenDsException) cause);
}
else
{
- return new DirectoryException(
- DirectoryServer.getServerErrorResultCode(),
- LocalizableMessage.raw(e.getMessage()), e);
+ return new DirectoryException(getServerErrorResultCode(), LocalizableMessage.raw(e.getMessage()), e);
}
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportStrategy.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportStrategy.java
index 41cf83a..fde7206 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportStrategy.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/ImportStrategy.java
@@ -26,6 +26,7 @@
import org.opends.server.core.ServerContext;
import org.opends.server.types.DirectoryException;
+import org.opends.server.types.InitializationException;
import org.opends.server.types.LDIFImportConfig;
import org.opends.server.types.LDIFImportResult;
@@ -36,14 +37,18 @@
* Imports information from an LDIF file into the supplied root container.
*
* @param importConfig
- * The configuration to use when performing the import.
+ * The configuration to use when performing the import
+ * @param rootContainer
+ * The root container where to do the import
* @param serverContext
* The server context
- * @return Information about the result of the import processing.
+ * @return Information about the result of the import processing
* @throws DirectoryException
- * If a problem occurs while performing the LDIF import.
+ * If a problem occurs while performing the LDIF import
+ * @throws InitializationException
+ * If a problem occurs while initializing the LDIF import
* @see {@link Backend#importLDIF(LDIFImportConfig, ServerContext)}
*/
LDIFImportResult importLDIF(LDIFImportConfig importConfig, RootContainer rootContainer, ServerContext serverContext)
- throws DirectoryException;
+ throws DirectoryException, InitializationException;
}
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
index 83413c2..f9464a5 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/Importer.java
@@ -144,18 +144,18 @@
@Override
public LDIFImportResult importLDIF(LDIFImportConfig importConfig, RootContainer rootContainer,
- ServerContext serverContext) throws DirectoryException
+ ServerContext serverContext) throws DirectoryException, InitializationException
{
try
{
return new Importer(rootContainer, importConfig, backendCfg, serverContext).processImport();
}
- catch (DirectoryException e)
+ catch (DirectoryException | InitializationException e)
{
logger.traceException(e);
throw e;
}
- catch (InitializationException | ConfigException e)
+ catch (ConfigException e)
{
logger.traceException(e);
throw new DirectoryException(getServerErrorResultCode(), e.getMessageObject(), e);
@@ -640,8 +640,7 @@
}
}
- private void initializeSuffixes(WriteableTransaction txn) throws StorageRuntimeException,
- ConfigException
+ private void initializeSuffixes(WriteableTransaction txn) throws ConfigException, DirectoryException
{
for (EntryContainer ec : rootContainer.getEntryContainers())
{
@@ -683,7 +682,7 @@
}
private Suffix getSuffix(WriteableTransaction txn, EntryContainer entryContainer)
- throws ConfigException
+ throws ConfigException, DirectoryException
{
DN baseDN = entryContainer.getBaseDN();
EntryContainer sourceEntryContainer = null;
@@ -754,34 +753,23 @@
&& includeBranches.get(0).equals(baseDN))
{
// This entire base DN is explicitly included in the import with
- // no exclude branches that we need to migrate. Just clear the entry
- // container.
+ // no exclude branches that we need to migrate.
+ // Just clear the entry container.
clearSuffix(entryContainer);
}
else
{
- // Create a temp entry container
sourceEntryContainer = entryContainer;
- entryContainer = createEntryContainer(txn, baseDN);
+
+ // Create a temp entry container
+ DN tempDN = baseDN.child(DN.valueOf("dc=importTmp"));
+ entryContainer = rootContainer.openEntryContainer(tempDN, txn);
}
}
}
return new Suffix(entryContainer, sourceEntryContainer, includeBranches, excludeBranches);
}
- private EntryContainer createEntryContainer(WriteableTransaction txn, DN baseDN) throws ConfigException
- {
- try
- {
- DN tempDN = baseDN.child(DN.valueOf("dc=importTmp"));
- return rootContainer.openEntryContainer(tempDN, txn);
- }
- catch (DirectoryException e)
- {
- throw new ConfigException(e.getMessageObject());
- }
- }
-
private static void clearSuffix(EntryContainer entryContainer)
{
entryContainer.lock();
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
index a53ef67..83889a4 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/RootContainer.java
@@ -53,12 +53,9 @@
import org.opends.server.backends.pluggable.spi.WriteOperation;
import org.opends.server.backends.pluggable.spi.WriteableTransaction;
import org.opends.server.core.SearchOperation;
-import org.opends.server.core.ServerContext;
import org.opends.server.types.DN;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
-import org.opends.server.types.LDIFImportConfig;
-import org.opends.server.types.LDIFImportResult;
import org.opends.server.types.Operation;
import org.opends.server.types.Privilege;
@@ -120,17 +117,6 @@
return storage;
}
- LDIFImportResult importLDIF(LDIFImportConfig importConfig, ServerContext serverContext) throws DirectoryException
- {
- return getImportStrategy().importLDIF(importConfig, this, serverContext);
- }
-
- private ImportStrategy getImportStrategy() throws DirectoryException
- {
- //TODO JNR may call new SuccessiveAddsImportStrategy() depending on configured import strategy
- return new Importer.StrategyImpl(config);
- }
-
/**
* Opens the root container.
*
--
Gitblit v1.10.0