OPEN - issue SEC-732: Encapsulate query objects in JdbcDaoImpl and JdbcUserDetailsManager

http://jira.springframework.org/browse/SEC-732. Updated these classes to hide the internal query and update objects to allow future refactoring.
This commit is contained in:
Luke Taylor 2008-03-31 16:52:31 +00:00
parent 53b084e2f9
commit cc752cfc28
2 changed files with 42 additions and 44 deletions

View File

@ -51,9 +51,7 @@ import javax.sql.DataSource;
* <p> * <p>
* A default database structure is assumed, (see {@link #DEF_USERS_BY_USERNAME_QUERY} and {@link * A default database structure is assumed, (see {@link #DEF_USERS_BY_USERNAME_QUERY} and {@link
* #DEF_AUTHORITIES_BY_USERNAME_QUERY}, which most users of this class will need to override, if using an existing * #DEF_AUTHORITIES_BY_USERNAME_QUERY}, which most users of this class will need to override, if using an existing
* scheme. This may be done by setting the default query strings used. If this does not provide enough flexibility, * scheme. This may be done by setting the default query strings used.
* another strategy would be to subclass this class and override the {@link MappingSqlQuery} instances used, via the
* {@link #initMappingSqlQueries()} extension point.
* <p> * <p>
* In order to minimise backward compatibility issues, this DAO does not recognise the expiration of user * In order to minimise backward compatibility issues, this DAO does not recognise the expiration of user
* accounts or the expiration of user credentials. However, it does recognise and honour the user enabled/disabled * accounts or the expiration of user credentials. However, it does recognise and honour the user enabled/disabled
@ -93,9 +91,9 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService {
//~ Instance fields ================================================================================================ //~ Instance fields ================================================================================================
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor(); protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
protected MappingSqlQuery authoritiesByUsernameMapping; private MappingSqlQuery authoritiesByUsernameMapping;
protected MappingSqlQuery groupAuthoritiesByUsernameMapping; private MappingSqlQuery groupAuthoritiesByUsernameMapping;
protected MappingSqlQuery usersByUsernameMapping; private MappingSqlQuery usersByUsernameMapping;
private String authoritiesByUsernameQuery; private String authoritiesByUsernameQuery;
private String groupAuthoritiesByUsernameQuery; private String groupAuthoritiesByUsernameQuery;
@ -137,7 +135,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService {
/** /**
* Extension point to allow other MappingSqlQuery objects to be substituted in a subclass * Extension point to allow other MappingSqlQuery objects to be substituted in a subclass
*/ */
protected void initMappingSqlQueries() { private void initMappingSqlQueries() {
this.usersByUsernameMapping = new UsersByUsernameMapping(getDataSource()); this.usersByUsernameMapping = new UsersByUsernameMapping(getDataSource());
this.authoritiesByUsernameMapping = new AuthoritiesByUsernameMapping(getDataSource()); this.authoritiesByUsernameMapping = new AuthoritiesByUsernameMapping(getDataSource());
this.groupAuthoritiesByUsernameMapping = new GroupAuthoritiesByUsernameMapping(getDataSource()); this.groupAuthoritiesByUsernameMapping = new GroupAuthoritiesByUsernameMapping(getDataSource());
@ -288,7 +286,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService {
/** /**
* Query object to look up a user's authorities. * Query object to look up a user's authorities.
*/ */
protected class AuthoritiesByUsernameMapping extends MappingSqlQuery { private class AuthoritiesByUsernameMapping extends MappingSqlQuery {
protected AuthoritiesByUsernameMapping(DataSource ds) { protected AuthoritiesByUsernameMapping(DataSource ds) {
super(ds, authoritiesByUsernameQuery); super(ds, authoritiesByUsernameQuery);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -303,7 +301,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService {
} }
} }
protected class GroupAuthoritiesByUsernameMapping extends MappingSqlQuery { private class GroupAuthoritiesByUsernameMapping extends MappingSqlQuery {
protected GroupAuthoritiesByUsernameMapping(DataSource ds) { protected GroupAuthoritiesByUsernameMapping(DataSource ds) {
super(ds, groupAuthoritiesByUsernameQuery); super(ds, groupAuthoritiesByUsernameQuery);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -321,7 +319,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService {
/** /**
* Query object to look up a user. * Query object to look up a user.
*/ */
protected class UsersByUsernameMapping extends MappingSqlQuery { private class UsersByUsernameMapping extends MappingSqlQuery {
protected UsersByUsernameMapping(DataSource ds) { protected UsersByUsernameMapping(DataSource ds) {
super(ds, usersByUsernameQuery); super(ds, usersByUsernameQuery);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));

View File

@ -116,27 +116,27 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
private String groupAuthoritiesSql = DEF_GROUP_AUTHORITIES_QUERY_SQL; private String groupAuthoritiesSql = DEF_GROUP_AUTHORITIES_QUERY_SQL;
private String deleteGroupAuthoritySql = DEF_DELETE_GROUP_AUTHORITY_SQL; private String deleteGroupAuthoritySql = DEF_DELETE_GROUP_AUTHORITY_SQL;
protected SqlUpdate insertUser; private SqlUpdate insertUser;
protected SqlUpdate deleteUser; private SqlUpdate deleteUser;
protected SqlUpdate updateUser; private SqlUpdate updateUser;
protected SqlUpdate insertAuthority; private SqlUpdate insertAuthority;
protected SqlUpdate deleteUserAuthorities; private SqlUpdate deleteUserAuthorities;
protected SqlQuery userExistsQuery; private SqlQuery userExistsQuery;
protected SqlUpdate changePassword; private SqlUpdate changePassword;
protected SqlQuery findAllGroupsQuery; private SqlQuery findAllGroupsQuery;
protected SqlQuery findUsersInGroupQuery; private SqlQuery findUsersInGroupQuery;
protected SqlUpdate insertGroup; private SqlUpdate insertGroup;
protected SqlQuery findGroupIdQuery; private SqlQuery findGroupIdQuery;
protected SqlUpdate insertGroupAuthority; private SqlUpdate insertGroupAuthority;
protected SqlUpdate deleteGroup; private SqlUpdate deleteGroup;
protected SqlUpdate deleteGroupMembers; private SqlUpdate deleteGroupMembers;
protected SqlUpdate deleteGroupAuthorities; private SqlUpdate deleteGroupAuthorities;
protected SqlUpdate renameGroup; private SqlUpdate renameGroup;
protected SqlUpdate insertGroupMember; private SqlUpdate insertGroupMember;
protected SqlUpdate deleteGroupMember; private SqlUpdate deleteGroupMember;
protected SqlQuery groupAuthoritiesQuery; private SqlQuery groupAuthoritiesQuery;
protected SqlUpdate deleteGroupAuthority; private SqlUpdate deleteGroupAuthority;
private AuthenticationManager authenticationManager; private AuthenticationManager authenticationManager;
@ -414,7 +414,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
//~ Inner Classes ================================================================================================== //~ Inner Classes ==================================================================================================
protected class InsertUser extends SqlUpdate { private class InsertUser extends SqlUpdate {
public InsertUser(DataSource ds) { public InsertUser(DataSource ds) {
super(ds, createUserSql); super(ds, createUserSql);
@ -425,7 +425,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class DeleteUser extends SqlUpdate { private class DeleteUser extends SqlUpdate {
public DeleteUser(DataSource ds) { public DeleteUser(DataSource ds) {
super(ds, deleteUserSql); super(ds, deleteUserSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -433,7 +433,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class InsertAuthority extends SqlUpdate { private class InsertAuthority extends SqlUpdate {
public InsertAuthority(DataSource ds) { public InsertAuthority(DataSource ds) {
super(ds, createAuthoritySql); super(ds, createAuthoritySql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -442,7 +442,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class DeleteUserAuthorities extends SqlUpdate { private class DeleteUserAuthorities extends SqlUpdate {
public DeleteUserAuthorities(DataSource ds) { public DeleteUserAuthorities(DataSource ds) {
super(ds, deleteUserAuthoritiesSql); super(ds, deleteUserAuthoritiesSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -450,7 +450,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class UpdateUser extends SqlUpdate { private class UpdateUser extends SqlUpdate {
public UpdateUser(DataSource ds) { public UpdateUser(DataSource ds) {
super(ds, updateUserSql); super(ds, updateUserSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -460,7 +460,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class ChangePassword extends SqlUpdate { private class ChangePassword extends SqlUpdate {
public ChangePassword(DataSource ds) { public ChangePassword(DataSource ds) {
super(ds, changePasswordSql); super(ds, changePasswordSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -470,7 +470,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
protected class UserExistsQuery extends MappingSqlQuery { private class UserExistsQuery extends MappingSqlQuery {
public UserExistsQuery(DataSource ds) { public UserExistsQuery(DataSource ds) {
super(ds, userExistsSql); super(ds, userExistsSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -482,7 +482,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class AllGroupsQuery extends MappingSqlQuery { private class AllGroupsQuery extends MappingSqlQuery {
public AllGroupsQuery(DataSource ds) { public AllGroupsQuery(DataSource ds) {
super(ds, findAllGroupsSql); super(ds, findAllGroupsSql);
compile(); compile();
@ -493,7 +493,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class GroupMembersQuery extends MappingSqlQuery { private class GroupMembersQuery extends MappingSqlQuery {
public GroupMembersQuery(DataSource ds) { public GroupMembersQuery(DataSource ds) {
super(ds, findUsersInGroupSql); super(ds, findUsersInGroupSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -505,7 +505,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class InsertGroup extends SqlUpdate { private class InsertGroup extends SqlUpdate {
public InsertGroup(DataSource ds) { public InsertGroup(DataSource ds) {
super(ds, insertGroupSql); super(ds, insertGroupSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -525,7 +525,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class InsertGroupAuthority extends SqlUpdate { private class InsertGroupAuthority extends SqlUpdate {
public InsertGroupAuthority(DataSource ds) { public InsertGroupAuthority(DataSource ds) {
super(ds, insertGroupAuthoritySql); super(ds, insertGroupAuthoritySql);
declareParameter(new SqlParameter(Types.INTEGER)); declareParameter(new SqlParameter(Types.INTEGER));
@ -542,7 +542,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class DeleteGroupMembers extends SqlUpdate { private class DeleteGroupMembers extends SqlUpdate {
public DeleteGroupMembers(DataSource ds) { public DeleteGroupMembers(DataSource ds) {
super(ds, deleteGroupMembersSql); super(ds, deleteGroupMembersSql);
declareParameter(new SqlParameter(Types.INTEGER)); declareParameter(new SqlParameter(Types.INTEGER));
@ -558,7 +558,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class RenameGroup extends SqlUpdate { private class RenameGroup extends SqlUpdate {
public RenameGroup(DataSource ds) { public RenameGroup(DataSource ds) {
super(ds, renameGroupSql); super(ds, renameGroupSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));
@ -585,7 +585,7 @@ public class JdbcUserDetailsManager extends JdbcDaoImpl implements UserDetailsMa
} }
} }
protected class GroupAuthoritiesByGroupNameMapping extends MappingSqlQuery { private class GroupAuthoritiesByGroupNameMapping extends MappingSqlQuery {
protected GroupAuthoritiesByGroupNameMapping(DataSource ds) { protected GroupAuthoritiesByGroupNameMapping(DataSource ds) {
super(ds, groupAuthoritiesSql); super(ds, groupAuthoritiesSql);
declareParameter(new SqlParameter(Types.VARCHAR)); declareParameter(new SqlParameter(Types.VARCHAR));