Ensure ClassPathResources with same path have same hash code
This commit aligns the hashCode() implementation in ClassPathResource with the recent change to the logic in equals(). See gh-29263
This commit is contained in:
@@ -286,7 +286,7 @@ public class ClassPathResource extends AbstractFileResolvingResource {
|
||||
*/
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return this.path.hashCode();
|
||||
return this.absolutePath.hashCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -90,6 +90,14 @@ class ClassPathResourceTests {
|
||||
assertThat(resource2).isEqualTo(resource1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void resourcesWithEquivalentAbsolutePathsHaveSameHashCode() {
|
||||
ClassPathResource resource1 = new ClassPathResource("Resource.class", getClass());
|
||||
ClassPathResource resource2 = new ClassPathResource("org/springframework/core/io/Resource.class", getClass().getClassLoader());
|
||||
assertThat(resource1.getPath()).isEqualTo(resource2.getPath());
|
||||
assertThat(resource1).hasSameHashCodeAs(resource2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void resourcesWithEquivalentAbsolutePathsFromDifferentClassLoadersAreNotEqual() {
|
||||
class SimpleThrowawayClassLoader extends OverridingClassLoader {
|
||||
|
||||
Reference in New Issue
Block a user