Class MockSimpleRemoteDirectory
- All Implemented Interfaces:
RemoteDirectory
,Attributes
-
Field Summary
Modifier and TypeFieldDescriptionprotected long
protected boolean
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddGroup
(GroupTemplate group) Adds agroup
to the directory store.void
addGroupToGroup
(String childGroup, String parentGroup) Adds a group as a member of a parent group.addUser
(UserTemplate user, PasswordCredential credential) Adds auser
to the directory store.addUser
(UserTemplateWithAttributes user, PasswordCredential credential) Adds auser
to the directory store.void
addUserToGroup
(String username, String groupName) Adds a user as a member of a group.authenticate
(String name, PasswordCredential credential) Authenticates auser
with the directory store.protected User
copyUser
(UserTemplate template) countDirectMembersOfGroup
(String groupName, int querySizeHint) Count the direct members of a group in the remote directory.protected UserWithAttributes
deriveUserWithAttributes
(User user, UserTemplate template) void
Sets theUserConstants.REQUIRES_PASSWORD_CHANGE
attribute to true for all users in the directory using bulk operationsfindGroupByName
(String name) Finds thegroup
that matches the suppliedname
.Finds thegroup
that matches the suppliedname
.findUserByExternalId
(String externalId) Finds the user that matches the suppliedexternalId
.findUserByName
(String name) Finds theuser
that matches the suppliedname
.findUserByNameOrNull
(String name) Finds theuser
that matches the suppliedname
.Returns a descriptive name for the type of directory.protected Directory
long
Gets the internal uniquedirectoryId
of the directory store.getKeys()
Gets all the keys of the attributes.Get an iterable view of the available group memberships.getUserAvatarByName
(String username, int sizeHint) Return an avatar, if available, for the named user.Returns any value associated with the given key, returnsnull
if there is no value.Get all the values associated with a given key.boolean
isEmpty()
boolean
isGroupDirectGroupMember
(String childGroup, String parentGroup) Determines if a group is a direct member of another group.boolean
Expose whether the directory has roles disabled.boolean
isUserDirectGroupMember
(String username, String groupName) Determines if a user is a direct member of a group.protected UserWithAttributes
void
removeGroup
(String name) Removes thegroup
that matches the suppliedname
.void
removeGroupAttributes
(String groupName, String attributeName) Removes all the values for a single attribute key for a group.void
removeGroupFromGroup
(String childGroup, String parentGroup) Removes a group as a member of a parent group.void
removeUser
(String name) Removes theuser
that matches the suppliedname
.void
removeUserAttributes
(String username, String attributeName) Removes all the values for a single attribute key for a user.void
removeUserFromGroup
(String username, String groupName) Removes a user as a member of a group.protected User
renameGroup
(String oldName, String newName) Renames agroup
.renameUser
(String oldName, String newName) Renames auser
.<T> List<T>
searchGroupRelationships
(MembershipQuery<T> query) Searches for membership information.<T> List<T>
searchGroups
(EntityQuery<T> query) Searches forgroups
that match the supplied query criteria.<T> List<T>
searchUsers
(EntityQuery<T> query) Searches forusers
that match the supplied query criteria.void
setAttribute
(String key, String value) void
setAttributes
(Map<String, String> attributes) When a directory store is loaded, the attributes map will be set by the Crowd framework.void
setDirectoryId
(long directoryId) When a directory store is loaded, thedirectoryId
will be set by the crowd framework.void
setSupportsInactiveAccounts
(boolean supportsInactiveAccounts) void
Adds or updates a group's attributes with the new Map of attribute values in the directory specified by the passed indirectoryId
.void
Adds or updates a user's attributes with the new Map of attribute values in the directory specified by the passed indirectoryId
.boolean
Return true if this directory supports inactive users and groups.boolean
Allows us to only display nested-group related UI for directories that support it.boolean
Return true if this directory supports manually expiring passwords.boolean
If this method returns true, then callingRemoteDirectory.updateUserCredential(String, PasswordCredential)
orRemoteDirectory.addUser(com.atlassian.crowd.model.user.UserTemplate, com.atlassian.crowd.embedded.api.PasswordCredential)
with aPasswordCredential
instance wherePasswordCredential.isEncryptedCredential()
returns true and the instance is not equal toPasswordCredential.NONE
will succeed; otherwise, it will fail.void
Test if a connection to the directory server can be established.updateGroup
(GroupTemplate group) Updates thegroup
.updateUser
(UserTemplate user) Updates theuser
.void
updateUserCredential
(String username, PasswordCredential credential) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.atlassian.crowd.directory.RemoteDirectory
getLocallyFilteredGroupNames, updateUserFromRemoteDirectory, userAuthenticated
-
Field Details
-
userMap
-
userByExternalIdMap
-
userAttributesMap
-
groupMap
-
roleMap
-
attributeMap
-
userMemberships
-
directoryId
protected long directoryId -
supportsInactiveAccounts
protected boolean supportsInactiveAccounts
-
-
Constructor Details
-
MockSimpleRemoteDirectory
public MockSimpleRemoteDirectory() -
MockSimpleRemoteDirectory
public MockSimpleRemoteDirectory(long directoryId)
-
-
Method Details
-
getDirectoryId
public long getDirectoryId()Description copied from interface:RemoteDirectory
Gets the internal uniquedirectoryId
of the directory store.- Specified by:
getDirectoryId
in interfaceRemoteDirectory
- Returns:
- The
directoryId
.
-
setDirectoryId
public void setDirectoryId(long directoryId) Description copied from interface:RemoteDirectory
When a directory store is loaded, thedirectoryId
will be set by the crowd framework.- Specified by:
setDirectoryId
in interfaceRemoteDirectory
- Parameters:
directoryId
- The uniquedirectoryId
of theDirectoryImpl
stored in the database.
-
getDescriptiveName
Description copied from interface:RemoteDirectory
Returns a descriptive name for the type of directory.- Specified by:
getDescriptiveName
in interfaceRemoteDirectory
- Returns:
- descriptive name.
-
setAttributes
Description copied from interface:RemoteDirectory
When a directory store is loaded, the attributes map will be set by the Crowd framework. Implementations may store a reference to this map in order to implement the AttributesThe Map is immutable and implementations are required to maintain immutability.
- Specified by:
setAttributes
in interfaceRemoteDirectory
- Parameters:
attributes
- attributes map.
-
setAttribute
-
findUserByName
Description copied from interface:RemoteDirectory
Finds theuser
that matches the suppliedname
.- Specified by:
findUserByName
in interfaceRemoteDirectory
- Parameters:
name
- the name of the user (username).- Returns:
- user entity.
- Throws:
UserNotFoundException
- a user with the supplied name does not exist.
-
findUserByNameOrNull
-
findUserWithAttributesByName
public UserWithAttributes findUserWithAttributesByName(String name) throws UserNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Finds theuser
that matches the suppliedname
.- Specified by:
findUserWithAttributesByName
in interfaceRemoteDirectory
- Parameters:
name
- the name of the user (username).- Returns:
- user entity with attributes.
- Throws:
UserNotFoundException
- a user with the supplied name does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
findUserByExternalId
Description copied from interface:RemoteDirectory
Finds the user that matches the suppliedexternalId
. This is an optional method that may not be implemented on all directory types. Currently it is implemented for LDAP and Internal directories but not Crowd directories.- Specified by:
findUserByExternalId
in interfaceRemoteDirectory
- Parameters:
externalId
- the externalId of the user- Returns:
- the user that matches the supplied
externalId
. - Throws:
UserNotFoundException
- a user with the supplied externalId does not exist.- See Also:
-
authenticate
public User authenticate(String name, PasswordCredential credential) throws UserNotFoundException, InactiveAccountException, InvalidAuthenticationException, ExpiredCredentialException, OperationFailedException Description copied from interface:RemoteDirectory
Authenticates auser
with the directory store.- Specified by:
authenticate
in interfaceRemoteDirectory
- Parameters:
name
- The name of the user (username).credential
- The supplied credentials (password).- Returns:
- The populated user if the authentication is valid.
- Throws:
UserNotFoundException
- The user with the supplied name does not exist.InactiveAccountException
- The supplied user is inactive.InvalidAuthenticationException
- Authentication with the provided credentials failed.ExpiredCredentialException
- The user's credentials have expired. The user must change their credentials in order to successfully authenticate.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
addUser
public User addUser(UserTemplate user, PasswordCredential credential) throws UserAlreadyExistsException Description copied from interface:RemoteDirectory
Adds auser
to the directory store.- Specified by:
addUser
in interfaceRemoteDirectory
- Parameters:
user
- template of the user to add.credential
- a password, orPasswordCredential.NONE
for an account that cannot login with any password- Returns:
- the added user retrieved from the underlying store.
- Throws:
UserAlreadyExistsException
- The user already exists- See Also:
-
addUser
public UserWithAttributes addUser(UserTemplateWithAttributes user, PasswordCredential credential) throws UserAlreadyExistsException Description copied from interface:RemoteDirectory
Adds auser
to the directory store.- Specified by:
addUser
in interfaceRemoteDirectory
- Parameters:
user
- template of the user to add.credential
- a password, orPasswordCredential.NONE
for an account that cannot login with any password- Returns:
- the added user retrieved from the underlying store.
- Throws:
UserAlreadyExistsException
- The user already exists- See Also:
-
getDirectory
-
updateUser
public User updateUser(UserTemplate user) throws InvalidUserException, UserNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Updates theuser
.- Specified by:
updateUser
in interfaceRemoteDirectory
- Parameters:
user
- The user to update.- Returns:
- the updated user retrieved from the underlying store.
- Throws:
InvalidUserException
- the supplied user is invalid.UserNotFoundException
- the user does not exist in the directory store.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
copyUser
-
deriveUserWithAttributes
-
putUser
-
updateUserCredential
public void updateUserCredential(String username, PasswordCredential credential) throws UserNotFoundException, InvalidCredentialException, OperationFailedException Description copied from interface:RemoteDirectory
- Specified by:
updateUserCredential
in interfaceRemoteDirectory
- Parameters:
username
- The name of the user (username).credential
- The new credential (password).- Throws:
UserNotFoundException
- The user does not exist.InvalidCredentialException
- The supplied credential is invalid.OperationFailedException
- underlying directory implementation failed to execute the operation.- See Also:
-
renameUser
public User renameUser(String oldName, String newName) throws UserNotFoundException, InvalidUserException, UserAlreadyExistsException, OperationFailedException Description copied from interface:RemoteDirectory
Renames auser
.- Specified by:
renameUser
in interfaceRemoteDirectory
- Parameters:
oldName
- name of existing user.newName
- desired name of user.- Returns:
- renamed user.
- Throws:
UserNotFoundException
- if the user with the existing name does not exist.InvalidUserException
- if the new username is invalid.UserAlreadyExistsException
- if the newName already exists.OperationFailedException
- if the underlying directory implementation failed to execute the operation.
-
rename
protected User rename(User oldUser, String newName) throws UserNotFoundException, UserAlreadyExistsException -
storeUserAttributes
public void storeUserAttributes(String username, Map<String, Set<String>> attributes) throws UserNotFoundException, OperationFailedExceptionDescription 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 indirectoryId
.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
Attributes with values of empty sets are not added (these attributes are effectively removed).
- Specified by:
storeUserAttributes
in interfaceRemoteDirectory
- 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:
UserNotFoundException
- user with supplied username does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeUserAttributes
public void removeUserAttributes(String username, String attributeName) throws UserNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Removes all the values for a single attribute key for a user. If the attribute key does not exist nothing will happen.- Specified by:
removeUserAttributes
in interfaceRemoteDirectory
- Parameters:
username
- name of the user to update.attributeName
- name of attribute to remove.- Throws:
UserNotFoundException
- user with supplied username does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeUser
Description copied from interface:RemoteDirectory
Removes theuser
that matches the suppliedname
.- Specified by:
removeUser
in interfaceRemoteDirectory
- Parameters:
name
- The name of the user (username).- Throws:
UserNotFoundException
- The user does not exist.
-
searchUsers
Description copied from interface:RemoteDirectory
Searches forusers
that match the supplied query criteria.The users will be returned in a stable order including across pagination boundaries (excluding modification).
- Specified by:
searchUsers
in interfaceRemoteDirectory
- Parameters:
query
- EntityQuery for Entity.USER.- Returns:
List<
orUser
>List<
of users/usernames matching the search criteria. An emptyString
>List
will be returned if no users matching the criteria are found.- Throws:
OperationFailedException
- if the underlying directory implementation failed to execute the operation
-
findGroupByName
Description copied from interface:RemoteDirectory
Finds thegroup
that matches the suppliedname
.- Specified by:
findGroupByName
in interfaceRemoteDirectory
- Parameters:
name
- the name of the group.- Returns:
- group entity.
- Throws:
GroupNotFoundException
- a group with the supplied name does not exist.
-
findGroupWithAttributesByName
public GroupWithAttributes findGroupWithAttributesByName(String name) throws GroupNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Finds thegroup
that matches the suppliedname
.- Specified by:
findGroupWithAttributesByName
in interfaceRemoteDirectory
- Parameters:
name
- the name of the group.- Returns:
- group entity with attributes.
- Throws:
GroupNotFoundException
- a group with the supplied name does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
addGroup
Description copied from interface:RemoteDirectory
Adds agroup
to the directory store.- Specified by:
addGroup
in interfaceRemoteDirectory
- Parameters:
group
- template of the group to add.- Returns:
- the added group retrieved from the underlying store.
- Throws:
InvalidGroupException
- The supplied group is invalid or it already exists in the directory.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
updateGroup
public Group updateGroup(GroupTemplate group) throws InvalidGroupException, GroupNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Updates thegroup
.- Specified by:
updateGroup
in interfaceRemoteDirectory
- Parameters:
group
- The group to update.- Returns:
- the updated group retrieved from the underlying store.
- Throws:
InvalidGroupException
- the supplied group is invalid.GroupNotFoundException
- the group does not exist in the directory store.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
renameGroup
public Group renameGroup(String oldName, String newName) throws GroupNotFoundException, InvalidGroupException Description copied from interface:RemoteDirectory
Renames agroup
.- Specified by:
renameGroup
in interfaceRemoteDirectory
- Parameters:
oldName
- name of existing group.newName
- desired name of group.- Returns:
- renamed group.
- Throws:
GroupNotFoundException
- if the group with the existing name does not exist.InvalidGroupException
- if the new group name is invalid or already exists in the directory.
-
storeGroupAttributes
public void storeGroupAttributes(String groupName, Map<String, Set<String>> attributes) throws GroupNotFoundException, OperationFailedExceptionDescription 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 indirectoryId
.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
Attributes with values of empty sets are not added (these attributes are effectively removed).
- Specified by:
storeGroupAttributes
in interfaceRemoteDirectory
- 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:
GroupNotFoundException
- group with supplied groupName does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeGroupAttributes
public void removeGroupAttributes(String groupName, String attributeName) throws GroupNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Removes all the values for a single attribute key for a group.- Specified by:
removeGroupAttributes
in interfaceRemoteDirectory
- Parameters:
groupName
- name of the group to update.attributeName
- name of attribute to remove.- Throws:
GroupNotFoundException
- group with supplied groupName does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeGroup
Description copied from interface:RemoteDirectory
Removes thegroup
that matches the suppliedname
.- Specified by:
removeGroup
in interfaceRemoteDirectory
- Parameters:
name
- The name of the group.- Throws:
GroupNotFoundException
- The group does not exist.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
searchGroups
Description copied from interface:RemoteDirectory
Searches forgroups
that match the supplied query criteria.The groups will be returned in a stable order including across pagination boundaries (excluding modification).
- Specified by:
searchGroups
in interfaceRemoteDirectory
- Parameters:
query
- EntityQuery for Entity.GROUP.- Returns:
List<Group>
orList<String>
of groups/groupnames matching the search criteria. An emptyList
will be returned if no groups matching the criteria are found.- Throws:
OperationFailedException
- if the underlying directory implementation failed to execute the operation
-
isUserDirectGroupMember
public boolean isUserDirectGroupMember(String username, String groupName) throws OperationFailedException 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 interfaceRemoteDirectory
- Parameters:
username
- name of user.groupName
- name of group.- Returns:
true
iff the user is a direct member of the group.- Throws:
OperationFailedException
- underlying directory implementation failed to execute the operation.
-
isGroupDirectGroupMember
public boolean isGroupDirectGroupMember(String childGroup, String parentGroup) throws OperationFailedException 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 interfaceRemoteDirectory
- Parameters:
childGroup
- name of child group.parentGroup
- name of parent group.- Returns:
true
iff the childGroup is a direct member of the parentGroup.- Throws:
OperationFailedException
- underlying directory implementation failed to execute the operation.
-
countDirectMembersOfGroup
public BoundedCount countDirectMembersOfGroup(String groupName, int querySizeHint) throws OperationFailedException Description copied from interface:RemoteDirectory
Count the direct members of a group in the remote directory. You may hint at the number of memberships that you would like to see for the purposes of efficiency but the hint may be ignored.- Specified by:
countDirectMembersOfGroup
in interfaceRemoteDirectory
- Parameters:
groupName
- the name of the group to search forquerySizeHint
- hinting at the maximum number of memberships that should be counted. The directory that implements this may choose to count less or more. This is a user provided suggestion for potential efficiency.- Returns:
- A bounded count of the number of memberships in the given group for the provided directory. If the group is not found then there are exactly 0 members of that non-existent group.
- Throws:
OperationFailedException
- if we failed to count the number of memberships for the provided group.
-
addUserToGroup
public void addUserToGroup(String username, String groupName) throws GroupNotFoundException, UserNotFoundException, OperationFailedException, MembershipAlreadyExistsException Description copied from interface:RemoteDirectory
Adds a user as a member of a group. This means that all user members ofchildGroup
will appear as members ofparentGroup
to querying applications.- Specified by:
addUserToGroup
in interfaceRemoteDirectory
- Parameters:
username
- The user that will become a member ofgroupName
groupName
- The group that will gain a new member.- Throws:
GroupNotFoundException
- If the group cannot be found.UserNotFoundException
- If the user cannot be found.OperationFailedException
- underlying directory implementation failed to execute the operation.MembershipAlreadyExistsException
- if the user is already a member of the group
-
addGroupToGroup
public void addGroupToGroup(String childGroup, String parentGroup) throws GroupNotFoundException, InvalidMembershipException, OperationFailedException Description copied from interface:RemoteDirectory
Adds a group as a member of a parent group.- Specified by:
addGroupToGroup
in interfaceRemoteDirectory
- Parameters:
childGroup
- The group that will become a member ofparentGroup
parentGroup
- The group that will gain a new member- Throws:
GroupNotFoundException
- One or both of the groups cannot be found.InvalidMembershipException
- if the childGroup and parentGroup exist but are of different GroupTypes.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeUserFromGroup
public void removeUserFromGroup(String username, String groupName) throws GroupNotFoundException, UserNotFoundException, MembershipNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Removes a user as a member of a group.- Specified by:
removeUserFromGroup
in interfaceRemoteDirectory
- Parameters:
username
- The user that will be removed fromparentGroup
groupName
- The group that will lose the member.- Throws:
GroupNotFoundException
- If the group cannot be found.UserNotFoundException
- If the user cannot be found.MembershipNotFoundException
- if the user is not a direct member of the group.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
removeGroupFromGroup
public void removeGroupFromGroup(String childGroup, String parentGroup) throws GroupNotFoundException, InvalidMembershipException, MembershipNotFoundException, OperationFailedException Description copied from interface:RemoteDirectory
Removes a group as a member of a parent group.- Specified by:
removeGroupFromGroup
in interfaceRemoteDirectory
- Parameters:
childGroup
- The group that will be removed fromparentGroup
parentGroup
- The group that will lose the member.- Throws:
GroupNotFoundException
- 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.OperationFailedException
- underlying directory implementation failed to execute the operation.
-
searchGroupRelationships
public <T> List<T> searchGroupRelationships(MembershipQuery<T> query) throws OperationFailedException Description copied from interface:RemoteDirectory
Searches for membership information.- Specified by:
searchGroupRelationships
in interfaceRemoteDirectory
- 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. Results are ordered by entity name, case-insensitive.
- Throws:
OperationFailedException
- underlying directory implementation failed to execute the operation.
-
testConnection
Description copied from interface:RemoteDirectory
Test if a connection to the directory server can be established. When executed for a directory already persisted in the database (ie with a non-null id) the connection will be taken using the same semantics as during regular directory operations, which means that the connection may be sourced from a connection pool and be subject to additional validation if applicable. This gives a good indicator as to the RemoteDirectory's status but can be problematic when used to verify correctness during a directory update. If absolute certainty about the RemoteDirectory's status is not needed or the RemoteDirectory's lifecycle will be limited strictly to the connection test,CrowdDirectoryService.testConnection(Directory)
should be used instead.- Specified by:
testConnection
in interfaceRemoteDirectory
- Throws:
OperationFailedException
- underlying directory implementation failed to execute the operation.
-
setSupportsInactiveAccounts
public void setSupportsInactiveAccounts(boolean supportsInactiveAccounts) -
supportsInactiveAccounts
public boolean supportsInactiveAccounts()Description copied from interface:RemoteDirectory
Return true if this directory supports inactive users and groups.- Specified by:
supportsInactiveAccounts
in interfaceRemoteDirectory
- Returns:
- true if the directory supports inactive users and groups
-
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 interfaceRemoteDirectory
- Returns:
- true if the directory can handle having a group added to a group.
-
supportsPasswordExpiration
public boolean supportsPasswordExpiration()Description copied from interface:RemoteDirectory
Return true if this directory supports manually expiring passwords.- Specified by:
supportsPasswordExpiration
in interfaceRemoteDirectory
- Returns:
- true if this directory supports manually expiring passwords
-
supportsSettingEncryptedCredential
public boolean supportsSettingEncryptedCredential()Description copied from interface:RemoteDirectory
If this method returns true, then callingRemoteDirectory.updateUserCredential(String, PasswordCredential)
orRemoteDirectory.addUser(com.atlassian.crowd.model.user.UserTemplate, com.atlassian.crowd.embedded.api.PasswordCredential)
with aPasswordCredential
instance wherePasswordCredential.isEncryptedCredential()
returns true and the instance is not equal toPasswordCredential.NONE
will succeed; otherwise, it will fail.- Specified by:
supportsSettingEncryptedCredential
in interfaceRemoteDirectory
- Returns:
- true if this directory supports setting passwords by hash
-
isRolesDisabled
public boolean isRolesDisabled()Description copied from interface:RemoteDirectory
Expose whether the directory has roles disabled. Always true.- Specified by:
isRolesDisabled
in interfaceRemoteDirectory
- Returns:
- true
-
getValues
Description copied from interface:Attributes
Get all the values associated with a given key. Duplicate values are not allowed, and this should be enforced case-insensitively to match the behaviour of LDAP servers. Will return null if the key does not exist.- Specified by:
getValues
in interfaceAttributes
- Parameters:
key
- the key to retrieve the values for- Returns:
- the values associated with the given key. It may return null or empty set if the key does not exist.
-
getValue
Description copied from interface:Attributes
Returns any value associated with the given key, returnsnull
if there is no value.- Specified by:
getValue
in interfaceAttributes
- Parameters:
key
- the key to retrieve the value for- Returns:
- any value associated with the given key, or
null
if there is no value
-
getKeys
Description copied from interface:Attributes
Gets all the keys of the attributes. Warning: case-insensitive keys are currently no enforced, however this is the case for LDAP, so this may be implemented in the future.- Specified by:
getKeys
in interfaceAttributes
- Returns:
- a set of all the keys.
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceAttributes
- Returns:
true
if there are no attributes
-
getGroup
-
getRole
-
getAuthoritativeDirectory
- Specified by:
getAuthoritativeDirectory
in interfaceRemoteDirectory
- Returns:
- the directory that is the authoritative source of data for this directory, possibly itself.
-
getMemberships
Description copied from interface:RemoteDirectory
Get an iterable view of the available group memberships. This may be implemented as a single remote call or separate calls, depending on the directory.
If there is a failure in the underlying retrieval, the iterator may throw
Membership.MembershipIterationException
at runtime.If the directory does not have a bulk call interface then a typical implementation would be:
return new DirectoryMembershipsIterable(this);
- Specified by:
getMemberships
in interfaceRemoteDirectory
- Returns:
- an iterable view of the available group memberships
- Throws:
OperationFailedException
- if the underlying directory implementation failed to execute the operation
-
expireAllPasswords
public void expireAllPasswords()Description copied from interface:RemoteDirectory
Sets theUserConstants.REQUIRES_PASSWORD_CHANGE
attribute to true for all users in the directory using bulk operations- Specified by:
expireAllPasswords
in interfaceRemoteDirectory
-
getUserAvatarByName
public AvatarReference getUserAvatarByName(String username, int sizeHint) throws OperationFailedException Description copied from interface:RemoteDirectory
Return an avatar, if available, for the named user.- Specified by:
getUserAvatarByName
in interfaceRemoteDirectory
sizeHint
- a hint in pixels for the context in which this will be used- Returns:
- an avatar, or
null
if none is available - Throws:
OperationFailedException
-