From 7bc10ef426f7701c51eb1e9abcccb0e90540c6e5 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 19 Dec 2014 14:52:14 +0000
Subject: [PATCH] OPENDJ-1602 New pluggable storage based backend
---
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java | 2 +-
opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/EntryContainer.java | 31 ++++++++++++++++++++++++++++++-
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
index d99a600..d1ddb79 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/persistit/PersistItStorage.java
@@ -259,7 +259,7 @@
@Override
public void truncateTree(TreeName treeName) {
try {
- volume.truncate();
+ getExchange(treeName).removeAll();
} catch (PersistitException e) {
throw new StorageRuntimeException(e);
}
diff --git a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/EntryContainer.java b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/EntryContainer.java
index d0f593a..8319cf8 100644
--- a/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/EntryContainer.java
+++ b/opendj-sdk/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/EntryContainer.java
@@ -1092,7 +1092,36 @@
}
catch (Exception e)
{
- throw new StorageRuntimeException(e);
+ throwAllowedExceptionTypes(e, DirectoryException.class, CanceledOperationException.class);
+ }
+ }
+
+ private <E1 extends Exception, E2 extends Exception>
+ void throwAllowedExceptionTypes(Exception e, Class<E1> clazz1, Class<E2> clazz2)
+ throws E1, E2
+ {
+ throwIfPossible(e, clazz1, clazz2);
+ if (e.getCause() != null)
+ {
+ throwIfPossible(e.getCause(), clazz1, clazz2);
+ }
+ else if (e instanceof StorageRuntimeException)
+ {
+ throw (StorageRuntimeException) e;
+ }
+ throw new StorageRuntimeException(e);
+ }
+
+ private <E1 extends Exception, E2 extends Exception> void throwIfPossible(final Throwable cause, Class<E1> clazz1,
+ Class<E2> clazz2) throws E1, E2
+ {
+ if (clazz1.isAssignableFrom(cause.getClass()))
+ {
+ throw clazz1.cast(cause);
+ }
+ else if (clazz2.isAssignableFrom(cause.getClass()))
+ {
+ throw clazz2.cast(cause);
}
}
--
Gitblit v1.10.0