package org.jivesoftware.openfire.group;
import java.util.Map;
import java.util.Set;
/**
* This map specifies additional methods that understand groups among
* the entries in the map.
*
* @author Tom Evans
*/
public interface GroupAwareMap<K, V> extends Map<K, V> {
/**
* Returns true if the map's keySet contains the given JID. If the JID
* is not found explicitly, search the keySet for groups and look
* for the JID in each of the corresponding groups.
*
* @param key The target, presumably a JID
* @return True if the target is in the key list, or in any groups in the key list
*/
boolean includesKey( Object key );
/**
* Returns true if the map contains a value referencing the given JID. If the JID
* is not found explicitly, search the values for groups and look
* for the JID in each of the corresponding groups.
*
* @param value The target, presumably a JID
* @return True if the target is in the key list, or in any groups in the key list
*/
boolean includesValue( Object value );
/**
* Returns the groups that are implied (resolvable) from the keys in the map.
*
* @return A new Set containing the groups in the keySet
*/
Set<Group> getGroupsFromKeys();
/**
* Returns the groups that are implied (resolvable) from the values in the map.
*
* @return A new Set containing the groups among the mapped values
*/
Set<Group> getGroupsFromValues();
}