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 2007/11/25 03:53:57 UTC

svn commit: r597946 - /directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java

Author: elecharny
Date: Sat Nov 24 18:53:56 2007
New Revision: 597946

URL: http://svn.apache.org/viewvc?rev=597946&view=rev
Log:
Added a hashCode() method
Fixed some javadoc
Fixed the equals method to allow case insensitive comparison on IDs

Modified:
    directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java

Modified: directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java
URL: http://svn.apache.org/viewvc/directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java?rev=597946&r1=597945&r2=597946&view=diff
==============================================================================
--- directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java (original)
+++ directory/shared/branches/bigbang/ldap/src/main/java/org/apache/directory/shared/ldap/message/AttributeImpl.java Sat Nov 24 18:53:56 2007
@@ -686,19 +686,46 @@
                 return oldValue;
         }
     }
+    
+    
+    /**
+     * Compute the hashcode for this attribute. It's a combinaison
+     * of the ID and all the values' hashcodes.
+     * 
+     * @see Object#hashCode()
+     */
+    public int hashCode()
+    {
+        int hash = 17;
+        
+        hash += hash*37 + StringTools.toLowerCase( getID() ).hashCode();
+        
+        if ( ( list != null ) && ( list.size() != 0 ) )
+        {
+            for ( Object value:list )
+            {
+                if ( value instanceof byte[] )
+                {
+                    hash += hash*37 + Arrays.hashCode( (byte[])value );
+                }
+                else 
+                {
+                    hash += hash*37 + value.hashCode();
+                }
+            }
+        }
+        
+        return hash;
+    }
 
 
     /**
-     * Checks for equality between this Attribute instance and another. The
-     * lockable properties are not factored into the equality semantics and
-     * neither is the Attribute implementation. The Attribute ID's are compared
-     * with regard to case and value order is only considered if the Attribute
-     * arguement is ordered itself.
+     * Checks for equality between this Attribute instance and another. The 
+     * Attribute ID's aren't compared with regard to case.
      * 
      * TODO start looking at comparing syntaxes to determine if attributes are
      *       really equal
-     * @param obj
-     *            the Attribute to test for equality
+     * @param obj the Attribute to test for equality
      * @return true if the obj is an Attribute and equals this Attribute false
      *         otherwise
      */
@@ -716,7 +743,7 @@
 
         Attribute attr = ( Attribute ) obj;
 
-        if ( !upId.equals( attr.getID() ) )
+        if ( !StringTools.toLowerCase( upId ).equals( StringTools.toLowerCase( attr.getID() ) ) )
         {
             return false;
         }