Package org.apache.catalina.users
Class MemoryUserDatabase
java.lang.Object
org.apache.catalina.users.MemoryUserDatabase
- All Implemented Interfaces:
UserDatabase
Concrete implementation of
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.
- Since:
- 4.1
- Author:
- Craig R. McClanahan
-
Field Summary
Modifier and TypeFieldDescriptionThe set ofGroup
s defined in this database, keyed by group name.protected final String
The unique global identifier of this user database.protected String
The relative (tocatalina.base
) or absolute pathname to the XML file in which we will save our persistent information.protected String
The relative or absolute pathname of the file in which we write our new information prior to renaming.protected String
The relative or absolute pathname to the file in which our old information is stored while renaming is in progress.protected boolean
A flag, indicating if the user database is read only.The set ofRole
s defined in this database, keyed by role name.The set ofUser
s defined in this database, keyed by user name. -
Constructor Summary
ConstructorDescriptionCreate a new instance with default values.Create a new instance with the specified values. -
Method Summary
Modifier and TypeMethodDescriptionvoid
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.createGroup
(String groupname, String description) Create and return a newGroup
defined in this user database.createRole
(String rolename, String description) Create and return a newRole
defined in this user database.createUser
(String username, String password, String fullName) Create and return a newUser
defined in this user database.getId()
boolean
getRoles()
getUsers()
boolean
boolean
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 specifiedGroup
from this user database.void
removeRole
(Role role) Remove the specifiedRole
from this user database.void
removeUser
(User user) Remove the specifiedUser
from this user database.void
save()
Save any updated information to the persistent storage location for this user database.void
setPathname
(String pathname) Set the relative or absolute pathname to the persistent storage file.void
setReadonly
(boolean readonly) Setting the readonly status of the user databasevoid
setWatchSource
(boolean watchSource) toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.catalina.UserDatabase
isAvailable, isSparse, modifiedGroup, modifiedRole, modifiedUser
-
Field Details
-
groups
-
id
The unique global identifier of this user database. -
pathname
The relative (tocatalina.base
) or absolute pathname to the XML file in which we will save our persistent information. -
pathnameOld
The relative or absolute pathname to the file in which our old information is stored while renaming is in progress. -
pathnameNew
The relative or absolute pathname of the file in which we write our new information prior to renaming. -
readonly
protected boolean readonlyA flag, indicating if the user database is read only. -
roles
-
users
-
-
Constructor Details
-
MemoryUserDatabase
public MemoryUserDatabase()Create a new instance with default values. -
MemoryUserDatabase
Create a new instance with the specified values.- Parameters:
id
- Unique global identifier of this user database
-
-
Method Details
-
getGroups
- Specified by:
getGroups
in interfaceUserDatabase
- Returns:
- the set of
Group
s defined in this user database.
-
getId
- Specified by:
getId
in interfaceUserDatabase
- Returns:
- the unique global identifier of this user database.
-
getPathname
- Returns:
- the relative or absolute pathname to the persistent storage file.
-
setPathname
Set the relative or absolute pathname to the persistent storage file.- Parameters:
pathname
- The new pathname
-
getReadonly
public boolean getReadonly()- Returns:
- the readonly status of the user database
-
setReadonly
public void setReadonly(boolean readonly) Setting the readonly status of the user database- Parameters:
readonly
- the new status
-
getWatchSource
public boolean getWatchSource() -
setWatchSource
public void setWatchSource(boolean watchSource) -
getRoles
- Specified by:
getRoles
in interfaceUserDatabase
- Returns:
- the set of
Role
s defined in this user database.
-
getUsers
- Specified by:
getUsers
in interfaceUserDatabase
- Returns:
- the set of
User
s defined in this user database.
-
close
Description copied from interface:UserDatabase
Finalize access to this user database.- Specified by:
close
in interfaceUserDatabase
- Throws:
Exception
- if any exception is thrown during closing
-
createGroup
Description copied from interface:UserDatabase
Create and return a newGroup
defined in this user database.- Specified by:
createGroup
in interfaceUserDatabase
- Parameters:
groupname
- The group name of the new group (must be unique)description
- The description of this group- Returns:
- The new group
-
createRole
Description copied from interface:UserDatabase
Create and return a newRole
defined in this user database.- Specified by:
createRole
in interfaceUserDatabase
- Parameters:
rolename
- The role name of the new role (must be unique)description
- The description of this role- Returns:
- The new role
-
createUser
Description copied from interface:UserDatabase
Create and return a newUser
defined in this user database.- Specified by:
createUser
in interfaceUserDatabase
- Parameters:
username
- The logon username of the new user (must be unique)password
- The logon password of the new userfullName
- The full name of the new user- Returns:
- The new user
-
findGroup
- Specified by:
findGroup
in interfaceUserDatabase
- Parameters:
groupname
- Name of the group to return- Returns:
- the
Group
with the specified group name, if any; otherwise returnnull
.
-
findRole
- Specified by:
findRole
in interfaceUserDatabase
- Parameters:
rolename
- Name of the role to return- Returns:
- the
Role
with the specified role name, if any; otherwise returnnull
.
-
findUser
- Specified by:
findUser
in interfaceUserDatabase
- Parameters:
username
- Name of the user to return- Returns:
- the
User
with the specified user name, if any; otherwise returnnull
.
-
open
Description copied from interface:UserDatabase
Initialize access to this user database.- Specified by:
open
in interfaceUserDatabase
- Throws:
Exception
- if any exception is thrown during opening
-
removeGroup
Description copied from interface:UserDatabase
Remove the specifiedGroup
from this user database.- Specified by:
removeGroup
in interfaceUserDatabase
- Parameters:
group
- The group to be removed
-
removeRole
Description copied from interface:UserDatabase
Remove the specifiedRole
from this user database.- Specified by:
removeRole
in interfaceUserDatabase
- Parameters:
role
- The role to be removed
-
removeUser
Description copied from interface:UserDatabase
Remove the specifiedUser
from this user database.- Specified by:
removeUser
in interfaceUserDatabase
- Parameters:
user
- The user to be removed
-
isWritable
public boolean isWritable()Check for permissions to save this user database to persistent storage location.- Returns:
true
if the database is writable
-
save
Description copied from interface:UserDatabase
Save any updated information to the persistent storage location for this user database.- Specified by:
save
in interfaceUserDatabase
- Throws:
Exception
- if any exception is thrown during saving
-
backgroundProcess
public void backgroundProcess()Description copied from interface:UserDatabase
Perform any background processing (e.g. checking for changes in persisted storage) required for the user database.- Specified by:
backgroundProcess
in interfaceUserDatabase
-
toString
-