package org.ehcache.impl.internal.store.heap.holders;
import org.ehcache.impl.internal.store.heap.holders.BaseOnHeapKey;
import org.ehcache.impl.internal.store.heap.holders.OnHeapKey;
import org.ehcache.spi.copy.Copier;
public class CopiedOnHeapKey<K> extends BaseOnHeapKey<K> {
private final K copiedKey;
private final Copier<K> keyCopier;
public CopiedOnHeapKey(final K actualKeyObject, final Copier<K> keyCopier) {
super(actualKeyObject.hashCode());
this.keyCopier = keyCopier;
this.copiedKey = keyCopier.copyForWrite(actualKeyObject);
}
@Override
public K getActualKeyObject() {
return keyCopier.copyForRead(copiedKey);
}
K getCopiedKey() {
return copiedKey;
}
@Override
public boolean equals(Object other) {
if (other instanceof CopiedOnHeapKey) {
return copiedKey.equals(((CopiedOnHeapKey)other).copiedKey);
} else if (other instanceof OnHeapKey) {
return copiedKey.equals(((OnHeapKey)other).getActualKeyObject());
}
return false;
}
}