/** Replaces the value of the given entry. */
public Object replaceValue(Entry e, Object value) {
checkEntry(e);
Object oldValue = ((LocationAwareEntry) e).setValue(value);
return oldValue;
}
/** Determines whether a given entry is valid. */
protected void checkEntry(Entry ent) throws InvalidEntryException {
if(ent == null || !(ent instanceof LocationAwareEntry))
throw new InvalidEntryException("invalid entry");
}
/** Inner class for a location-aware entry. */
protected static class LocationAwareEntry
extends MyEntry implements Entry {
/** Position where the entry is stored. */
private Position loc;
public LocationAwareEntry(Object key, Object value) {
super(key, value);
}
public LocationAwareEntry(Object key, Object value, Position pos) {
super(key, value);
loc = pos;
}
protected Position location() {
return loc;
}
protected Position setLocation(Position pos) {
Position oldPosition = location();
loc = pos;
return oldPosition;
}
protected Object setKey(Object key) {
Object oldKey = key();
k = key;
return oldKey;
}
protected Object setValue(Object value) {
Object oldValue = value();
v = value;
return oldValue;
}
}