AbstractFallbackTransactionAttributeSource's DefaultCacheKey takes targetClass into account (again)

Issue: SPR-12536
(cherry picked from commit c087e51)
This commit is contained in:
Juergen Hoeller
2014-12-22 18:46:07 +01:00
parent 6d6cd56d4a
commit b30843aee0
3 changed files with 10 additions and 6 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

View File

@@ -23,6 +23,7 @@ import org.springframework.util.ObjectUtils;
/**
* Represent a method on a particular {@link Class} and is suitable as a key.
*
* <p>Mainly for internal use within the framework.
*
* @author Costin Leau
@@ -35,12 +36,14 @@ public final class MethodCacheKey {
private final Class<?> targetClass;
public MethodCacheKey(Method method, Class<?> targetClass) {
Assert.notNull(method, "method must be set.");
this.method = method;
this.targetClass = targetClass;
}
@Override
public boolean equals(Object other) {
if (this == other) {
@@ -50,13 +53,14 @@ public final class MethodCacheKey {
return false;
}
MethodCacheKey otherKey = (MethodCacheKey) other;
return (this.method.equals(otherKey.method) && ObjectUtils.nullSafeEquals(this.targetClass,
otherKey.targetClass));
return (this.method.equals(otherKey.method) &&
ObjectUtils.nullSafeEquals(this.targetClass, otherKey.targetClass));
}
@Override
public int hashCode() {
return this.method.hashCode() * 29 + (this.targetClass != null ? this.targetClass.hashCode() : 0);
return this.method.hashCode() + (this.targetClass != null ? this.targetClass.hashCode() * 29 : 0);
}
}