com.atlassian.crowd.directory
Class InternalDirectory

java.lang.Object
  extended by com.atlassian.crowd.directory.AbstractInternalDirectory
      extended by com.atlassian.crowd.directory.InternalDirectory
All Implemented Interfaces:
InternalRemoteDirectory, RemoteDirectory, Attributes
Direct Known Subclasses:
InternalDirectoryForDelegation

public class InternalDirectory
extends AbstractInternalDirectory

Internal directory connector. Stores all entity information to the database used by the Crowd Server. Note that this implementation is used for an Actual InternalDirectory, and there is a related class CachingDirectory that does local caching of remote objects.


Field Summary
 
Fields inherited from class com.atlassian.crowd.directory.AbstractInternalDirectory
ATTRIBUTE_PASSWORD_COMPLEXITY_MESSAGE, ATTRIBUTE_PASSWORD_HISTORY_COUNT, ATTRIBUTE_PASSWORD_MAX_ATTEMPTS, ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME, ATTRIBUTE_PASSWORD_MINIMUM_LENGTH, ATTRIBUTE_PASSWORD_MINIMUM_SCORE, ATTRIBUTE_PASSWORD_REGEX, ATTRIBUTE_USER_ENCRYPTION_METHOD, attributes, DESCRIPTIVE_NAME, directoryDao, directoryId, groupDao, internalDirectoryUtils, membershipDao, passwordEncoderFactory, userDao
 
Constructor Summary
InternalDirectory(InternalDirectoryUtils internalDirectoryUtils, PasswordEncoderFactory passwordEncoderFactory, DirectoryDao directoryDao, UserDao userDao, GroupDao groupDao, MembershipDao membershipDao, PasswordConstraintsLoader passwordConstraints)
           
 
Method Summary
 BatchResult<Group> addAllGroups(Set<GroupTemplate> groups)
           
 BatchResult<User> addAllUsers(Set<UserTemplateWithCredentialAndAttributes> users)
           
 BatchResult<String> addAllUsersToGroup(Set<String> userNames, String groupName)
           
 Group addLocalGroup(GroupTemplate group)
           
 User addUser(UserTemplate user, PasswordCredential credential)
          Adds a user and the following custom attributes: - RemotePrincipalConstants.PASSWORD_LASTCHANGED set to the current time.
static String generateUniqueIdentifier()
          Generates a unique identifier.
 boolean isLocalUserStatusEnabled()
          Internal directories never support local user statuses.
protected  boolean isUserExternalIdReadOnly()
          When an InternalDirectory is used as an internal directory, it must manage the values of the external_id column.
 User updateUser(UserTemplate user)
           
 
Methods inherited from class com.atlassian.crowd.directory.AbstractInternalDirectory
addGroup, addGroupToGroup, addUserToGroup, authenticate, calculatePostPasswordUpdateAttributes, countDirectMembersOfGroup, currentPrincipalInvalidPasswordAttempts, encryptedCredential, expireAllPasswords, findGroupByName, findGroupWithAttributesByName, findUserByExternalId, findUserByName, findUserWithAttributesByName, forceRenameUser, getAllUserExternalIds, getAuthoritativeDirectory, getDescriptiveName, getDirectoryId, getEncoder, getKeys, getMemberships, getPasswordConstraints, getUserCount, getValue, getValues, isEmpty, isGroupDirectGroupMember, isRolesDisabled, isUserDirectGroupMember, removeAllGroups, removeAllUsers, removeGroup, removeGroupAttributes, removeGroupFromGroup, removeUser, removeUserAttributes, removeUserFromGroup, renameGroup, renameUser, requiresPasswordChange, searchGroupRelationships, searchGroups, searchUsers, setAttributes, setDirectoryId, storeGroupAttributes, storeUserAttributes, supportsInactiveAccounts, supportsNestedGroups, supportsPasswordExpiration, supportsSettingEncryptedCredential, testConnection, updateGroup, updateUserCredential
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InternalDirectory

public InternalDirectory(InternalDirectoryUtils internalDirectoryUtils,
                         PasswordEncoderFactory passwordEncoderFactory,
                         DirectoryDao directoryDao,
                         UserDao userDao,
                         GroupDao groupDao,
                         MembershipDao membershipDao,
                         PasswordConstraintsLoader passwordConstraints)
Method Detail

addUser

public User addUser(UserTemplate user,
                    PasswordCredential credential)
             throws InvalidCredentialException,
                    InvalidUserException,
                    UserAlreadyExistsException,
                    OperationFailedException
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
Specified by:
addUser in class AbstractInternalDirectory
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:
InvalidCredentialException - the password does not match the regular expression standard defined by the directory.
InvalidUserException
UserAlreadyExistsException
OperationFailedException

generateUniqueIdentifier

public static String generateUniqueIdentifier()
Generates a unique identifier. This method is visible so it can be used by

Returns:
a unique identifier

addLocalGroup

public Group addLocalGroup(GroupTemplate group)
                    throws OperationFailedException
Specified by:
addLocalGroup in interface InternalRemoteDirectory
Specified by:
addLocalGroup in class AbstractInternalDirectory
Throws:
OperationFailedException

addAllUsers

public BatchResult<User> addAllUsers(Set<UserTemplateWithCredentialAndAttributes> users)

addAllGroups

public BatchResult<Group> addAllGroups(Set<GroupTemplate> groups)

addAllUsersToGroup

public BatchResult<String> addAllUsersToGroup(Set<String> userNames,
                                              String groupName)
                                       throws GroupNotFoundException
Throws:
GroupNotFoundException

updateUser

public User updateUser(UserTemplate user)
                throws InvalidUserException,
                       UserNotFoundException
Throws:
InvalidUserException
UserNotFoundException

isLocalUserStatusEnabled

public boolean isLocalUserStatusEnabled()
Internal directories never support local user statuses.

Returns:
false

isUserExternalIdReadOnly

protected boolean isUserExternalIdReadOnly()
When an InternalDirectory is used as an internal directory, it must manage the values of the external_id column. However, when it is used as the front-end in a delegating directory, the values of the column are dictated by the remote LDAP directory and are subject to change. This method makes it possible to switch between these two behaviours.

Returns:
true in this class because it manages the external_id values and does not allow mutability.


Copyright © 2016 Atlassian. All Rights Reserved.