|
||||||||||
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 UsersRepository
userName
- the user to be removedpublic User getUserByName(java.lang.String name)
getUserByName
in interface UsersRepository
name
- the name of the user to retrieve
public User getUserByNameCaseInsensitive(java.lang.String name)
getUserByNameCaseInsensitive
in interface UsersRepository
name
- the name of the user to retrieve
public java.lang.String getRealName(java.lang.String name)
getRealName
in interface UsersRepository
name
- the name of the user to retrieve
public boolean contains(java.lang.String name)
contains
in interface UsersRepository
name
- the name to check in the repository
public boolean containsCaseInsensitive(java.lang.String name)
containsCaseInsensitive
in interface UsersRepository
name
- the name to check in the repository
public boolean test(java.lang.String name, java.lang.String password)
test
in interface UsersRepository
name
- the name of the user to be testedpassword
- the password to be tested
public int countUsers()
countUsers
in interface UsersRepository
public 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.Serviceable
org.apache.avalon.framework.service.ServiceException
Serviceable.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.Configurable
configure
in class AbstractUsersRepository
org.apache.avalon.framework.configuration.ConfigurationException
Configurable.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.Initializable
java.lang.Exception
- if an error occursInitializable.initialize()
protected java.util.List listUserNames()
List
of String
s representing
user names.protected java.util.Iterator listAllUsers()
Iterator
of User
s.protected void doAddUser(User user)
doAddUser
in class AbstractUsersRepository
user
- the user to addprotected void doRemoveUser(User user)
user
- the user to removeprotected void doUpdateUser(User user)
doUpdateUser
in class AbstractUsersRepository
user
- the user to updateprotected 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 ResultSetprotected 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 |