From 642e1f844e7b37d2d8306c4d4300123f46f85558 Mon Sep 17 00:00:00 2001
From: Fabio Pistolesi <fabio.pistolesi@forgerock.com>
Date: Tue, 24 Feb 2015 13:35:36 +0000
Subject: [PATCH] OPENDJ-1800 Find a better way to manage database prefix names in a Storage
---
opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java | 34 ++++++++++++++++++++++------------
1 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
index c7cd72f..3a3a43b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
@@ -231,7 +231,7 @@
{
try
{
- final Tree tree = volume.getTree(treeName.toString(), true);
+ final Tree tree = volume.getTree(mangleTreeName(treeName), true);
trees.put(treeName, tree);
}
catch (final PersistitException e)
@@ -401,8 +401,7 @@
}
@Override
- public void renameTree(final TreeName oldTreeName,
- final TreeName newTreeName)
+ public void renameTree(final TreeName oldTreeName, final TreeName newTreeName)
{
throw new UnsupportedOperationException();
}
@@ -473,6 +472,12 @@
}
exchanges.clear();
}
+
+ private Exchange getNewExchange(final TreeName treeName, final boolean create)
+ throws PersistitException
+ {
+ return db.getExchange(volume, mangleTreeName(treeName), create);
+ }
}
private static void clearAndCreateDbDir(final File dbDir)
@@ -640,10 +645,21 @@
return new ImporterImpl();
}
- /** {@inheritDoc} */
- public String toSafeSuffixName(final String suffix)
+ private String mangleTreeName(final TreeName treeName)
{
- return suffix.replaceAll("[,=]", "_");
+ StringBuilder mangled = new StringBuilder();
+ String name = treeName.toString();
+
+ for (int idx = 0; idx < name.length(); idx++)
+ {
+ char ch = name.charAt(idx);
+ if (ch == '=' || ch == ',')
+ {
+ ch = '_';
+ }
+ mangled.append(ch);
+ }
+ return mangled.toString();
}
/** {@inheritDoc} */
@@ -722,12 +738,6 @@
return value;
}
- private Exchange getNewExchange(final TreeName treeName, final boolean create)
- throws PersistitException
- {
- return db.getExchange(volume, treeName.toString(), create);
- }
-
private ByteString keyToBytes(final Key key)
{
return ByteString.wrap(key.reset().decodeByteArray());
--
Gitblit v1.10.0