package com.cache2.key;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Cache1Key implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4621962904593455924L;
private final Class<?> declaringClass;
private final String methodName;
private final Class<?>[] types;
private final byte[] argHash;
public Cache1Key(Class<?> declaringClass, String methodName,
Class<?>[] types, byte[] argHash) {
super();
this.declaringClass = declaringClass;
this.methodName = methodName;
this.types = types;
this.argHash = argHash;
}
@Override
public int hashCode() {
return new HashCodeBuilder(17, 31).append(declaringClass)
.append(methodName).append(types).append(argHash).toHashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Cache1Key)) {
return false;
}
Cache1Key rhs = (Cache1Key) obj;
return new EqualsBuilder()
.append(declaringClass, rhs.getDeclaringClass())
.append(methodName, rhs.getMethodName())
.append(types, rhs.getTypes())
.append(argHash, rhs.getArgHash()).isEquals();
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
/**
* @return the declaringClass
*/
public Class<?> getDeclaringClass() {
return declaringClass;
}
/**
* @return the methodName
*/
public String getMethodName() {
return methodName;
}
/**
* @return the types
*/
public Class<?>[] getTypes() {
return types;
}
/**
* @return the argHash
*/
public byte[] getArgHash() {
return argHash;
}
}