From 0df28b32026c9de2eeada877df13ae99152efde2 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Thu, 15 Feb 2007 00:21:49 +0000
Subject: [PATCH] Rewrite the DN and RDN code for significant performance improvements, especially in the area of DN parsing.
---
opends/src/server/org/opends/server/backends/jeb/EntryContainer.java | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
index 97388e7..b8a5a52 100644
--- a/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Portions Copyright 2006 Sun Microsystems, Inc.
+ * Portions Copyright 2006-2007 Sun Microsystems, Inc.
*/
package org.opends.server.backends.jeb;
@@ -53,6 +53,7 @@
import org.opends.server.types.Entry;
import org.opends.server.types.LockType;
import org.opends.server.types.Modification;
+import org.opends.server.types.RDN;
import org.opends.server.types.ResultCode;
import org.opends.server.types.SearchScope;
import org.opends.server.util.StaticUtils;
@@ -3100,8 +3101,22 @@
*/
public static DN modDN(DN oldDN, int oldSuffixLen, DN newSuffixDN)
{
- DN localName = oldDN.getLocalName(oldSuffixLen);
- return newSuffixDN.concat(localName);
+ int oldDNNumComponents = oldDN.getNumComponents();
+ int oldDNKeepComponents = oldDNNumComponents - oldSuffixLen;
+ int newSuffixDNComponents = newSuffixDN.getNumComponents();
+
+ RDN[] newDNComponents = new RDN[oldDNKeepComponents+newSuffixDNComponents];
+ for (int i=0; i < oldDNKeepComponents; i++)
+ {
+ newDNComponents[i] = oldDN.getRDN(i);
+ }
+
+ for (int i=oldDNKeepComponents, j=0; j < newSuffixDNComponents; i++,j++)
+ {
+ newDNComponents[i] = newSuffixDN.getRDN(j);
+ }
+
+ return new DN(newDNComponents);
}
/**
--
Gitblit v1.10.0