package com.yoursway.commons.commitmodel.demo.properties.state;
import static com.google.common.collect.Maps.newHashMap;
import java.util.Map;
import java.util.Map.Entry;
public class PropertyBagState {
private Map<String, String> values = newHashMap();
public PropertyBagState() {
}
public PropertyBagState(PropertyBagState parent) {
values.putAll(parent.values);
}
public String get(String name) {
return values.get(name);
}
public void set(String name, String newValue) {
if (name == null)
throw new NullPointerException("name is null");
if (newValue == null)
values.remove(name);
else
values.put(name, newValue);
}
public PropertyBagState createChild() {
return new PropertyBagState(this);
}
public void update(Map<String, String> changes) {
for (Entry<String, String> change : changes.entrySet())
set(change.getKey(), change.getValue());
}
}