|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.avalon.framework.logger.AbstractLogEnabled
org.apache.james.impl.jamesuser.AbstractUsersRepository
org.apache.james.userrepository.AbstractJdbcUsersRepository
public abstract class AbstractJdbcUsersRepository
An abstract base class for creating UserRepository implementations which use a database for persistence. To implement a new UserRepository using by extending this class, you need to implement the 3 abstract methods defined below, and define the required SQL statements in an SQLResources file. The SQL statements used by this implementation are:
| Required | |
| select | Select all users. |
| insert | Insert a user. |
| update | Update a user. |
| delete | Delete a user by name. |
| createTable | Create the users table. | Optional |
| selectByLowercaseName | Select a user by name (case-insensitive lowercase). |
| Field Summary | |
|---|---|
protected java.util.Map |
m_sqlParameters
|
| Fields inherited from class org.apache.james.impl.jamesuser.AbstractUsersRepository |
|---|
enableAliases, enableForwarding, ignoreCase |
| Fields inherited from interface org.apache.james.api.user.UsersRepository |
|---|
ROLE, USER |
| Fields inherited from interface org.apache.james.api.vut.VirtualUserTable |
|---|
ALIASDOMAIN_PREFIX, ERROR_PREFIX, REGEX_PREFIX, ROLE |
| Constructor Summary | |
|---|---|
AbstractJdbcUsersRepository()
|
|
| Method Summary | |
|---|---|
void |
configure(org.apache.avalon.framework.configuration.Configuration configuration)
Configures the UserRepository for JDBC access. Requires a configuration element in the .conf.xml file of the form: |
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 void |
doAddUser(User user)
Adds a user to the underlying Repository. |
protected void |
doRemoveUser(User user)
Removes a user from the underlying repository. |
protected 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. |
protected User |
getUserByNameIterating(java.lang.String name,
boolean ignoreCase)
Gets a user by name, ignoring case if specified. |
void |
initialize()
Initialises the JDBC repository. |
java.util.Iterator |
list()
List users in repository. |
protected 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. |
protected abstract User |
readUserFromResultSet(java.sql.ResultSet rsUsers)
Reads properties for a User from an open ResultSet. |
void |
removeUser(java.lang.String userName)
Removes a user from the repository |
void |
service(org.apache.avalon.framework.service.ServiceManager componentManager)
|
protected abstract void |
setUserForInsertStatement(User user,
java.sql.PreparedStatement userInsert)
Set parameters of a PreparedStatement object with property values from a User instance. |
protected abstract void |
setUserForUpdateStatement(User user,
java.sql.PreparedStatement userUpdate)
Set parameters of a PreparedStatement object with property values from a User instance. |
boolean |
test(java.lang.String name,
java.lang.String password)
Test if user with name 'name' has password 'password'. |
| Methods inherited from class org.apache.james.impl.jamesuser.AbstractUsersRepository |
|---|
addUser, addUser, getMappings, setEnableAliases, setEnableForwarding, setIgnoreCase, updateUser |
| 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 |
| Methods inherited from interface org.apache.james.api.user.UsersRepository |
|---|
addUser |
| Field Detail |
|---|
protected java.util.Map m_sqlParameters
| Constructor Detail |
|---|
public AbstractJdbcUsersRepository()
| Method Detail |
|---|
public void removeUser(java.lang.String userName)
removeUser in interface UsersRepositoryuserName - the user to be removedpublic User getUserByName(java.lang.String name)
getUserByName in interface UsersRepositoryname - the name of the user to retrieve
public User getUserByNameCaseInsensitive(java.lang.String name)
getUserByNameCaseInsensitive in interface UsersRepositoryname - the name of the user to retrieve
public java.lang.String getRealName(java.lang.String name)
getRealName in interface UsersRepositoryname - the name of the user to retrieve
public boolean contains(java.lang.String name)
contains in interface UsersRepositoryname - the name to check in the repository
public boolean containsCaseInsensitive(java.lang.String name)
containsCaseInsensitive in interface UsersRepositoryname - the name to check in the repository
public boolean test(java.lang.String name,
java.lang.String password)
test in interface UsersRepositoryname - the name of the user to be testedpassword - the password to be tested
public int countUsers()
countUsers in interface UsersRepositorypublic java.util.Iterator list()
list in interface UsersRepository
public void service(org.apache.avalon.framework.service.ServiceManager componentManager)
throws org.apache.avalon.framework.service.ServiceException
service in interface org.apache.avalon.framework.service.Serviceableorg.apache.avalon.framework.service.ServiceExceptionServiceable.service(ServiceManager)
public void configure(org.apache.avalon.framework.configuration.Configuration configuration)
throws org.apache.avalon.framework.configuration.ConfigurationException
<repository name="LocalUsers"
class="org.apache.james.userrepository.JamesUsersJdbcRepository">
<!-- Name of the datasource to use -->
<data-source>MailDb</data-source>
<!-- File to load the SQL definitions from -->
<sqlFile>dist/conf/sqlResources.xml</sqlFile>
<!-- replacement parameters for the sql file -->
<sqlParameters table="JamesUsers"/>
</repository>
configure in interface org.apache.avalon.framework.configuration.Configurableconfigure in class AbstractUsersRepositoryorg.apache.avalon.framework.configuration.ConfigurationExceptionConfigurable.configure(Configuration)
public void initialize()
throws java.lang.Exception
Initialises the JDBC repository.
1) Tests the connection to the database.
2) Loads SQL strings from the SQL definition file, choosing the appropriate SQL for this connection, and performing parameter substitution,
3) Initialises the database with the required tables, if necessary.
initialize in interface org.apache.avalon.framework.activity.Initializablejava.lang.Exception - if an error occursInitializable.initialize()protected java.util.List listUserNames()
List of Strings representing
user names.protected java.util.Iterator listAllUsers()
Iterator of Users.protected void doAddUser(User user)
doAddUser in class AbstractUsersRepositoryuser - the user to addprotected void doRemoveUser(User user)
user - the user to removeprotected void doUpdateUser(User user)
doUpdateUser in class AbstractUsersRepositoryuser - the user to update
protected User getUserByNameIterating(java.lang.String name,
boolean ignoreCase)
name.
name - the name of the user being retrievedignoreCase - whether the name is regarded as case-insensitive
protected User getUserByName(java.lang.String name,
boolean ignoreCase)
name - the name of the user being retrievedignoreCase - whether the name is regarded as case-insensitive
protected abstract User readUserFromResultSet(java.sql.ResultSet rsUsers)
throws java.sql.SQLException
rsUsers - A ResultSet with a User record in the current row.
java.sql.SQLException - if an exception occurs reading from the ResultSet
protected abstract void setUserForInsertStatement(User user,
java.sql.PreparedStatement userInsert)
throws java.sql.SQLException
user - a User instance, which should be an implementation class which
is handled by this Repostory implementation.userInsert - a PreparedStatement initialised with SQL taken from the
"insert" SQL definition.
java.sql.SQLException - if an exception occurs while setting parameter values.
protected abstract void setUserForUpdateStatement(User user,
java.sql.PreparedStatement userUpdate)
throws java.sql.SQLException
user - a User instance, which should be an implementation class which
is handled by this Repostory implementation.userUpdate - a PreparedStatement initialised with SQL taken from the
"update" SQL definition.
java.sql.SQLException - if an exception occurs while setting parameter values.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||