package sk.stuba.fiit.perconik.utilities.configuration; import java.util.Map; import javax.annotation.Nullable; import com.google.common.collect.ForwardingMap; import static com.google.common.base.Preconditions.checkNotNull; /** * TODO * * @author Pavol Zbell * @since 1.0 */ public abstract class AbstractMapOptions extends ForwardingMap<String, Object> implements Options { final transient Map<String, Object> map; /** * Constructor for use by subclasses. */ protected AbstractMapOptions(final Map<String, Object> map) { this.map = checkNotNull(map); } /** * Underlying map of options. */ @Override protected final Map<String, Object> delegate() { return this.map; } public void fromMap(final Map<String, Object> map) { this.clear(); this.putAll(map); } @Override public abstract Object put(final String key, @Nullable final Object value); @Override public void putAll(final Map<? extends String, ?> map) { this.standardPutAll(map); } public Object get(final String key) { return this.map.get(key); } }