package org.jivesoftware.util;
import java.util.HashMap;
import java.util.Map;
/**
* This acts as a tag interface. It has no functionality, but it serves to make more clear the
* intention to pass around a special type of map.
*
* @param <K> key. see {@link Map}
* @param <V> value. see {@link Map}
*/
public abstract class PersistableMap<K, V> extends HashMap<K, V> {
private static final long serialVersionUID = 1L;
/**
* Custom method to put properties into the map, optionally without
* triggering persistence. This is used when the map is being
* initially loaded from the database.
*
* @param key The property name
* @param value The property value
* @param persist True if the changes should be persisted to the database
* @return The original value or null if the property did not exist
*/
public abstract V put(K key, V value, boolean persist);
}