- Revision
- 1293
- Author
- rfscholte
- Date
- 2011-08-15 03:53:29 -0500 (Mon, 15 Aug 2011)
Log Message
Fix QDOX-236: HashCode is invalid
Modified Paths
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java
- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java
- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java
Diff
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaClass.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -859,7 +859,7 @@ @Override public int hashCode() { - return getFullyQualifiedName().hashCode(); + return 2 + getFullyQualifiedName().hashCode(); } // ideally this shouldn't be required, but we must as long as Types can be created without classLibrary
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaConstructor.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -72,11 +72,12 @@ } return result.toString(); } - + @Override - public int hashCode() { - int hashCode = getName().hashCode(); - hashCode *= getParameters().size(); + public int hashCode() + { + int hashCode = 3 + getName().hashCode(); + hashCode *= 31 + getParameters().hashCode(); return hashCode; }
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaField.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -161,6 +161,15 @@ @Override public int hashCode() { - return getDeclaringClass().hashCode() * getName().hashCode(); + int hashCode = 5; + if ( getDeclaringClass() != null ) + { + hashCode *=31 + getDeclaringClass().hashCode(); + } + if( getName() != null ) + { + hashCode *= 37 + getName().hashCode(); + } + return hashCode; } }
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaMethod.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -190,13 +190,22 @@ } @Override - public int hashCode() { - int hashCode = getName().hashCode(); - if (returns != null) + public int hashCode() + { + int hashCode = 7; + if ( getDeclaringClass() != null ) { - hashCode *= returns.hashCode(); + hashCode *= 31 + getDeclaringClass().hashCode(); } - hashCode *= getParameters().size(); + if ( getName() != null ) + { + hashCode *= 37 + getName().hashCode(); + } + hashCode *= 41 + getParameters().hashCode(); + if ( returns != null ) + { + hashCode *= 43 + returns.hashCode(); + } return hashCode; }
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaPackage.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -118,7 +118,7 @@ } public int hashCode() { - return name.hashCode(); + return 11 + name.hashCode(); } /**
Modified: trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java (1292 => 1293)
--- trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/main/java/com/thoughtworks/qdox/model/DefaultJavaParameter.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -123,7 +123,7 @@ @Override public int hashCode() { - return getType().hashCode(); + return 13 + getType().hashCode(); } @Override
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java (1292 => 1293)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaConstructorTest.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -70,6 +70,8 @@ @Test public void testHashCode() throws Exception { + assertTrue( "hashCode should never resolve to 0", newJavaConstructor( "" ).hashCode() != 0 ); + D c1 = newJavaConstructor( "Thong" ); D c2 = newJavaConstructor( "Thong" );
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java (1292 => 1293)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaFieldTest.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -46,6 +46,10 @@ return result; } + public void testHashCode() + { + assertTrue( "hashCode should never resolve to 0", newJavaField().hashCode() != 0 ); + } public void testGetCodeBlock() throws Exception { F fld = newJavaField();
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java (1292 => 1293)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaMethodTest.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -243,6 +243,8 @@ } public void testHashCode() throws Exception { + assertTrue( "hashCode should never resolve to 0", newJavaMethod( Type.VOID, "" ).hashCode() != 0 ); + setName(mth, "thing"); setParameters(mth, Arrays.asList( newJavaParameter(newType("int", 1), "blah"), newJavaParameter(newType("java.lang.String", 2), "thing"), newJavaParameter(newType("X", 3), "") )); setReturns(mth, newType("void"));
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java (1292 => 1293)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaPackageTest.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -35,6 +35,12 @@ assertTrue( pckg.equals( mockPckg ) ); } + public void testHashCode() + { + assertTrue( "hashCode should never resolve to 0", newJavaPackage( "" ).hashCode() != 0 ); + } + + @Test public void testListAccessors() throws Exception { P pckg = newJavaPackage( "com.foo.bar" );
Modified: trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java (1292 => 1293)
--- trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java 2011-08-13 22:23:49 UTC (rev 1292) +++ trunk/qdox/src/test/java/com/thoughtworks/qdox/model/JavaParameterTest.java 2011-08-15 08:53:29 UTC (rev 1293) @@ -1,5 +1,6 @@ package com.thoughtworks.qdox.model; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.*; import junit.framework.TestCase; @@ -15,6 +16,11 @@ //setters protected abstract void setMethod(P parameter, JavaMethod method); + public void testHashCode() + { + assertTrue( "hashCode should never resolve to 0", newJavaParameter( Type.VOID, "" ).hashCode() != 0 ); + } + protected Type newType(String typeName) { Type result = mock(Type.class); when( result.getFullyQualifiedName()).thenReturn( typeName );
To unsubscribe from this list please visit:
