From e52cc00cab1a0661c8440c41838cbb2346bb5af8 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 18 Apr 2007 15:41:59 +0000
Subject: [PATCH] Make a number of minor changes identified through profiling as potential performance improvements.

---
 opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java |   31 +++++++--------
 opendj-sdk/opends/src/server/org/opends/server/types/Entry.java                  |   12 +++--
 opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java              |   12 ++----
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java          |    9 +++-
 4 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java
index 554a9be..bdb9356 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/DN2URI.java
@@ -674,8 +674,7 @@
      * reverse order we must set the first byte (the comma).
      * No possibility of overflow here.
      */
-    byte[] end = suffix.clone();
-    end[0] = (byte) (end[0] + 1);
+    byte[] end = null;
 
     DatabaseEntry data = new DatabaseEntry();
     DatabaseEntry key = new DatabaseEntry(suffix);
@@ -692,6 +691,12 @@
              status == OperationStatus.SUCCESS;
              status = cursor.getNextNoDup(key, data, LockMode.DEFAULT))
         {
+          if (end == null)
+          {
+            end = suffix.clone();
+            end[0] = (byte) (end[0] + 1);
+          }
+
           int cmp = comparator.compare(key.getData(), end);
           if (cmp >= 0)
           {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
index 299dbce..9dbec18 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
@@ -60,9 +60,6 @@
  */
 public class LDAPAttribute
 {
-
-
-
   // The set of values for this attribute.
   private ArrayList<ASN1OctetString> values;
 
@@ -114,14 +111,21 @@
    */
   public LDAPAttribute(Attribute attribute)
   {
-    StringBuilder attrName = new StringBuilder(attribute.getName());
-    for (String o : attribute.getOptions())
+    if (attribute.hasOptions())
     {
-      attrName.append(";");
-      attrName.append(o);
-    }
+      StringBuilder attrName = new StringBuilder(attribute.getName());
+      for (String o : attribute.getOptions())
+      {
+        attrName.append(";");
+        attrName.append(o);
+      }
 
-    this.attributeType = attrName.toString();
+      this.attributeType = attrName.toString();
+    }
+    else
+    {
+      this.attributeType = attribute.getName();
+    }
 
     LinkedHashSet<AttributeValue> attrValues = attribute.getValues();
     if ((attrValues == null) || attrValues.isEmpty())
@@ -192,14 +196,7 @@
     }
     else
     {
-      ArrayList<ASN1Element> valueElements =
-           new ArrayList<ASN1Element>(values.size());
-      for (ASN1OctetString s : values)
-      {
-        valueElements.add(s);
-      }
-
-      elements.add(new ASN1Set(valueElements));
+      elements.add(new ASN1Set(new ArrayList<ASN1Element>(values)));
     }
 
     return new ASN1Sequence(elements);
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java b/opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java
index 44d8c1e..4af9618 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/Attribute.java
@@ -176,7 +176,7 @@
     this.attributeType = attributeType;
     this.name          = name;
 
-    if (options == null)
+    if ((options == null) || options.isEmpty())
     {
       this.options = new LinkedHashSet<String>(0);
       lowerOptions = options;
@@ -184,7 +184,7 @@
     else
     {
       this.options = options;
-      lowerOptions = new LinkedHashSet<String>();
+      lowerOptions = new LinkedHashSet<String>(options.size());
       for (String option : options)
       {
         lowerOptions.add(toLowerCase(option));
@@ -193,7 +193,7 @@
 
     if (values == null)
     {
-      this.values = new LinkedHashSet<AttributeValue>();
+      this.values = new LinkedHashSet<AttributeValue>(0);
     }
     else
     {
@@ -868,11 +868,7 @@
   public Attribute duplicate(boolean omitValues)
   {
     LinkedHashSet<String> optionsCopy =
-         new LinkedHashSet<String>(options.size());
-    for (String s : options)
-    {
-      optionsCopy.add(s);
-    }
+         new LinkedHashSet<String>(options);
 
     if (omitValues)
     {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java b/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java
index 135b0e1..6c83a53 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/Entry.java
@@ -52,6 +52,7 @@
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.util.LDIFException;
 
+import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.loggers.Error.*;
 import static org.opends.server.messages.CoreMessages.*;
@@ -581,17 +582,18 @@
       return null;
     }
 
+    AttributeType ocType =
+         DirectoryServer.getObjectClassAttributeType();
+
     LinkedHashSet<AttributeValue> ocValues =
          new LinkedHashSet<AttributeValue>(objectClasses.size());
     for (String s : objectClasses.values())
     {
-      ocValues.add(new AttributeValue(new ASN1OctetString(s),
-                            new ASN1OctetString(toLowerCase(s))));
+      ocValues.add(new AttributeValue(ocType,
+                                      new ASN1OctetString(s)));
     }
 
-    return new Attribute(
-                    DirectoryServer.getObjectClassAttributeType(),
-                    "objectClass", ocValues);
+    return new Attribute(ocType, ATTR_OBJECTCLASS, ocValues);
   }
 
 

--
Gitblit v1.10.0