public class MemoryUserDatabase extends java.lang.Object implements UserDatabase
UserDatabase that loads all defined users,
groups, and roles into an in-memory data structure, and uses a specified XML
file for its persistent storage.
This class is thread-safe.
This class does not enforce what, in an RDBMS, would be called referential integrity. Concurrent modifications may result in inconsistent data such as a User retaining a reference to a Role that has been removed from the database.
| Modifier and Type | Field and Description |
|---|---|
protected java.util.Map<java.lang.String,Group> |
groups
The set of
Groups defined in this database, keyed by group name. |
protected java.lang.String |
id
The unique global identifier of this user database.
|
protected java.lang.String |
pathname
The relative (to
catalina.base) or absolute pathname to the
XML file in which we will save our persistent information. |
protected java.lang.String |
pathnameNew
The relative or absolute pathname of the file in which we write our new
information prior to renaming.
|
protected java.lang.String |
pathnameOld
The relative or absolute pathname to the file in which our old
information is stored while renaming is in progress.
|
protected boolean |
readonly
A flag, indicating if the user database is read only.
|
protected java.util.Map<java.lang.String,Role> |
roles
The set of
Roles defined in this database, keyed by role name. |
protected java.util.Map<java.lang.String,User> |
users
The set of
Users defined in this database, keyed by user name. |
| Constructor and Description |
|---|
MemoryUserDatabase()
Create a new instance with default values.
|
MemoryUserDatabase(java.lang.String id)
Create a new instance with the specified values.
|
| Modifier and Type | Method and Description |
|---|---|
void |
backgroundProcess()
Perform any background processing (e.g. checking for changes in persisted
storage) required for the user database.
|
void |
close()
Finalize access to this user database.
|
Group |
createGroup(java.lang.String groupname,
java.lang.String description)
Create and return a new
Group defined in this user database. |
Role |
createRole(java.lang.String rolename,
java.lang.String description)
Create and return a new
Role defined in this user database. |
User |
createUser(java.lang.String username,
java.lang.String password,
java.lang.String fullName)
Create and return a new
User defined in this user database. |
Group |
findGroup(java.lang.String groupname)
Return the
Group with the specified group name, if any; otherwise
return null. |
Role |
findRole(java.lang.String rolename)
Return the
Role with the specified role name, if any; otherwise
return null. |
User |
findUser(java.lang.String username)
Return the
User with the specified user name, if any; otherwise
return null. |
java.util.Iterator<Group> |
getGroups() |
java.lang.String |
getId() |
java.lang.String |
getPathname() |
boolean |
getReadonly() |
java.util.Iterator<Role> |
getRoles() |
java.util.Iterator<User> |
getUsers() |
boolean |
getWatchSource() |
boolean |
isWriteable()
Check for permissions to save this user database to persistent storage
location.
|
void |
open()
Initialize access to this user database.
|
void |
removeGroup(Group group)
Remove the specified
Group from this user database. |
void |
removeRole(Role role)
Remove the specified
Role from this user database. |
void |
removeUser(User user)
Remove the specified
User from this user database. |
void |
save()
Save any updated information to the persistent storage location for this
user database.
|
void |
setPathname(java.lang.String pathname)
Set the relative or absolute pathname to the persistent storage file.
|
void |
setReadonly(boolean readonly)
Setting the readonly status of the user database
|
void |
setWatchSource(boolean watchSource) |
java.lang.String |
toString()
Return a String representation of this UserDatabase.
|
protected final java.util.Map<java.lang.String,Group> groups
Groups defined in this database, keyed by group name.protected final java.lang.String id
protected java.lang.String pathname
catalina.base) or absolute pathname to the
XML file in which we will save our persistent information.protected java.lang.String pathnameOld
protected java.lang.String pathnameNew
protected boolean readonly
protected final java.util.Map<java.lang.String,Role> roles
Roles defined in this database, keyed by role name.public MemoryUserDatabase()
public MemoryUserDatabase(java.lang.String id)
id - Unique global identifier of this user databasepublic java.util.Iterator<Group> getGroups()
getGroups in interface UserDatabaseGroups defined in this user database.public java.lang.String getId()
getId in interface UserDatabasepublic java.lang.String getPathname()
public void setPathname(java.lang.String pathname)
pathname - The new pathnamepublic boolean getReadonly()
public void setReadonly(boolean readonly)
readonly - the new statuspublic boolean getWatchSource()
public void setWatchSource(boolean watchSource)
public java.util.Iterator<Role> getRoles()
getRoles in interface UserDatabaseRoles defined in this user database.public java.util.Iterator<User> getUsers()
getUsers in interface UserDatabaseUsers defined in this user database.public void close()
throws java.lang.Exception
close in interface UserDatabasejava.lang.Exception - if any exception is thrown during closingpublic Group createGroup(java.lang.String groupname, java.lang.String description)
Group defined in this user database.createGroup in interface UserDatabasegroupname - The group name of the new group (must be unique)description - The description of this grouppublic Role createRole(java.lang.String rolename, java.lang.String description)
Role defined in this user database.createRole in interface UserDatabaserolename - The role name of the new group (must be unique)description - The description of this grouppublic User createUser(java.lang.String username, java.lang.String password, java.lang.String fullName)
User defined in this user database.createUser in interface UserDatabaseusername - The logon username of the new user (must be unique)password - The logon password of the new userfullName - The full name of the new userpublic Group findGroup(java.lang.String groupname)
Group with the specified group name, if any; otherwise
return null.findGroup in interface UserDatabasegroupname - Name of the group to returnGroup with the specified group name, if any;
otherwise return null.public Role findRole(java.lang.String rolename)
Role with the specified role name, if any; otherwise
return null.findRole in interface UserDatabaserolename - Name of the role to returnRole with the specified role name, if any; otherwise
return null.public User findUser(java.lang.String username)
User with the specified user name, if any; otherwise
return null.findUser in interface UserDatabaseusername - Name of the user to returnUser with the specified user name, if any; otherwise
return null.public void open()
throws java.lang.Exception
open in interface UserDatabasejava.lang.Exception - if any exception is thrown during openingpublic void removeGroup(Group group)
Group from this user database.removeGroup in interface UserDatabasegroup - The group to be removedpublic void removeRole(Role role)
Role from this user database.removeRole in interface UserDatabaserole - The role to be removedpublic void removeUser(User user)
User from this user database.removeUser in interface UserDatabaseuser - The user to be removedpublic boolean isWriteable()
true if the database is writablepublic void save()
throws java.lang.Exception
save in interface UserDatabasejava.lang.Exception - if any exception is thrown during savingpublic void backgroundProcess()
UserDatabasebackgroundProcess in interface UserDatabasepublic java.lang.String toString()
toString in class java.lang.ObjectCopyright © 2000-2019 Apache Software Foundation. All Rights Reserved.