com.atlassian.crowd.integration.directory.internal
Class InternalDirectory

java.lang.Object
  extended by com.atlassian.crowd.integration.directory.internal.InternalDirectory
All Implemented Interfaces:
BatchingRemoteDirectory, RemoteDirectory, AttributeAware
Direct Known Subclasses:
DelegatedAuthenticationDirectory

public class InternalDirectory
extends java.lang.Object
implements BatchingRemoteDirectory

Internal directory connector. Stores all entity information to the database used by the Crowd Server.


Field Summary
static java.lang.String ATTRIBUTE_PASSWORD_HISTORY_COUNT
           
static java.lang.String ATTRIBUTE_PASSWORD_MAX_ATTEMPTS
           
static java.lang.String ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME
           
static java.lang.String ATTRIBUTE_PASSWORD_REGEX
           
static java.lang.String ATTRIBUTE_USER_ENCRYPTION_METHOD
           
protected  AttributeValuesHolder attributes
           
static java.lang.String DESCRIPTIVE_NAME
           
protected  DirectoryDAO directoryDAO
           
protected  GroupDAO groupDAO
           
protected  I18nHelper i18nHelper
           
protected  org.apache.log4j.Logger logger
           
protected  MembershipDAO membershipDAO
           
protected  PasswordEncoderFactory passwordEncoderFactory
           
protected  PasswordHelper passwordHelper
           
protected  UserDAO userDAO
           
 
Constructor Summary
InternalDirectory()
           
 
Method Summary
 java.util.Collection<Group> addAllGroups(java.util.Set<GroupTemplate> groups)
          Adds a collection of groups to the directory store.
 java.util.Collection<User> addAllUsers(java.util.Set<UserTemplateWithCredentialAndAttributes> users)
          Adds a collection of users to the directory store.
 java.util.Collection<java.lang.String> addAllUsersToGroup(java.util.Set<java.lang.String> userNames, java.lang.String groupName)
          Adds a collection of group memberships to the directory store.
 Group addGroup(GroupTemplate group)
          Adds a group.
 void addGroupToGroup(java.lang.String childGroup, java.lang.String parentGroup)
          Adds a group as a member of a parent group.
 User addUser(UserTemplate user, PasswordCredential credential)
          Adds a user and the following custom attributes: - RemotePrincipalConstants.PASSWORD_LASTCHANGED set to the current time.
 void addUserToGroup(java.lang.String username, java.lang.String groupName)
          Adds a user as a member of a group.
 User authenticate(java.lang.String name, PasswordCredential credential)
          Authenticates a user with the directory store.
protected  long currentPrincipalInvalidPasswordAttempts(InternalUserWithAttributes user)
           
 Group findGroupByName(java.lang.String name)
          Finds the group that matches the supplied name.
 java.util.Collection<Group> findGroupsByNames(java.util.Collection<java.lang.String> names)
          Finds a collection of groups matching a collection of names.
 GroupWithAttributes findGroupWithAttributesByName(java.lang.String name)
          Finds the group that matches the supplied name.
 User findUserByName(java.lang.String name)
          Finds the user that matches the supplied name.
 java.util.Collection<User> findUsersByNames(java.util.Collection<java.lang.String> names)
          Finds a collection of users matching a collection of names.
 UserWithAttributes findUserWithAttributesByName(java.lang.String name)
          Finds the user that matches the supplied name.
 java.lang.String getAttribute(java.lang.String name)
           
 java.util.Set<java.lang.String> getAttributeNames()
           
 java.util.List<java.lang.String> getAttributes(java.lang.String name)
           
 java.lang.String getDescriptiveName()
          Returns a descriptive name for the type of directory.
 long getDirectoryId()
          Gets the internal unique directoryId of the directory store.
protected  PasswordEncoder getEncoder()
           
 boolean hasAttribute(java.lang.String name)
           
 boolean isGroupDirectGroupMember(java.lang.String childGroup, java.lang.String parentGroup)
          Determines if a group is a direct member of another group.
 boolean isUserDirectGroupMember(java.lang.String username, java.lang.String groupName)
          Determines if a user is a direct member of a group.
 void removeGroup(java.lang.String name)
          Removes the group that matches the supplied name.
 void removeGroupAttributes(java.lang.String groupName, java.lang.String attributeName)
          Removes all the values for a single attribute key for a group.
 void removeGroupFromGroup(java.lang.String childGroup, java.lang.String parentGroup)
          Removes a group as a member of a parent group.
 void removeUser(java.lang.String name)
          Removes the user that matches the supplied name.
 void removeUserAttributes(java.lang.String username, java.lang.String attributeName)
          Removes all the values for a single attribute key for a user.
 void removeUserFromGroup(java.lang.String username, java.lang.String groupName)
          Removes a user as a member of a group.
 Group renameGroup(java.lang.String oldName, java.lang.String newName)
          Renames a group.
 User renameUser(java.lang.String oldName, java.lang.String newName)
          Renames a user.
protected  boolean requiresPasswordChange(InternalUserWithAttributes user)
           
 java.util.List searchGroupRelationships(MembershipQuery query)
          Searches for membership information.
 java.util.List searchGroups(EntityQuery query)
          Searches for groups that match the supplied query criteria.
 java.util.List searchUsers(EntityQuery query)
          Searches for users that match the supplied query criteria.
 void setAttributes(java.util.Map<java.lang.String,java.lang.String> attributes)
          Called by the DirectoryInstanceLoader after constructing an InternalDirectory.
 void setDirectoryDAO(DirectoryDAO directoryDAO)
           
 void setDirectoryId(long id)
          Called by the DirectoryInstanceLoader after constructing an InternalDirectory.
 void setGroupDAO(GroupDAO groupDAO)
           
 void setI18nHelper(I18nHelper i18nHelper)
           
 void setMembershipDAO(MembershipDAO membershipDAO)
           
 void setPasswordEncoderFactory(PasswordEncoderFactory passwordEncoderFactory)
           
 void setPasswordHelper(PasswordHelper passwordHelper)
           
 void setUserDAO(UserDAO userDAO)
           
 void storeGroupAttributes(java.lang.String groupName, java.util.Map<java.lang.String,java.util.List<java.lang.String>> attributes)
          Adds or updates a group's attributes with the new Map of attribute values in the directory specified by the passed in directoryId.
 void storeUserAttributes(java.lang.String username, java.util.Map<java.lang.String,java.util.List<java.lang.String>> attributes)
          Adds or updates a user's attributes with the new Map of attribute values in the directory specified by the passed in directoryId.
 boolean supportsNestedGroups()
          Allows us to only display nested-group related UI for directories that support it.
 void testConnection()
          Does nothing, connection is determined by the ability to communicate with the database.
 Group updateGroup(GroupTemplate group)
          Updates the group.
 User updateUser(UserTemplate user)
          Updates the user.
 void updateUserCredential(java.lang.String name, PasswordCredential credential)
          Updates the password for a user.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DESCRIPTIVE_NAME

public static final java.lang.String DESCRIPTIVE_NAME
See Also:
Constant Field Values

ATTRIBUTE_PASSWORD_REGEX

public static final java.lang.String ATTRIBUTE_PASSWORD_REGEX
See Also:
Constant Field Values

ATTRIBUTE_PASSWORD_MAX_ATTEMPTS

public static final java.lang.String ATTRIBUTE_PASSWORD_MAX_ATTEMPTS
See Also:
Constant Field Values

ATTRIBUTE_PASSWORD_HISTORY_COUNT

public static final java.lang.String ATTRIBUTE_PASSWORD_HISTORY_COUNT
See Also:
Constant Field Values

ATTRIBUTE_USER_ENCRYPTION_METHOD

public static final java.lang.String ATTRIBUTE_USER_ENCRYPTION_METHOD
See Also:
Constant Field Values

ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME

public static final java.lang.String ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME
See Also:
Constant Field Values

logger

protected final org.apache.log4j.Logger logger

attributes

protected AttributeValuesHolder attributes

passwordHelper

protected PasswordHelper passwordHelper

passwordEncoderFactory

protected PasswordEncoderFactory passwordEncoderFactory

directoryDAO

protected DirectoryDAO directoryDAO

userDAO

protected UserDAO userDAO

groupDAO

protected GroupDAO groupDAO

membershipDAO

protected MembershipDAO membershipDAO

i18nHelper

protected I18nHelper i18nHelper
Constructor Detail

InternalDirectory

public InternalDirectory()
Method Detail

getDirectoryId

public long getDirectoryId()
Description copied from interface: RemoteDirectory
Gets the internal unique directoryId of the directory store.

Specified by:
getDirectoryId in interface RemoteDirectory
Returns:
The directoryId.

setDirectoryId

public void setDirectoryId(long id)
Called by the DirectoryInstanceLoader after constructing an InternalDirectory.

Specified by:
setDirectoryId in interface RemoteDirectory
Parameters:
id - The unique id of the Directory stored in the database.

setAttributes

public void setAttributes(java.util.Map<java.lang.String,java.lang.String> attributes)
Called by the DirectoryInstanceLoader after constructing an InternalDirectory.

Specified by:
setAttributes in interface RemoteDirectory
Parameters:
attributes - attributes map.

getAttributes

public java.util.List<java.lang.String> getAttributes(java.lang.String name)
Specified by:
getAttributes in interface AttributeAware
Parameters:
name - attribute name.
Returns:
collection of attribute values or an empty list if the attribute with the given name does not exist.

getAttribute

public java.lang.String getAttribute(java.lang.String name)
Specified by:
getAttribute in interface AttributeAware
Parameters:
name - attribute name.
Returns:
single attribute value or null if the attribute with the given name does not exist. If multiple attribute values exist, any one could be returned.

getAttributeNames

public java.util.Set<java.lang.String> getAttributeNames()
Specified by:
getAttributeNames in interface AttributeAware
Returns:
set of attribute names.

hasAttribute

public boolean hasAttribute(java.lang.String name)
Specified by:
hasAttribute in interface AttributeAware
Parameters:
name - attribute name.
Returns:
true if an only if the user has an attribute with the supplied name and has one or more values.

getDescriptiveName

public java.lang.String getDescriptiveName()
Description copied from interface: RemoteDirectory
Returns a descriptive name for the type of directory.

Specified by:
getDescriptiveName in interface RemoteDirectory
Returns:
descriptive name.

findUserByName

public User findUserByName(java.lang.String name)
                    throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Finds the user that matches the supplied name.

Specified by:
findUserByName in interface RemoteDirectory
Parameters:
name - the name of the user (username).
Returns:
user entity.
Throws:
ObjectNotFoundException - a user with the supplied name does not exist.

findUserWithAttributesByName

public UserWithAttributes findUserWithAttributesByName(java.lang.String name)
                                                throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Finds the user that matches the supplied name.

Specified by:
findUserWithAttributesByName in interface RemoteDirectory
Parameters:
name - the name of the user (username).
Returns:
user entity with attributes.
Throws:
ObjectNotFoundException - a user with the supplied name does not exist.

authenticate

public User authenticate(java.lang.String name,
                         PasswordCredential credential)
                  throws ObjectNotFoundException,
                         InactiveAccountException,
                         InvalidAuthenticationException
Description copied from interface: RemoteDirectory
Authenticates a user with the directory store.

Specified by:
authenticate in interface RemoteDirectory
Parameters:
name - The name of the user (username).
credential - The supplied credentials (password).
Returns:
user entity.
Throws:
InactiveAccountException - The supplied user is inactive.
InvalidAuthenticationException - Authentication with the provided credentials failed OR the user has exceeded the maximum number of failed authentication attempts.
ObjectNotFoundException - The user wth the supplied name does not exist.

currentPrincipalInvalidPasswordAttempts

protected long currentPrincipalInvalidPasswordAttempts(InternalUserWithAttributes user)
Parameters:
user - user with attributes.
Returns:
long value of the invalid password attempts attribute on the user.

requiresPasswordChange

protected boolean requiresPasswordChange(InternalUserWithAttributes user)
Parameters:
user - user with attributes.
Returns:
true if the requires password change attribute on the user is set to true, or if the password last changed attribute on the user exceeds the password max change time attribute on the directory (ie. password timeout).

addUser

public User addUser(UserTemplate user,
                    PasswordCredential credential)
             throws ObjectNotFoundException,
                    InvalidCredentialException,
                    InvalidUserException
Adds a user and the following custom attributes: - RemotePrincipalConstants.PASSWORD_LASTCHANGED set to the current time. - RemotePrincipalConstants.REQUIRES_PASSWORD_CHANGE set to false.

Specified by:
addUser in interface RemoteDirectory
Parameters:
user - template of the user to add.
credential - password. May be null, since JIRA creates a user in two steps
Returns:
added user.
Throws:
ObjectNotFoundException - the user could not be looked up after creation or the directory with the ID of user.directoryId does not exist.
InvalidCredentialException - the password does not match the regular expression standard defined by the directory.
InvalidUserException - The supplied user is invalid.

getEncoder

protected PasswordEncoder getEncoder()

updateUser

public User updateUser(UserTemplate user)
                throws InvalidUserException,
                       ObjectNotFoundException
Description copied from interface: RemoteDirectory
Updates the user.

Specified by:
updateUser in interface RemoteDirectory
Parameters:
user - The user to update.
Returns:
the updated user retrieved from the underlying store.
Throws:
InvalidUserException - the supplied user is invalid.
ObjectNotFoundException - the user does not exist in the directory store.

updateUserCredential

public void updateUserCredential(java.lang.String name,
                                 PasswordCredential credential)
                          throws ObjectNotFoundException,
                                 InvalidCredentialException
Description copied from interface: RemoteDirectory
Updates the password for a user.

Specified by:
updateUserCredential in interface RemoteDirectory
Parameters:
name - The name of the user (username).
credential - The new credential (password).
Throws:
ObjectNotFoundException - The user does not exist.
InvalidCredentialException - The supplied credential is invalid.

renameUser

public User renameUser(java.lang.String oldName,
                       java.lang.String newName)
                throws ObjectNotFoundException,
                       InvalidUserException
Description copied from interface: RemoteDirectory
Renames a user.

Specified by:
renameUser in interface RemoteDirectory
Parameters:
oldName - name of existing user.
newName - desired name of user.
Returns:
renamed user.
Throws:
ObjectNotFoundException - if the user with the existing name does not exist.
InvalidUserException - if the new username is invalid or already exists in the directory.

storeUserAttributes

public void storeUserAttributes(java.lang.String username,
                                java.util.Map<java.lang.String,java.util.List<java.lang.String>> attributes)
                         throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Adds or updates a user's attributes with the new Map of attribute values in the directory specified by the passed in directoryId.

The attributes map represents new or updated attributes and does not replace existing attributes unless the key of an attribute matches the key of an existing

Specified by:
storeUserAttributes in interface RemoteDirectory
Parameters:
username - name of user to update.
attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).
Throws:
ObjectNotFoundException - user with supplied username does not exist.

removeUserAttributes

public void removeUserAttributes(java.lang.String username,
                                 java.lang.String attributeName)
                          throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Removes all the values for a single attribute key for a user.

Specified by:
removeUserAttributes in interface RemoteDirectory
Parameters:
username - name of the user to update.
attributeName - name of attribute to remove.
Throws:
ObjectNotFoundException - user with supplied username does not exist.

removeUser

public void removeUser(java.lang.String name)
                throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Removes the user that matches the supplied name.

Specified by:
removeUser in interface RemoteDirectory
Parameters:
name - The name of the user (username).
Throws:
ObjectNotFoundException - The user does not exist.

searchUsers

public java.util.List searchUsers(EntityQuery query)
Description copied from interface: RemoteDirectory
Searches for users that match the supplied query criteria.

Specified by:
searchUsers in interface RemoteDirectory
Parameters:
query - EntityQuery for Entity.USER.
Returns:
List<User> or List<String> of users/usernames matching the search criteria. An empty List will be returned if no users matching the criteria are found.

findGroupByName

public Group findGroupByName(java.lang.String name)
                      throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Finds the group that matches the supplied name.

Specified by:
findGroupByName in interface RemoteDirectory
Parameters:
name - the name of the group.
Returns:
group entity.
Throws:
ObjectNotFoundException - a group with the supplied name does not exist.

findGroupWithAttributesByName

public GroupWithAttributes findGroupWithAttributesByName(java.lang.String name)
                                                  throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Finds the group that matches the supplied name.

Specified by:
findGroupWithAttributesByName in interface RemoteDirectory
Parameters:
name - the name of the group.
Returns:
group entity with attributes.
Throws:
ObjectNotFoundException - a group with the supplied name does not exist.

addGroup

public Group addGroup(GroupTemplate group)
               throws InvalidGroupException,
                      ObjectNotFoundException
Adds a group.

Specified by:
addGroup in interface RemoteDirectory
Parameters:
group - template of the group to add.
Returns:
added group.
Throws:
ObjectNotFoundException - the group could not be looked up after creation or the directory with the ID of group.directoryId does not exist.
InvalidGroupException - the group name or type was not specified.

updateGroup

public Group updateGroup(GroupTemplate group)
                  throws InvalidGroupException,
                         ObjectNotFoundException
Description copied from interface: RemoteDirectory
Updates the group.

Specified by:
updateGroup in interface RemoteDirectory
Parameters:
group - The group to update.
Returns:
the updated group retrieved from the underlying store.
Throws:
InvalidGroupException - the supplied group is invalid.
ObjectNotFoundException - the group does not exist in the directory store.

renameGroup

public Group renameGroup(java.lang.String oldName,
                         java.lang.String newName)
                  throws ObjectNotFoundException,
                         InvalidGroupException
Description copied from interface: RemoteDirectory
Renames a group.

Specified by:
renameGroup in interface RemoteDirectory
Parameters:
oldName - name of existing group.
newName - desired name of group.
Returns:
renamed group.
Throws:
ObjectNotFoundException - if the group with the existing name does not exist.
InvalidGroupException - if the new groupname is invalid or already exists in the directory.

storeGroupAttributes

public void storeGroupAttributes(java.lang.String groupName,
                                 java.util.Map<java.lang.String,java.util.List<java.lang.String>> attributes)
                          throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Adds or updates a group's attributes with the new Map of attribute values in the directory specified by the passed in directoryId.

The attributes map represents new or updated attributes and does not replace existing attributes unless the key of an attribute matches the key of an existing

Specified by:
storeGroupAttributes in interface RemoteDirectory
Parameters:
groupName - name of group to update.
attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).
Throws:
ObjectNotFoundException - group with supplied groupName does not exist.

removeGroupAttributes

public void removeGroupAttributes(java.lang.String groupName,
                                  java.lang.String attributeName)
                           throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Removes all the values for a single attribute key for a group.

Specified by:
removeGroupAttributes in interface RemoteDirectory
Parameters:
groupName - name of the group to update.
attributeName - name of attribute to remove.
Throws:
ObjectNotFoundException - group with supplied groupName does not exist.

removeGroup

public void removeGroup(java.lang.String name)
                 throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Removes the group that matches the supplied name.

