package org.ovirt.engine.core.common.osinfo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.prefs.AbstractPreferences;
public class MapBackedPreferences extends AbstractPreferences implements Serializable {
private static final long serialVersionUID = -6359144559146465048L;
HashMap<String, String> preferencesStore;
ArrayList<String> childNodes;
/**
* Creates a preference node with the specified parent and the specified
* name relative to its parent.
*
* @see AbstractPreferences
*/
public MapBackedPreferences(AbstractPreferences parent, String name) {
super(parent, name);
preferencesStore = new HashMap<>();
childNodes = new ArrayList<>();
}
@Override
protected void putSpi(String key, String value) {
preferencesStore.put(key, value);
}
@Override
protected String getSpi(String key) {
return preferencesStore.get(key);
}
@Override
protected void removeSpi(String key) {
preferencesStore.remove(key);
}
@Override
protected void removeNodeSpi() {
if (parent() == null) {
throw new IllegalArgumentException("Cannot remove root node");
}
parent().remove(this.name());
}
@Override
protected String[] keysSpi() {
return preferencesStore.keySet().toArray(new String[preferencesStore.size()]);
}
@Override
protected String[] childrenNamesSpi() {
return childNodes.toArray(new String[childNodes.size()]);
}
@Override
protected AbstractPreferences childSpi(String name) {
childNodes.add(name);
return new MapBackedPreferences(this, name);
}
@Override
protected void syncSpi() {
throw new UnsupportedOperationException("This implementation doesn't support a backing store");
}
@Override
protected void flushSpi() {
throw new UnsupportedOperationException("This implementation doesn't support a backing store");
}
}