From 39cfb739395cca91589c958fda4790c87ce0c9c8 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 02 Jan 2015 14:42:16 +0000
Subject: [PATCH] OPENDJ-1585 Re-implement DN normalization in server

---
 opendj3-server-dev/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java |   21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java b/opendj3-server-dev/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java
index 93a59b0..3034e55 100644
--- a/opendj3-server-dev/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java
+++ b/opendj3-server-dev/src/server/org/opends/server/extensions/EntryUUIDVirtualAttributeProvider.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2008-2009 Sun Microsystems, Inc.
- *      Portions Copyright 2012-2014 ForgeRock AS
+ *      Portions Copyright 2012-2015 ForgeRock AS
  */
 package org.opends.server.extensions;
 
@@ -81,10 +81,13 @@
   @Override()
   public Attribute getValues(Entry entry, VirtualAttributeRule rule)
   {
-    String normDNString = entry.getName().toNormalizedString();
-    String uuidString =
-         UUID.nameUUIDFromBytes(getBytes(normDNString)).toString();
-    return Attributes.create(rule.getAttributeType(), uuidString);
+    return Attributes.create(rule.getAttributeType(), getUUIDString(entry));
+  }
+
+  private String getUUIDString(Entry entry)
+  {
+    ByteString normDN = entry.getName().toIrreversibleNormalizedByteString();
+    return UUID.nameUUIDFromBytes(normDN.toByteArray()).toString();
   }
 
   /** {@inheritDoc} */
@@ -99,14 +102,10 @@
   @Override()
   public boolean hasValue(Entry entry, VirtualAttributeRule rule, ByteString value)
   {
-    MatchingRule matchingRule =
-        rule.getAttributeType().getEqualityMatchingRule();
+    MatchingRule matchingRule = rule.getAttributeType().getEqualityMatchingRule();
     try
     {
-      String normalizedDN = entry.getName().toNormalizedString();
-      String uuidString =
-           UUID.nameUUIDFromBytes(getBytes(normalizedDN)).toString();
-
+      String uuidString = getUUIDString(entry);
       ByteString normValue = matchingRule.normalizeAttributeValue(value);
       return uuidString.equals(normValue.toString());
     }

--
Gitblit v1.10.0