Specified by:
removeGroup in interface RemoteDirectory
Parameters:
name - The name of the group.
Throws:
ObjectNotFoundException - The group does not exist.

searchGroups

public java.util.List searchGroups(EntityQuery query)
Description copied from interface: RemoteDirectory
Searches for groups that match the supplied query criteria.

Specified by:
searchGroups in interface RemoteDirectory
Parameters:
query - EntityQuery for Entity.GROUP.
Returns:
List or List of groups/groupnames matching the search criteria. An empty List will be returned if no groups matching the criteria are found.

isUserDirectGroupMember

public boolean isUserDirectGroupMember(java.lang.String username,
                                       java.lang.String groupName)
Description copied from interface: RemoteDirectory
Determines if a user is a direct member of a group. The directory is NOT expected to resolve any transitive group relationships.

Specified by:
isUserDirectGroupMember in interface RemoteDirectory
Parameters:
username - name of user.
groupName - name of group.
Returns:
true iff the user is a direct member of the group.

isGroupDirectGroupMember

public boolean isGroupDirectGroupMember(java.lang.String childGroup,
                                        java.lang.String parentGroup)
Description copied from interface: RemoteDirectory
Determines if a group is a direct member of another group. The directory is NOT expected to resolve any transitive group relationships.

Specified by:
isGroupDirectGroupMember in interface RemoteDirectory
Parameters:
childGroup - name of child group.
parentGroup - name of parent group.
Returns:
true iff the childGroup is a direct member of the parentGroup.

addUserToGroup

public void addUserToGroup(java.lang.String username,
                           java.lang.String groupName)
                    throws ObjectNotFoundException
Description copied from interface: RemoteDirectory
Adds a user as a member of a group. This means that all user members of childGroup will appear as members of parentGroup to querying applications.

Specified by:
addUserToGroup in interface RemoteDirectory
Parameters:
username - The user that will become a member of groupName
groupName - The group that will gain a new member.
Throws:
ObjectNotFoundException - If the user or group cannot be found.

addGroupToGroup

public void addGroupToGroup(java.lang.String childGroup,
                            java.lang.String parentGroup)
                     throws ObjectNotFoundException,
                            InvalidMembershipException
Description copied from interface: RemoteDirectory
Adds a group as a member of a parent group.

Specified by:
addGroupToGroup in interface RemoteDirectory
Parameters:
childGroup - The group that will become a member of parentGroup
parentGroup - The group that will gain a new member
Throws:
ObjectNotFoundException - One or both of the groups cannot be found.
InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.

removeUserFromGroup

public void removeUserFromGroup(java.lang.String username,
                                java.lang.String groupName)
                         throws ObjectNotFoundException,
                                MembershipNotFoundException
Description copied from interface: RemoteDirectory
Removes a user as a member of a group.

Specified by:
removeUserFromGroup in interface RemoteDirectory
Parameters:
username - The user that will be removed from parentGroup
groupName - The group that will lose the member.
Throws:
ObjectNotFoundException - If either the user or group cannot be found.
MembershipNotFoundException - if the user is not a direct member of the group.

removeGroupFromGroup

public void removeGroupFromGroup(java.lang.String childGroup,
                                 java.lang.String parentGroup)
                          throws ObjectNotFoundException,
                                 InvalidMembershipException,
                                 MembershipNotFoundException
Description copied from interface: RemoteDirectory
Removes a group as a member of a parent group.

Specified by:
removeGroupFromGroup in interface RemoteDirectory
Parameters:
childGroup - The group that will be removed from parentGroup
parentGroup - The group that will lose the member.
Throws:
ObjectNotFoundException - One or both of the groups cannot be found.
InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.
MembershipNotFoundException - if the childGroup is not a direct member of the parentGroup.

searchGroupRelationships

public java.util.List searchGroupRelationships(MembershipQuery query)
Description copied from interface: RemoteDirectory
Searches for membership information.

