
fr.vergne.data.storage.impl.SimpleStorage Maven / Gradle / Ivy
package fr.vergne.data.storage.impl;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import fr.vergne.data.storage.ModifiableStorage;
import fr.vergne.data.storage.ReactiveStorage;
/**
* A {@link SimpleStorage} provide a basic implementation of
* {@link ModifiableStorage}. In order to allow a maximal customization, it also
* implements {@link ReactiveStorage}.
*
* @author Matthieu Vergne
*
* @param
*/
public class SimpleStorage implements ModifiableStorage,
ReactiveStorage {
private final Map map = new HashMap();
private final Set> listeners = new HashSet>();
@Override
public Set getKeys() {
return map.keySet();
}
@Override
public Object get(Key key) {
return map.get(key);
}
@Override
public void set(Key key, Object value) {
Object oldValue;
if (value == null) {
oldValue = map.remove(key);
} else {
oldValue = map.put(key, value);
}
for (OperationListener listener : listeners) {
listener.entrySet(key, oldValue, value);
}
}
@Override
public void remove(Key key) {
set(key, null);
}
@Override
public List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy