protected void purge(Reference ref) { // the logic for this method is taken from the original purge method // we're overriding, with added logic to track the expired key/value int index = hashIndex(ref.hashCode(), data.length); AccessibleEntry entry = (AccessibleEntry) data[index]; AccessibleEntry prev = null; Object key = null, value = null; while (entry != null) { if (purge(entry, ref)) { if (isHard(keyType)) key = entry.key(); else if (isHard(valueType)) value = entry.value(); if (prev == null) data[index] = entry.nextEntry(); else prev.setNextEntry(entry.nextEntry()); size--; break; } prev = entry; entry = entry.nextEntry(); } if (key != null) valueExpired(key); else if (value != null) keyExpired(value); }
protected void purge(Reference ref) { // the logic for this method is taken from the original purge method // we're overriding, with added logic to track the expired key/value int index = hashIndex(ref.hashCode(), data.length); AccessibleEntry entry = (AccessibleEntry) data[index]; AccessibleEntry prev = null; Object key = null, value = null; while (entry != null) { if (purge(entry, ref)) { if (isHard(keyType)) key = entry.key(); else if (isHard(valueType)) value = entry.value(); if (prev == null) data[index] = entry.nextEntry(); else prev.setNextEntry(entry.nextEntry()); size--; break; } prev = entry; entry = entry.nextEntry(); } if (key != null) valueExpired(key); else if (value != null) keyExpired(value); }
protected void purge(Reference ref) { // the logic for this method is taken from the original purge method // we're overriding, with added logic to track the expired key/value int index = hashIndex(ref.hashCode(), data.length); AccessibleEntry entry = (AccessibleEntry) data[index]; AccessibleEntry prev = null; Object key = null, value = null; while (entry != null) { if (purge(entry, ref)) { if (isHard(keyType)) key = entry.key(); else if (isHard(valueType)) value = entry.value(); if (prev == null) data[index] = entry.nextEntry(); else prev.setNextEntry(entry.nextEntry()); size--; break; } prev = entry; entry = entry.nextEntry(); } if (key != null) valueExpired(key); else if (value != null) keyExpired(value); }
protected void purge(Reference ref) { // the logic for this method is taken from the original purge method // we're overriding, with added logic to track the expired key/value int index = hashIndex(ref.hashCode(), data.length); AccessibleEntry entry = (AccessibleEntry) data[index]; AccessibleEntry prev = null; Object key = null, value = null; while (entry != null) { if (purge(entry, ref)) { if (isHard(keyType)) key = entry.key(); else if (isHard(valueType)) value = entry.value(); if (prev == null) data[index] = entry.nextEntry(); else prev.setNextEntry(entry.nextEntry()); size--; break; } prev = entry; entry = entry.nextEntry(); } if (key != null) valueExpired(key); else if (value != null) keyExpired(value); }