|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.crowd.directory.AbstractInternalDirectory
public abstract class AbstractInternalDirectory
This class holds methods that are common to both InternalDirectory and CachingDirectory.
| 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 long |
directoryId
|
protected GroupDao |
groupDao
|
protected InternalDirectoryUtils |
internalDirectoryUtils
|
protected MembershipDao |
membershipDao
|
protected PasswordEncoderFactory |
passwordEncoderFactory
|
protected UserDao |
userDao
|
| Constructor Summary | |
|---|---|
AbstractInternalDirectory(InternalDirectoryUtils internalDirectoryUtils,
PasswordEncoderFactory passwordEncoderFactory,
DirectoryDao directoryDao,
UserDao userDao,
GroupDao groupDao,
MembershipDao membershipDao)
|
|
| Method Summary | ||
|---|---|---|
Group |
addGroup(GroupTemplate group)
Adds a group to the directory store. |
|
void |
addGroupToGroup(java.lang.String childGroup,
java.lang.String parentGroup)
Adds a group as a member of a parent group. |
|
abstract Group |
addLocalGroup(GroupTemplate group)
Adds a "local" group to the directory. |
|
abstract User |
addUser(UserTemplate user,
PasswordCredential credential)
Adds a user to the directory store. |
|
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(UserWithAttributes user)
|
|
protected void |
encryptCredential(PasswordCredential passwordCredential)
|
|
InternalDirectoryGroup |
findGroupByName(java.lang.String name)
Finds the group that matches the supplied name. |
|
GroupWithAttributes |
findGroupWithAttributesByName(java.lang.String name)
Finds the group that matches the supplied name. |
|
TimestampedUser |
findUserByName(java.lang.String name)
Finds the user that matches the supplied name. |
|
UserWithAttributes |
findUserWithAttributesByName(java.lang.String name)
Finds the user that matches the supplied 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()
|
|
java.util.Set<java.lang.String> |
getKeys()
Gets all the keys of the attributes. |
|
java.lang.String |
getValue(java.lang.String name)
Returns any value associated with the given key, returns null if there is no value. |
|
java.util.Set<java.lang.String> |
getValues(java.lang.String name)
Get all the values associated with a given key. |
|
boolean |
isEmpty()
|
|
boolean |
isGroupDirectGroupMember(java.lang.String childGroup,
java.lang.String parentGroup)
Determines if a group is a direct member of another group. |
|
boolean |
isRolesDisabled()
Expose whether the directory has roles disabled. |
|
boolean |
isUserDirectGroupMember(java.lang.String username,
java.lang.String groupName)
Determines if a user is a direct member of a group. |
|
void |
removeAllGroups(java.util.Set<java.lang.String> groupNames)
Removes all groups from the directory. |
|
void |
removeAllUsers(java.util.Set<java.lang.String> userNames)
Removes all users from the directory. |
|
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(UserWithAttributes user)
|
|
|
searchGroupRelationships(MembershipQuery<T> query)
Searches for membership information. |
|
|
searchGroups(EntityQuery<T> query)
Searches for groups that match the supplied query criteria. |
|
|
searchUsers(EntityQuery<T> 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 |
setDirectoryId(long id)
Called by the DirectoryInstanceLoader after
constructing an InternalDirectory. |
|
void |
storeGroupAttributes(java.lang.String groupName,
java.util.Map<java.lang.String,java.util.Set<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.Set<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 |
supportsInactiveAccounts()
Internal directories always support inactive accounts. |
|
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 newCredential)
Updates the password for a user. |
|
| 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.InternalRemoteDirectory |
|---|
addAllGroups, addAllUsers, addAllUsersToGroup |
| Field Detail |
|---|
public static final java.lang.String DESCRIPTIVE_NAME
public static final java.lang.String ATTRIBUTE_PASSWORD_REGEX
public static final java.lang.String ATTRIBUTE_PASSWORD_MAX_ATTEMPTS
public static final java.lang.String ATTRIBUTE_PASSWORD_HISTORY_COUNT
public static final java.lang.String ATTRIBUTE_USER_ENCRYPTION_METHOD
public static final java.lang.String ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME
protected long directoryId
protected AttributeValuesHolder attributes
protected final PasswordEncoderFactory passwordEncoderFactory
protected final DirectoryDao directoryDao
protected final UserDao userDao
protected final GroupDao groupDao
protected final MembershipDao membershipDao
protected final InternalDirectoryUtils internalDirectoryUtils
| Constructor Detail |
|---|
public AbstractInternalDirectory(InternalDirectoryUtils internalDirectoryUtils,
PasswordEncoderFactory passwordEncoderFactory,
DirectoryDao directoryDao,
UserDao userDao,
GroupDao groupDao,
MembershipDao membershipDao)
| Method Detail |
|---|
public long getDirectoryId()
RemoteDirectorydirectoryId of the directory store.
getDirectoryId in interface RemoteDirectorydirectoryId.public void setDirectoryId(long id)
DirectoryInstanceLoader after
constructing an InternalDirectory.
setDirectoryId in interface RemoteDirectoryid - The unique id of the Directory stored in the database.public void setAttributes(java.util.Map<java.lang.String,java.lang.String> attributes)
DirectoryInstanceLoader after
constructing an InternalDirectory.
setAttributes in interface RemoteDirectoryattributes - attributes map.public java.util.Set<java.lang.String> getValues(java.lang.String name)
Attributes
getValues in interface Attributesname - the key to retrieve the values for
public java.lang.String getValue(java.lang.String name)
Attributesnull if there is no value.
getValue in interface Attributesname - the key to retrieve the value for
null if there is no valuepublic java.util.Set<java.lang.String> getKeys()
Attributes
getKeys in interface Attributespublic boolean isEmpty()
isEmpty in interface Attributestrue if there are no attributespublic java.lang.String getDescriptiveName()
RemoteDirectory
getDescriptiveName in interface RemoteDirectory
public TimestampedUser findUserByName(java.lang.String name)
throws UserNotFoundException
RemoteDirectoryuser that matches the supplied name.
findUserByName in interface InternalRemoteDirectoryfindUserByName in interface RemoteDirectoryname - the name of the user (username).
TimestampedUser entity.
UserNotFoundException - a user with the supplied name does not exist.
public UserWithAttributes findUserWithAttributesByName(java.lang.String name)
throws UserNotFoundException
RemoteDirectoryuser that matches the supplied name.
findUserWithAttributesByName in interface RemoteDirectoryname - the name of the user (username).
UserNotFoundException - a user with the supplied name does not exist.
public User authenticate(java.lang.String name,
PasswordCredential credential)
throws InactiveAccountException,
InvalidAuthenticationException,
ExpiredCredentialException,
UserNotFoundException
RemoteDirectoryuser with the directory store.
authenticate in interface RemoteDirectoryname - The name of the user (username).credential - The supplied credentials (password).
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.
UserNotFoundException - The user wth the supplied name does not exist.
ExpiredCredentialException - The user's credentials have expired. The user must change their credentials in order to successfully authenticate.protected long currentPrincipalInvalidPasswordAttempts(UserWithAttributes user)
user - user with attributes.
protected boolean requiresPasswordChange(UserWithAttributes user)
user - user with attributes.
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).
public abstract User addUser(UserTemplate user,
PasswordCredential credential)
throws InvalidCredentialException,
InvalidUserException,
UserAlreadyExistsException,
OperationFailedException
RemoteDirectoryuser to the directory store.
addUser in interface RemoteDirectoryuser - template of the user to add.credential - password. May be null, since JIRA creates a user in two steps (user THEN password)
InvalidCredentialException - The supplied credential is invalid.
InvalidUserException - The supplied user is invalid.
UserAlreadyExistsException - The user already exists
OperationFailedException - underlying directory implementation failed to execute the operation.protected void encryptCredential(PasswordCredential passwordCredential)
protected PasswordEncoder getEncoder()
public User updateUser(UserTemplate user)
throws InvalidUserException,
UserNotFoundException
RemoteDirectoryuser.
updateUser in interface RemoteDirectoryuser - The user to update.
InvalidUserException - the supplied user is invalid.
UserNotFoundException - the user does not exist in the directory store.
public void updateUserCredential(java.lang.String name,
PasswordCredential newCredential)
throws InvalidCredentialException,
UserNotFoundException
RemoteDirectorypassword for a user.
updateUserCredential in interface RemoteDirectoryname - The name of the user (username).newCredential - The new credential (password).
InvalidCredentialException - The supplied credential is invalid.
UserNotFoundException - The user does not exist.
public User renameUser(java.lang.String oldName,
java.lang.String newName)
throws InvalidUserException,
UserNotFoundException,
UserAlreadyExistsException
RemoteDirectoryuser.
renameUser in interface RemoteDirectoryoldName - name of existing user.newName - desired name of user.
InvalidUserException - if the new username is invalid.
UserNotFoundException - if the user with the existing name does not exist.
UserAlreadyExistsException - if the newName already exists.
public void storeUserAttributes(java.lang.String username,
java.util.Map<java.lang.String,java.util.Set<java.lang.String>> attributes)
throws UserNotFoundException
RemoteDirectorydirectoryId.
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).
storeUserAttributes in interface RemoteDirectoryusername - name of user to update.attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).
UserNotFoundException - user with supplied username does not exist.
public void removeUserAttributes(java.lang.String username,
java.lang.String attributeName)
throws UserNotFoundException
RemoteDirectory
removeUserAttributes in interface RemoteDirectoryusername - name of the user to update.attributeName - name of attribute to remove.
UserNotFoundException - user with supplied username does not exist.
public void removeUser(java.lang.String name)
throws UserNotFoundException
RemoteDirectoryuser that matches the supplied name.
removeUser in interface RemoteDirectoryname - The name of the user (username).
UserNotFoundException - The user does not exist.public void removeAllUsers(java.util.Set<java.lang.String> userNames)
InternalRemoteDirectory
removeAllUsers in interface InternalRemoteDirectoryuserNames - usernames of users to remove.public void removeAllGroups(java.util.Set<java.lang.String> groupNames)
InternalRemoteDirectory
removeAllGroups in interface InternalRemoteDirectorygroupNames - names of groups to remove.public <T> java.util.List<T> searchUsers(EntityQuery<T> query)
RemoteDirectoryusers that match the supplied query criteria.
searchUsers in interface RemoteDirectoryquery - EntityQuery for Entity.USER.
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.
public InternalDirectoryGroup findGroupByName(java.lang.String name)
throws GroupNotFoundException
RemoteDirectorygroup that matches the supplied name.
findGroupByName in interface InternalRemoteDirectoryfindGroupByName in interface RemoteDirectoryname - the name of the group.
InternalDirectoryGroup entity.
GroupNotFoundException - a group with the supplied name does not exist.
public GroupWithAttributes findGroupWithAttributesByName(java.lang.String name)
throws GroupNotFoundException
RemoteDirectorygroup that matches the supplied name.
findGroupWithAttributesByName in interface RemoteDirectoryname - the name of the group.
GroupNotFoundException - a group with the supplied name does not exist.
public Group addGroup(GroupTemplate group)
throws InvalidGroupException,
OperationFailedException
RemoteDirectorygroup to the directory store.
addGroup in interface RemoteDirectorygroup - template of the group to add.
InvalidGroupException - The supplied group is invalid.
OperationFailedException - underlying directory implementation failed to execute the operation.
public abstract Group addLocalGroup(GroupTemplate group)
throws InvalidGroupException,
OperationFailedException
InternalRemoteDirectory
addLocalGroup in interface InternalRemoteDirectorygroup - template of the group to add.
InvalidGroupException - The supplied group is invalid.
OperationFailedException - underlying directory implementation failed to execute the operation.
public Group updateGroup(GroupTemplate group)
throws InvalidGroupException,
GroupNotFoundException
RemoteDirectorygroup.
updateGroup in interface RemoteDirectorygroup - The group to update.
InvalidGroupException - the supplied group is invalid.
GroupNotFoundException - the group does not exist in the directory store.
public Group renameGroup(java.lang.String oldName,
java.lang.String newName)
throws InvalidGroupException,
GroupNotFoundException
RemoteDirectorygroup.
renameGroup in interface RemoteDirectoryoldName - name of existing group.newName - desired name of group.
InvalidGroupException - if the new groupname is invalid or already exists in the directory.
GroupNotFoundException - if the group with the existing name does not exist.
public void storeGroupAttributes(java.lang.String groupName,
java.util.Map<java.lang.String,java.util.Set<java.lang.String>> attributes)
throws GroupNotFoundException
RemoteDirectorydirectoryId.
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).
storeGroupAttributes in interface RemoteDirectorygroupName - name of group to update.attributes - new or updated attributes (attributes that don't need changing should not appear in this Map).
GroupNotFoundException - group with supplied groupName does not exist.
public void removeGroupAttributes(java.lang.String groupName,
java.lang.String attributeName)
throws GroupNotFoundException
RemoteDirectory
removeGroupAttributes in interface RemoteDirectorygroupName - name of the group to update.attributeName - name of attribute to remove.
GroupNotFoundException - group with supplied groupName does not exist.
public void removeGroup(java.lang.String name)
throws GroupNotFoundException
RemoteDirectorygroup that matches the supplied name.
removeGroup in interface RemoteDirectoryname - The name of the group.
GroupNotFoundException - The group does not exist.public <T> java.util.List<T> searchGroups(EntityQuery<T> query)
RemoteDirectorygroups that match the supplied query criteria.
searchGroups in interface RemoteDirectoryquery - EntityQuery for Entity.GROUP.
List or List of groups/groupnames
matching the search criteria. An empty List will be returned
if no groups matching the criteria are found.
public boolean isUserDirectGroupMember(java.lang.String username,
java.lang.String groupName)
RemoteDirectory
isUserDirectGroupMember in interface RemoteDirectoryusername - name of user.groupName - name of group.
true iff the user is a direct member of the group.
public boolean isGroupDirectGroupMember(java.lang.String childGroup,
java.lang.String parentGroup)
RemoteDirectory
isGroupDirectGroupMember in interface RemoteDirectorychildGroup - name of child group.parentGroup - name of parent group.
true iff the childGroup is a direct member of the parentGroup.
public void addUserToGroup(java.lang.String username,
java.lang.String groupName)
throws UserNotFoundException,
GroupNotFoundException
RemoteDirectorychildGroup will
appear as members of parentGroup to querying applications.
addUserToGroup in interface RemoteDirectoryusername - The user that will become a member of groupNamegroupName - The group that will gain a new member.
UserNotFoundException - If the user cannot be found.
GroupNotFoundException - If the group cannot be found.
public void addGroupToGroup(java.lang.String childGroup,
java.lang.String parentGroup)
throws InvalidMembershipException,
GroupNotFoundException
RemoteDirectory
addGroupToGroup in interface RemoteDirectorychildGroup - The group that will become a member of parentGroupparentGroup - The group that will gain a new member
InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.
GroupNotFoundException - One or both of the groups cannot be found.
public void removeUserFromGroup(java.lang.String username,
java.lang.String groupName)
throws MembershipNotFoundException,
GroupNotFoundException,
UserNotFoundException
RemoteDirectory
removeUserFromGroup in interface RemoteDirectoryusername - The user that will be removed from parentGroupgroupName - The group that will lose the member.
MembershipNotFoundException - if the user is not a direct member of the group.
GroupNotFoundException - If the group cannot be found.
UserNotFoundException - If the user cannot be found.
public void removeGroupFromGroup(java.lang.String childGroup,
java.lang.String parentGroup)
throws InvalidMembershipException,
MembershipNotFoundException,
GroupNotFoundException
RemoteDirectory
removeGroupFromGroup in interface RemoteDirectorychildGroup - The group that will be removed from parentGroupparentGroup - The group that will lose the member.
InvalidMembershipException - if the childGroup and parentGroup exist but are of different GroupTypes.
MembershipNotFoundException - if the childGroup is not a direct member of the parentGroup.
GroupNotFoundException - One or both of the groups cannot be found.public <T> java.util.List<T> searchGroupRelationships(MembershipQuery<T> query)
RemoteDirectory
searchGroupRelationships in interface RemoteDirectoryquery - query for memberships.
public void testConnection()
throws OperationFailedException
testConnection in interface RemoteDirectoryOperationFailedException - underlying directory implementation failed to execute the operation.public boolean supportsInactiveAccounts()
supportsInactiveAccounts in interface RemoteDirectorypublic boolean supportsNestedGroups()
RemoteDirectory
supportsNestedGroups in interface RemoteDirectorytrue because Internal Directories support nested groups as of Crowd 2.0.public boolean isRolesDisabled()
RemoteDirectory
isRolesDisabled in interface RemoteDirectory
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||