|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.user.impl.cache.CachingGroupManager
public class CachingGroupManager
Uses a generic caching strategy to provide caching for any implementation of
GroupManager.
| Field Summary | |
|---|---|
protected CacheManager |
cacheManager
|
protected EntityRepositoryCache |
entityRepositoryCache
|
protected GroupCache |
groupCache
|
protected GroupsForUserCache |
groupsForUserCache
|
protected MembershipCache |
membershipCache
|
protected GroupManager |
underlyingGroupManager
|
| Constructor Summary | |
|---|---|
CachingGroupManager()
|
|
CachingGroupManager(GroupManager underlyingGroupManager,
CacheManager cacheManager)
|
|
| Method Summary | |
|---|---|
void |
addMembership(Group group,
User user)
Adds the user to the specified group. |
Group |
createGroup(String groupName)
Create a new group with the specified name. |
Pager |
getExternalMemberNames(Group group)
Retrieves the names of those members of the specified group which are stored in another repository. |
Group |
getGroup(String groupName)
Retrieves the group with the given name. |
Pager |
getGroups()
Retrieves all groups in this repository. |
Pager |
getGroups(User user)
Caches the list of groups retrieved for a particular user. |
Pager |
getLocalMemberNames(Group group)
Retrieves the names of those members of the specified group which are also stored in this repository. |
Pager |
getMemberNames(Group group)
Retrieves the names of all members of the specified group. |
Repository |
getRepository()
|
Repository |
getRepository(Entity entity)
|
boolean |
hasMembership(Group group,
User user)
Returns true if the user is a member of the specified group. |
void |
init(HashMap args)
Used during configuration initialization. |
boolean |
isCreative()
Used to detemine whether an entity can be created (eg, can call UserManager.createUser(String) or
GroupManager.createGroup(String). |
boolean |
isReadOnly(Group group)
Returns true if the specified group and membership of the
specified group cannot be modified in the repository. |
void |
removeGroup(Group group)
Remove the group specified, if it exists in this repository. |
void |
removeMembership(Group group,
User user)
Removes the user from the specified group. |
boolean |
supportsExternalMembership()
Returns true if the repository supports users in other
repositories being members of groups in this repository. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected GroupManager underlyingGroupManager
protected CacheManager cacheManager
protected GroupCache groupCache
protected MembershipCache membershipCache
protected GroupsForUserCache groupsForUserCache
protected EntityRepositoryCache entityRepositoryCache
| Constructor Detail |
|---|
public CachingGroupManager()
public CachingGroupManager(GroupManager underlyingGroupManager,
CacheManager cacheManager)
| Method Detail |
|---|
public Pager getGroups(User user)
throws EntityException
Group objects in the Pager, they are retrieved using getGroup(String). This
should be relatively fast for subsequent lookups because this method also uses a cache.
getGroups in interface GroupManageruser - the user whose groups will be retrieved. Must not be null.
Group type used by the underlying manager.
Returns an empty pager if no such groups exist.
EntityException - if there is an error retrieving the groups.
public Group getGroup(String groupName)
throws EntityException
GroupManagernull if the
group does not exist in this repository.
getGroup in interface GroupManagerGroup or null if the group does not exist.
EntityException
public Group createGroup(String groupName)
throws EntityException
GroupManager
createGroup in interface GroupManagerEntityException - if the Group could not be created.
public void removeGroup(Group group)
throws EntityException
GroupManagerIllegalArgumentException will be thrown.
If required to maintain the consistency of the repository, the group manager
should remove users from the group before removing the group itself.
removeGroup in interface GroupManagerEntityException - if the Group could not be removed.
public void addMembership(Group group,
User user)
throws EntityException
GroupManagerGroupManager.supportsExternalMembership()
returns true, the user will be added as an external user.
addMembership in interface GroupManagerEntityException
public boolean hasMembership(Group group,
User user)
throws EntityException
GroupManagerGroupManager.supportsExternalMembership()
returns true, external members will be checked as well.
hasMembership in interface GroupManagerEntityException
public void removeMembership(Group group,
User user)
throws EntityException
GroupManager
removeMembership in interface GroupManagerEntityException - if the membership could not be removed.
public Repository getRepository(Entity entity)
throws EntityException
getRepository in interface EntityManagerRepository in which the entity is stored, otherwise null.
EntityException
public Pager getGroups()
throws EntityException
GroupManager
getGroups in interface GroupManagerPager containing a Group for each group managed
by the repository. An empty pager will be returned if the repository does
not contain any groups.
EntityException
public Pager getMemberNames(Group group)
throws EntityException
GroupManager
getMemberNames in interface GroupManagerPager containing a String with the name of each
member of the group. An empty pager will be returned if the group has no
members.
EntityException
public Pager getLocalMemberNames(Group group)
throws EntityException
GroupManagerGroupManager.supportsExternalMembership() returns false, this
call is equivalent to GroupManager.getMemberNames(Group).
getLocalMemberNames in interface GroupManagerPager containing a String with the name of each
member of the group which is stored in the same repository. An empty pager
will be returned if the group has no local members.
EntityException
public Pager getExternalMemberNames(Group group)
throws EntityException
GroupManagerGroupManager.supportsExternalMembership() returns false, this
method throws UnsupportedOperationException.
getExternalMemberNames in interface GroupManagerPager containing a String with the name of each
member of the group which is stored in a different repository. An empty pager
will be returned if the group has no external members.
EntityException
public boolean supportsExternalMembership()
throws EntityException
GroupManagertrue if the repository supports users in other
repositories being members of groups in this repository.
Typically this is true of an application-specific Hibernate repository, but
not of a company's LDAP server. It is designed to allow the LDAP users to
be members of the application's groups for flexible application-level
security.
supportsExternalMembership in interface GroupManagerEntityException
public boolean isReadOnly(Group group)
throws EntityException
GroupManagertrue if the specified group and membership of the
specified group cannot be modified in the repository.
If this returns true, invoking methods which attempt to
modify the group or membership of the group will fail with
UnsupportedOperationException.
isReadOnly in interface GroupManagerEntityExceptionpublic Repository getRepository()
getRepository in interface EntityManagerRepository which is managed by this instance.public boolean isCreative()
EntityManager
Used to detemine whether an entity can be created (eg, can call UserManager.createUser(String) or
GroupManager.createGroup(String).
isCreative in interface EntityManagerEntity objects can be created by this manager, or false to indicate
not.
public void init(HashMap args)
throws ConfigurationException
EntityManager
init in interface EntityManagerConfigurationException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||