package com.yoursway.commons.commitmodel.demo.properties; import static com.google.common.collect.Maps.newHashMap; import java.util.Map; import com.yoursway.commons.commitmodel.User; import com.yoursway.commons.commitmodel.demo.properties.state.PropertyBagState; public class PropertyBagUpdateSession { private final PropertyBag bag; private final Map<String, String> changes = newHashMap(); public PropertyBagUpdateSession(PropertyBag bag) { if (bag == null) throw new NullPointerException("bag is null"); this.bag = bag; } public void put(String name, String value) { if (name == null) throw new NullPointerException("name is null"); changes.put(name, value); } public void commit(User user) { PropertyBagState state = bag.getState().createChild(); state.update(changes); bag.setState(state); } }