1. In GAP, in order to be "grouped" an entity must be able to answer a
String key. It need not implement any interface.
2. This is because the groups service does not directly reference the
underlying entities to which it refers, like portlet definitions or
persons, but operates on stub objects: IGroupMembers, IEntities and
IEntityGroups. It is these stub objects that must implement
IBasicEntity, which allows them to be grouped, cached and locked.
3. The groups service "registers" known "entity types", but these need
not implement IBasicEntity either, and in fact, you can register any
class or interface as an entity type, including Object and Thread.
This registration declares the allowable object types of entities
referred to by group members (the stub objects). A group with a given
"entity type" can contain stub objects whose underlying entity type is,
descends from or implements, the registered type. Perhaps "entity
type" is a misleading name. Maybe group type or leaf type would have
been better.
I'm going to cross-post this today, but will use only the list starting
tomorrow.
Dan
-Eric
I was talking about validating the entity type of a
prospective group member; it must equal the entity type of
its containing group. In this narrow context, equals is
being applied to objects of type Class. However, I think
you may be asking how are group members and IBasicEntities
in general checked for equality, and here, String equality
checks ARE at the core.
Dan