Specified by:
searchGroupRelationships in interface RemoteDirectory
Parameters:
query - query for memberships.
Returns:
a List of Users or Groups or Strings depending on the query criteria. An empty List if there are no results.

addAllUsers

public java.util.Collection<User> addAllUsers(java.util.Set<UserTemplateWithCredentialAndAttributes> users)
                                       throws ObjectNotFoundException
Description copied from interface: BatchingRemoteDirectory
Adds a collection of users to the directory store.

Specified by:
addAllUsers in interface BatchingRemoteDirectory
Parameters:
users - set of users to add.
Returns:
remote users that failed to be added.
Throws:
ObjectNotFoundException - directory has been deleted and cannot be found.

addAllGroups

public java.util.Collection<Group> addAllGroups(java.util.Set<GroupTemplate> groups)
                                         throws ObjectNotFoundException
Description copied from interface: BatchingRemoteDirectory
Adds a collection of groups to the directory store.

Specified by:
addAllGroups in interface BatchingRemoteDirectory
Parameters:
groups - set of groups to add.
Returns:
remote group that failed to be added.
Throws:
ObjectNotFoundException

addAllUsersToGroup

public java.util.Collection<java.lang.String> addAllUsersToGroup(java.util.Set<java.lang.String> userNames,
                                                                 java.lang.String groupName)
                                                          throws ObjectNotFoundException
Description copied from interface: BatchingRemoteDirectory
Adds a collection of group memberships to the directory store.

Specified by:
addAllUsersToGroup in interface BatchingRemoteDirectory
Parameters:
userNames - names of users to add.
groupName - name of group to add users to.
Returns:
user names that failed to be added to the group.
Throws:
ObjectNotFoundException - if the group does not exist.

findUsersByNames

public java.util.Collection<User> findUsersByNames(java.util.Collection<java.lang.String> names)
Description copied from interface: BatchingRemoteDirectory
Finds a collection of users matching a collection of names.

If a user with a requested name does not exist, then it is not included in the returning collection.

Specified by:
findUsersByNames in interface BatchingRemoteDirectory
Parameters:
names - names of users to find.
Returns:
collection of found users.

findGroupsByNames

public java.util.Collection<Group> findGroupsByNames(java.util.Collection<java.lang.String> names)
Description copied from interface: BatchingRemoteDirectory
Finds a collection of groups matching a collection of names.

If a group with a requested name does not exist, then it is not included in the returning collection.

Specified by:
findGroupsByNames in interface BatchingRemoteDirectory
Parameters:
names - names of groups to find.
Returns:
collection of found groups.

testConnection

public void testConnection()
                    throws DirectoryAccessException
Does nothing, connection is determined by the ability to communicate with the database. Crowd wouldn't have started if the database connection failed.

Specified by:
testConnection in interface RemoteDirectory
Throws:
java.rmi.RemoteException - never.
DirectoryAccessException - An unknown wire exception occurred.

supportsNestedGroups

public boolean supportsNestedGroups()
Description copied from interface: RemoteDirectory
Allows us to only display nested-group related UI for directories that support it.

Specified by:
supportsNestedGroups in interface RemoteDirectory
Returns:
true because Internal Directories support nested groups as of Crowd 2.0.

setPasswordHelper

public void setPasswordHelper(PasswordHelper passwordHelper)

setPasswordEncoderFactory

public void setPasswordEncoderFactory(PasswordEncoderFactory passwordEncoderFactory)

setDirectoryDAO

public void setDirectoryDAO(DirectoryDAO directoryDAO)

setUserDAO

public void setUserDAO(UserDAO userDAO)

setGroupDAO

public void setGroupDAO(GroupDAO groupDAO)

setMembershipDAO

public void setMembershipDAO(MembershipDAO membershipDAO)

setI18nHelper

public void setI18nHelper(I18nHelper i18nHelper)


Copyright © 2009 Atlassian Pty Ltd. All Rights Reserved.