com.atlassian.jira.crowd.embedded
Class JiraDirectoryManager

java.lang.Object
  extended by com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
      extended by com.atlassian.jira.crowd.embedded.JiraDirectoryManager
All Implemented Interfaces:
com.atlassian.crowd.manager.directory.DirectoryManager

public class JiraDirectoryManager
extends com.atlassian.crowd.manager.directory.DirectoryManagerGeneric

Overrides the crowd implementation of DirectoryManager as a workaround for CWD-4028.

The crowd-supplied implementation passes around directoryId and frequently uses the private method getDirectoryImplementation(long) to obtain the corresponding RemoteDirectory, generally to make a single call on it, throw it away, and get a new one. If it were a trivial getter, then this would not matter, but it isn't and the costs add up, particularly for large customers.

This overrides the implementation of the searching functions to stop them from doing this. Repeated calls to getDirectoryImplementation(long) are factored out to a single call up front, and the RemoteDirectory is passed around instead of the directoryId.

Since:
v6.3.6

Constructor Summary
JiraDirectoryManager(com.atlassian.crowd.embedded.spi.DirectoryDao directoryDao, com.atlassian.crowd.dao.application.ApplicationDAO applicationDAO, com.atlassian.event.api.EventPublisher eventPublisher, com.atlassian.crowd.manager.permission.PermissionManager permissionManager, com.atlassian.crowd.directory.loader.DirectoryInstanceLoader directoryInstanceLoader, com.atlassian.crowd.manager.directory.DirectorySynchroniser directorySynchroniser, com.atlassian.crowd.manager.directory.monitor.poller.DirectoryPollerManager directoryPollerManager, com.atlassian.crowd.manager.lock.DirectoryLockManager directoryLockManager, com.atlassian.crowd.manager.directory.SynchronisationStatusManager synchronisationStatusManager, com.atlassian.crowd.dao.permission.InternalUserPermissionDAO userPermissionDAO)
           
 
Method Summary
 boolean isGroupNestedGroupMember(long directoryId, String childGroup, String parentGroup)
           
 boolean isUserNestedGroupMember(long directoryId, String username, String groupName)
           
<T> List<T>
searchDirectGroupRelationships(long directoryId, com.atlassian.crowd.search.query.membership.MembershipQuery<T> query)
           
<T> List<T>
searchNestedGroupRelationships(long directoryId, com.atlassian.crowd.search.query.membership.MembershipQuery<T> query)
           
 
Methods inherited from class com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
addAllGroups, addAllUsers, addAllUsersToGroup, addDirectory, addGroup, addGroupToGroup, addUser, addUserToGroup, authenticateUser, findAllDirectories, findDirectoryById, findDirectoryByName, findGroupByName, findGroupWithAttributesByName, findUserByName, findUserWithAttributesByName, getDirectorySynchronisationInformation, isGroupDirectGroupMember, isSynchronisable, isSynchronising, isUserDirectGroupMember, removeDirectory, removeGroup, removeGroupAttributes, removeGroupFromGroup, removeUser, removeUserAttributes, removeUserFromGroup, renameGroup, renameUser, searchDirectories, searchGroups, searchUsers, storeGroupAttributes, storeUserAttributes, supportsNestedGroups, synchroniseCache, synchroniseCache, updateDirectory, updateGroup, updateUser, updateUserCredential
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JiraDirectoryManager

public JiraDirectoryManager(com.atlassian.crowd.embedded.spi.DirectoryDao directoryDao,
                            com.atlassian.crowd.dao.application.ApplicationDAO applicationDAO,
                            com.atlassian.event.api.EventPublisher eventPublisher,
                            com.atlassian.crowd.manager.permission.PermissionManager permissionManager,
                            com.atlassian.crowd.directory.loader.DirectoryInstanceLoader directoryInstanceLoader,
                            com.atlassian.crowd.manager.directory.DirectorySynchroniser directorySynchroniser,
                            com.atlassian.crowd.manager.directory.monitor.poller.DirectoryPollerManager directoryPollerManager,
                            com.atlassian.crowd.manager.lock.DirectoryLockManager directoryLockManager,
                            com.atlassian.crowd.manager.directory.SynchronisationStatusManager synchronisationStatusManager,
                            com.atlassian.crowd.dao.permission.InternalUserPermissionDAO userPermissionDAO)
Method Detail

searchDirectGroupRelationships

public <T> List<T> searchDirectGroupRelationships(long directoryId,
                                                  com.atlassian.crowd.search.query.membership.MembershipQuery<T> query)
                                       throws com.atlassian.crowd.exception.OperationFailedException,
                                              com.atlassian.crowd.exception.DirectoryNotFoundException
Specified by:
searchDirectGroupRelationships in interface com.atlassian.crowd.manager.directory.DirectoryManager
Overrides:
searchDirectGroupRelationships in class com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
Throws:
com.atlassian.crowd.exception.OperationFailedException
com.atlassian.crowd.exception.DirectoryNotFoundException

isUserNestedGroupMember

public boolean isUserNestedGroupMember(long directoryId,
                                       String username,
                                       String groupName)
                                throws com.atlassian.crowd.exception.OperationFailedException,
                                       com.atlassian.crowd.exception.DirectoryNotFoundException
Specified by:
isUserNestedGroupMember in interface com.atlassian.crowd.manager.directory.DirectoryManager
Overrides:
isUserNestedGroupMember in class com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
Throws:
com.atlassian.crowd.exception.OperationFailedException
com.atlassian.crowd.exception.DirectoryNotFoundException

isGroupNestedGroupMember

public boolean isGroupNestedGroupMember(long directoryId,
                                        String childGroup,
                                        String parentGroup)
                                 throws com.atlassian.crowd.exception.OperationFailedException,
                                        com.atlassian.crowd.exception.DirectoryNotFoundException
Specified by:
isGroupNestedGroupMember in interface com.atlassian.crowd.manager.directory.DirectoryManager
Overrides:
isGroupNestedGroupMember in class com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
Throws:
com.atlassian.crowd.exception.OperationFailedException
com.atlassian.crowd.exception.DirectoryNotFoundException

searchNestedGroupRelationships

public <T> List<T> searchNestedGroupRelationships(long directoryId,
                                                  com.atlassian.crowd.search.query.membership.MembershipQuery<T> query)
                                       throws com.atlassian.crowd.exception.OperationFailedException,
                                              com.atlassian.crowd.exception.DirectoryNotFoundException
Specified by:
searchNestedGroupRelationships in interface com.atlassian.crowd.manager.directory.DirectoryManager
Overrides:
searchNestedGroupRelationships in class com.atlassian.crowd.manager.directory.DirectoryManagerGeneric
Throws:
com.atlassian.crowd.exception.OperationFailedException
com.atlassian.crowd.exception.DirectoryNotFoundException


Copyright © 2002-2014 Atlassian. All Rights Reserved.