[jboss-cvs] JBossAS SVN: r100915 - in projects/jboss-mdr/trunk/src: test/java/org/jboss/test/metadata/scope/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 12 10:06:39 EST 2010


Author: kabir.khan at jboss.com
Date: 2010-02-12 10:06:38 -0500 (Fri, 12 Feb 2010)
New Revision: 100915

Modified:
   projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/Scope.java
   projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/ScopeKey.java
   projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/scope/test/ScopeKeyUnitTestCase.java
Log:
[JBMDR-65] Proper hashing for ScopeKey

Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/Scope.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/Scope.java	2010-02-12 14:57:11 UTC (rev 100914)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/Scope.java	2010-02-12 15:06:38 UTC (rev 100915)
@@ -51,7 +51,11 @@
       
       this.level = level;
       this.qualifier = qualifier;
-      this.hashcode = level.hashCode();
+
+      int hash = 17;
+      hash = 31 * hash + level.hashCode();
+      hash = 31 * hash + qualifier.hashCode();
+      hashcode = hash;
    }
 
    public ScopeLevel getScopeLevel()

Modified: projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/ScopeKey.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/ScopeKey.java	2010-02-12 14:57:11 UTC (rev 100914)
+++ projects/jboss-mdr/trunk/src/main/java/org/jboss/metadata/spi/scope/ScopeKey.java	2010-02-12 15:06:38 UTC (rev 100915)
@@ -407,7 +407,8 @@
    {
       int hashCode = 0;
       for (Scope scope : scopeCollection)
-         hashCode += scope.getScopeLevel().hashCode();
+         //hashCode += scope.getScopeLevel().hashCode();
+         hashCode += scope.hashCode();
       return hashCode;
    }
 }

Modified: projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/scope/test/ScopeKeyUnitTestCase.java
===================================================================
--- projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/scope/test/ScopeKeyUnitTestCase.java	2010-02-12 14:57:11 UTC (rev 100914)
+++ projects/jboss-mdr/trunk/src/test/java/org/jboss/test/metadata/scope/test/ScopeKeyUnitTestCase.java	2010-02-12 15:06:38 UTC (rev 100915)
@@ -646,6 +646,34 @@
       assertFalse(key1.equals(key2));
    }
    
+   public void testHashCodes() throws Exception
+   {
+      ScopeKey key1a = new ScopeKey();
+      assertAddScope(key1a, testScope1, null);
+      
+      ScopeKey key1b = new ScopeKey();
+      assertAddScope(key1b, testScope1, null);
+      assertEquals(key1a.hashCode(), key1b.hashCode());
+      assertEquals(key1a.hashCode(), key1a.getOptimizedKey().hashCode());
+      assertEquals(key1b.hashCode(), key1b.getOptimizedKey().hashCode());
+      
+      ScopeKey key2 = new ScopeKey();
+      assertAddScope(key2, testScope1Different, null);
+      assertTrue(key2.hashCode() != key1a.hashCode());
+      
+      assertAddScope(key1a, testScope2, null);
+      assertAddScope(key1b, testScope2, null);
+      assertEquals(key1a.hashCode(), key1b.hashCode());
+      assertEquals(key1a.hashCode(), key1a.getOptimizedKey().hashCode());
+      assertEquals(key1b.hashCode(), key1b.getOptimizedKey().hashCode());
+      
+      assertAddScope(key1a, testScope3, null);
+      assertAddScope(key1b, testScope3Different, null);
+      assertTrue(key1a.hashCode() != key1b.hashCode());
+      assertEquals(key1a.hashCode(), key1a.getOptimizedKey().hashCode());
+      assertEquals(key1b.hashCode(), key1b.getOptimizedKey().hashCode());
+   }
+   
    protected void assertScopeKey(Scope[] scopes, ScopeKey key) throws Exception
    {
       assertNotNull(scopes);




More information about the jboss-cvs-commits mailing list