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 2005/12/26 01:37:08 UTC

svn commit: r359025 - /directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java

Author: elecharny
Date: Sun Dec 25 16:37:03 2005
New Revision: 359025

URL: http://svn.apache.org/viewcvs?rev=359025&view=rev
Log:
Huge refactoring of this class.
The comparizon now relies on LdapDN class.

Modified:
    directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java

Modified: directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java
URL: http://svn.apache.org/viewcvs/directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java?rev=359025&r1=359024&r2=359025&view=diff
==============================================================================
--- directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java (original)
+++ directory/shared/ldap/branches/DN-refactoring/common/src/main/java/org/apache/ldap/common/schema/DnComparator.java Sun Dec 25 16:37:03 2005
@@ -20,135 +20,44 @@
 import java.util.Comparator ;
 
 import javax.naming.Name ;
-import javax.naming.NameParser ;
-import javax.naming.NamingException ;
+import javax.naming.NamingException;
 
-import org.apache.ldap.common.name.DnParser ;
-import org.apache.ldap.common.name.NameComponentNormalizer;
+import org.apache.ldap.common.name.LdapDN;
 
 
 /**
- * A DnComparator that uses a parser to parse Dn strings.  The parser may
- * or may not be Schema enabled.
+ * A DnComparator that works on two LdapDN objects
  *
- * @todo start using some kinda name cache here; it is way too expensive to be
- *       doing this over and over again
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
- * @version $Rev$
  */
 public class DnComparator implements Comparator
 {
-    /** The parser used to parse DN Strings */
-    private NameParser parser ;
-    
-    private static final Object parserMutex = new Object();
-    
-    
-    // ------------------------------------------------------------------------
-    // C O N S T R U C T O R S
-    // ------------------------------------------------------------------------
-
-
-    /**
-     * Creates a default schema-less DN Comparator whose parser does not attempt
-     * to normalize assertion valeus while comparing DN components.
-     */
-    public DnComparator() throws NamingException
-    {
-        synchronized ( parserMutex )
-        {
-            parser = new DnParser() ;
-        }
-    }
-    
-    
     /**
      * Creates a DN Comparator using a name component normalizer which should
      * use schema normalizers for attribute equality matching rules to
      * normalize assertion values.
      */
-    public DnComparator( NameComponentNormalizer normalizer ) throws NamingException
+    public DnComparator() throws NamingException
     {
-        synchronized ( parserMutex )
-        {
-            parser = new DnParser( normalizer ) ;
-        }
     }
-    
-    
-    // ------------------------------------------------------------------------
-    // Comparator Methods
-    // ------------------------------------------------------------------------
-    
-    
+
     /**
+     * The comparator is working on LdapDN objects, nothing else.
      * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
      */
     public int compare( Object obj1, Object obj2 )
     {
-        Name dn1 = null ;
-        Name dn2 = null ;
+        Name dn1 = (LdapDN)obj1;
+        Name dn2 = (LdapDN)obj2;
         
-        // Figure out how to compose the Name for the first object
-        if ( obj1 instanceof Name )
-        {
-            dn1 = ( Name ) obj1 ;
-        }
-        else if ( obj1 instanceof String )
-        {
-        	// Speedup the comparison
-        	if ( ((String)obj1).compareTo((String)obj2) == 0)
-        	{
-        		return 0;
-        	}
-        	else
-        	{
-	            try
-	            {
-                    synchronized ( parserMutex )
-                    {
-                        dn1 = parser.parse( ( String ) obj1 ) ;
-                    }
-	            }
-	            catch ( NamingException ne )
-	            {
-	                throw new IllegalArgumentException( 
-	                    "first argument (" + obj1 + ") was not a distinguished name" ) ;
-	            }
-        	}
-        }
-        else
-        {
-            throw new IllegalArgumentException( 
-                "first argument (" + obj1 + ") was not a Name or a String" ) ;
-        }
-
-        // Figure out how to compose the Name for the second object
-        if ( obj2 instanceof Name )
-        {
-            dn2 = ( Name ) obj2 ;
-        }
-        else if ( obj2 instanceof String )
-        {
-            try
-            {
-                synchronized ( parserMutex )
-                {
-                    dn2 = parser.parse( ( String ) obj2 ) ;
-                }
-            }
-            catch ( NamingException ne )
-            {
-                throw new IllegalArgumentException( 
-                    "second argument was not a distinguished name" ) ;
-            }
-        }
-        else
-        {
-            throw new IllegalArgumentException( 
-                "second argument was not a distinguished name" ) ;
-        }
-
         return dn1.compareTo( dn2 ) ;
+    }
+    
+    /**
+     * A String representation of this class
+     */
+    public String toString()
+    {
+    	return "Dn comparator";
     }
 }