You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2016/05/11 13:00:30 UTC

svn commit: r1743354 - in /directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model: name/Ava.java schema/LdapComparator.java schema/comparators/DeepTrimToLowerComparator.java

Author: elecharny
Date: Wed May 11 13:00:29 2016
New Revision: 1743354

URL: http://svn.apache.org/viewvc?rev=1743354&view=rev
Log:
o Make the DeepTrimTOLower comparator only normalize the value. The key is supposed to be normalized beforehand
o Added a getNormalizer() method in the LdapComparator class
o Fixed the Ava.equals() method to have it normalizing the left side of the comparator

Modified:
    directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Ava.java
    directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/LdapComparator.java
    directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/comparators/DeepTrimToLowerComparator.java

Modified: directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Ava.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Ava.java?rev=1743354&r1=1743353&r2=1743354&view=diff
==============================================================================
--- directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Ava.java (original)
+++ directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/name/Ava.java Wed May 11 13:00:29 2016
@@ -35,6 +35,7 @@ import org.apache.directory.api.ldap.mod
 import org.apache.directory.api.ldap.model.schema.AttributeType;
 import org.apache.directory.api.ldap.model.schema.LdapComparator;
 import org.apache.directory.api.ldap.model.schema.MatchingRule;
+import org.apache.directory.api.ldap.model.schema.Normalizer;
 import org.apache.directory.api.ldap.model.schema.SchemaManager;
 import org.apache.directory.api.util.Serialize;
 import org.apache.directory.api.util.Strings;
@@ -1503,8 +1504,18 @@ public class Ava implements Externalizab
 
                 if ( equalityMatchingRule != null )
                 {
-                    return equalityMatchingRule.getLdapComparator().compare( value.getValue(),
-                        instance.value.getValue() ) == 0;
+                    Normalizer normalizer = equalityMatchingRule.getNormalizer();
+                    
+                    try
+                    {
+                        return equalityMatchingRule.getLdapComparator().compare( normalizer.normalize( value.getValue() ),
+                            instance.value.getValue() ) == 0;
+                    }
+                    catch ( LdapException le )
+                    {
+                        LOG.error( "Cannot normalize the value", le.getMessage() );
+                        return false;
+                    }
                 }
                 else
                 {

Modified: directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/LdapComparator.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/LdapComparator.java?rev=1743354&r1=1743353&r2=1743354&view=diff
==============================================================================
--- directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/LdapComparator.java (original)
+++ directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/LdapComparator.java Wed May 11 13:00:29 2016
@@ -23,6 +23,8 @@ package org.apache.directory.api.ldap.mo
 import java.io.Serializable;
 import java.util.Comparator;
 
+import org.apache.directory.api.ldap.model.schema.normalizers.NoOpNormalizer;
+
 
 /**
  * An class used for Comparator. It inherits from the general AbstractAdsSchemaObject class. It
@@ -35,6 +37,9 @@ public abstract class LdapComparator<T>
     /** The serial version UID */
     private static final long serialVersionUID = 2L;
 
+    /** A default normalizer*/
+    protected Normalizer normalizer = new NoOpNormalizer();
+
 
     /**
      * Create a new instance of a Comparator
@@ -71,6 +76,15 @@ public abstract class LdapComparator<T>
 
         return o instanceof LdapComparator<?>;
     }
+    
+    
+    /**
+     * @return The associated normalizer
+     */
+    public Normalizer getNormalizer()
+    {
+        return normalizer;
+    }
 
 
     /**

Modified: directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/comparators/DeepTrimToLowerComparator.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/comparators/DeepTrimToLowerComparator.java?rev=1743354&r1=1743353&r2=1743354&view=diff
==============================================================================
--- directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/comparators/DeepTrimToLowerComparator.java (original)
+++ directory/shared/branches/shared-value/ldap/model/src/main/java/org/apache/directory/api/ldap/model/schema/comparators/DeepTrimToLowerComparator.java Wed May 11 13:00:29 2016
@@ -58,44 +58,30 @@ public class DeepTrimToLowerComparator e
      * If any normalization attempt fails we compare using the unnormalized
      * object.
      */
-    public int compare( String o1, String o2 )
+    public int compare( String key, String value )
     {
-        String n1 = o1;
-        String n2 = o2;
+        String normalizedValue;
 
         try
         {
-            n1 = normalizer.normalize( o1 );
+            normalizedValue = normalizer.normalize( value );
         }
         catch ( LdapException e )
         {
-            LOG.warn( "Failed to normalize: " + o1, e );
-            n1 = o1;
+            LOG.warn( "Failed to normalize: " + value, e );
+            normalizedValue = value;
         }
 
-        try
-        {
-            n2 = normalizer.normalize( o2 );
-        }
-        catch ( LdapException e )
-        {
-            LOG.warn( "Failed to normalize: " + o2, e );
-            n2 = o2;
-        }
-
-        return n1.compareTo( n2 );
+        return key.compareTo( normalizedValue );
     }
-
-
+    
+    
     /**
      * {@inheritDoc}
-     * 
-     * This implementation makes sure we update the oid property of the contained normalizer and 
-     * comparator.
      */
     @Override
-    public void setOid( String oid )
+    public Normalizer getNormalizer()
     {
-        super.setOid( oid );
+        return normalizer;
     }
 }