blob: e31ca867313865030a2de5324c9a5be243676df9 [file] [log] [blame]
package brooklyn.entity;
import java.util.Collection;
/**
* An {@link Entity} that groups together other entities.
*
* The grouping can be for any purpose, such as allowing easy management/monitoring of
* a group of entities. The grouping could be static (i.e. a fixed set of entities)
* or dynamic (i.e. contains all entities that match some filter).
*/
public interface Group extends Entity {
/**
* Return the entities that are members of this group.
*/
Collection<Entity> getMembers();
/**
* @return True if it is a member of this group.
*/
boolean hasMember(Entity member);
/**
* Adds the given member, returning true if this modifies the set of members (i.e. it was not already a member).
*/
boolean addMember(Entity member);
/**
* Removes the given member, returning true if this modifies the set of members (i.e. it was a member).
*/
boolean removeMember(Entity member);
/**
* @return The number of members in this group.
*/
Integer getCurrentSize();
}