org.apache.james.userrepository
Class AbstractUsersRepository

java.lang.Object
  extended by org.apache.avalon.framework.logger.AbstractLogEnabled
      extended by org.apache.james.userrepository.AbstractUsersRepository
All Implemented Interfaces:
org.apache.avalon.framework.component.Component, org.apache.avalon.framework.logger.LogEnabled, UsersRepository
Direct Known Subclasses:
AbstractJdbcUsersRepository

public abstract class AbstractUsersRepository
extends org.apache.avalon.framework.logger.AbstractLogEnabled
implements UsersRepository, org.apache.avalon.framework.component.Component

A partial implementation of a Repository to store users.

This implements common functionality found in different UsersRespository implementations, and makes it easier to create new User repositories.


Field Summary
 
Fields inherited from interface org.apache.james.services.UsersRepository
ROLE, USER
 
Constructor Summary
AbstractUsersRepository()
           
 
Method Summary
 void addUser(java.lang.String name, java.lang.Object attributes)
          Adds a user to the repository with the specified attributes.
 boolean addUser(java.lang.String username, java.lang.String password)
          Adds a user to the repository with the specified password
 boolean addUser(User user)
          Adds a user to the repository with the specified User object.
 boolean contains(java.lang.String name)
          Returns whether or not this user is in the repository
 boolean containsCaseInsensitive(java.lang.String name)
          Returns whether or not this user is in the repository.
 int countUsers()
          Returns a count of the users in the repository.
protected abstract  void doAddUser(User user)
          Adds a user to the underlying Repository.
protected abstract  void doRemoveUser(User user)
          Removes a user from the underlying repository.
protected abstract  void doUpdateUser(User user)
          Updates a user record to match the supplied User.
 java.lang.String getRealName(java.lang.String name)
          Returns the user name of the user matching name on an equalsIgnoreCase basis.
 User getUserByName(java.lang.String name)
          Get the user object with the specified user name.
protected  User getUserByName(java.lang.String name, boolean ignoreCase)
          Gets a user by name, ignoring case if specified.
 User getUserByNameCaseInsensitive(java.lang.String name)
          Get the user object with the specified user name.
 java.util.Iterator list()
          List users in repository.
protected abstract  java.util.Iterator listAllUsers()
          Returns a list populated with all of the Users in the repository.
protected  java.util.List listUserNames()
          Produces the complete list of User names, with correct case.
 void removeUser(java.lang.String name)
          Removes a user from the repository
 boolean test(java.lang.String name, java.lang.String password)
          Test if user with name 'name' has password 'password'.
 boolean updateUser(User user)
          Update the repository with the specified user object.
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractUsersRepository

public AbstractUsersRepository()
Method Detail

listAllUsers

protected abstract java.util.Iterator listAllUsers()
Returns a list populated with all of the Users in the repository.

Returns:
an Iterator of Users.

doAddUser

protected abstract void doAddUser(User user)
Adds a user to the underlying Repository. The user name must not clash with an existing user.


doRemoveUser

protected abstract void doRemoveUser(User user)
Removes a user from the underlying repository. If the user doesn't exist, returns ok.


doUpdateUser

protected abstract void doUpdateUser(User user)
Updates a user record to match the supplied User.


listUserNames

protected java.util.List listUserNames()
Produces the complete list of User names, with correct case.

Returns:
a List of Strings representing user names.

getUserByName

protected User getUserByName(java.lang.String name,
                             boolean ignoreCase)
Gets a user by name, ignoring case if specified. This implementation gets the entire set of users, and scrolls through searching for one matching name.

Parameters:
name - the name of the user being retrieved
ignoreCase - whether the name is regarded as case-insensitive
Returns:
the user being retrieved, null if the user doesn't exist

addUser

public boolean addUser(User user)
Adds a user to the repository with the specified User object. Users names must be unique-case-insensitive in the repository.

Specified by:
addUser in interface UsersRepository
Parameters:
user - the user to be added
Returns:
true if succesful, false otherwise
Since:
James 1.2.2

addUser

public void addUser(java.lang.String name,
                    java.lang.Object attributes)
Adds a user to the repository with the specified attributes. In current implementations, the Object attributes is generally a String password.

Specified by:
addUser in interface UsersRepository
Parameters:
name - the name of the user to be added
attributes - the password value as a String

addUser

public boolean addUser(java.lang.String username,
                       java.lang.String password)
Description copied from interface: UsersRepository
Adds a user to the repository with the specified password

Specified by:
addUser in interface UsersRepository
Parameters:
username - the username of the user to be added
password - the password of the user to add
Returns:
true if succesful, false otherwise
See Also:
UsersRepository.addUser(java.lang.String, java.lang.String)

updateUser

public boolean updateUser(User user)
Update the repository with the specified user object. A user object with this username must already exist.

Specified by:
updateUser in interface UsersRepository
Parameters:
user - the user to be updated
Returns:
true if successful.

removeUser

public void removeUser(java.lang.String name)
Removes a user from the repository

Specified by:
removeUser in interface UsersRepository
Parameters:
user - the user to be removed

getUserByName

public User getUserByName(java.lang.String name)
Get the user object with the specified user name. Return null if no such user.

Specified by:
getUserByName in interface UsersRepository
Parameters:
name - the name of the user to retrieve
Returns:
the user if found, null otherwise
Since:
James 1.2.2

getUserByNameCaseInsensitive

public User getUserByNameCaseInsensitive(java.lang.String name)
Get the user object with the specified user name. Match user naems on a case insensitive basis. Return null if no such user.

Specified by:
getUserByNameCaseInsensitive in interface UsersRepository
Parameters:
name - the name of the user to retrieve
Returns:
the user if found, null otherwise
Since:
James 1.2.2

getRealName

public java.lang.String getRealName(java.lang.String name)
Returns the user name of the user matching name on an equalsIgnoreCase basis. Returns null if no match.

Specified by:
getRealName in interface UsersRepository
Parameters:
name - the name of the user to retrieve
Returns:
the correct case sensitive name of the user

contains

public boolean contains(java.lang.String name)
Returns whether or not this user is in the repository

Specified by:
contains in interface UsersRepository
Parameters:
name - the name to check in the repository
Returns:
whether the user is in the repository

containsCaseInsensitive

public boolean containsCaseInsensitive(java.lang.String name)
Returns whether or not this user is in the repository. Names are matched on a case insensitive basis.

Specified by:
containsCaseInsensitive in interface UsersRepository
Parameters:
name - the name to check in the repository
Returns:
whether the user is in the repository

test

public boolean test(java.lang.String name,
                    java.lang.String password)
Test if user with name 'name' has password 'password'.

Specified by:
test in interface UsersRepository
Parameters:
name - the name of the user to be tested
password - the password to be tested
Returns:
true if the test is successful, false if the password is incorrect or the user doesn't exist
Since:
James 1.2.2

countUsers

public int countUsers()
Returns a count of the users in the repository.

Specified by:
countUsers in interface UsersRepository
Returns:
the number of users in the repository

list

public java.util.Iterator list()
List users in repository.

Specified by:
list in interface UsersRepository
Returns:
Iterator over a collection of Strings, each being one user in the repository.


Copyright © 2002-2007 The Apache Software Foundation. All Rights Reserved.