From 844074310814a077ad54be6638b79026d4a1eda4 Mon Sep 17 00:00:00 2001 From: Luke Taylor Date: Wed, 13 Jul 2011 23:28:41 +0100 Subject: [PATCH] Remove Sql query objects from JdbcTokenRepositoryImpl in favour of direct JdbcTemplate use. --- .../rememberme/JdbcTokenRepositoryImpl.java | 72 +++---------------- 1 file changed, 11 insertions(+), 61 deletions(-) diff --git a/web/src/main/java/org/springframework/security/web/authentication/rememberme/JdbcTokenRepositoryImpl.java b/web/src/main/java/org/springframework/security/web/authentication/rememberme/JdbcTokenRepositoryImpl.java index c6d1353130..238aaf3c9c 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/rememberme/JdbcTokenRepositoryImpl.java +++ b/web/src/main/java/org/springframework/security/web/authentication/rememberme/JdbcTokenRepositoryImpl.java @@ -2,6 +2,7 @@ package org.springframework.security.web.authentication.rememberme; import org.springframework.dao.DataAccessException; import org.springframework.dao.IncorrectResultSizeDataAccessException; +import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.SqlParameter; import org.springframework.jdbc.core.support.JdbcDaoSupport; import org.springframework.jdbc.object.MappingSqlQuery; @@ -11,7 +12,7 @@ import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; -import java.util.Date; +import java.util.*; /** * JDBC based persistent login token repository implementation. @@ -47,28 +48,19 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten private String removeUserTokensSql = DEF_REMOVE_USER_TOKENS_SQL; private boolean createTableOnStartup; - private MappingSqlQuery tokensBySeriesMapping; - private SqlUpdate insertToken; - private SqlUpdate updateToken; - private SqlUpdate removeUserTokens; - protected void initDao() { - tokensBySeriesMapping = new TokensBySeriesMapping(getDataSource()); - insertToken = new InsertToken(getDataSource()); - updateToken = new UpdateToken(getDataSource()); - removeUserTokens = new RemoveUserTokens(getDataSource()); - if (createTableOnStartup) { getJdbcTemplate().execute(CREATE_TABLE_SQL); } } public void createNewToken(PersistentRememberMeToken token) { - insertToken.update(token.getUsername(), token.getSeries(), token.getTokenValue(), token.getDate()); + getJdbcTemplate().update(insertTokenSql, token.getUsername(), token.getSeries(), + token.getTokenValue(), token.getDate()); } public void updateToken(String series, String tokenValue, Date lastUsed) { - updateToken.update(tokenValue, new Date(), series); + getJdbcTemplate().update(updateTokenSql, tokenValue, new Date(), series); } /** @@ -82,7 +74,11 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten */ public PersistentRememberMeToken getTokenForSeries(String seriesId) { try { - return tokensBySeriesMapping.findObject(seriesId); + return getJdbcTemplate().queryForObject(tokensBySeriesSql, new RowMapper() { + public PersistentRememberMeToken mapRow(ResultSet rs, int rowNum) throws SQLException { + return new PersistentRememberMeToken(rs.getString(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4)); + } + }, seriesId); } catch(IncorrectResultSizeDataAccessException moreThanOne) { logger.error("Querying token for series '" + seriesId + "' returned more than one value. Series" + " should be unique"); @@ -94,7 +90,7 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten } public void removeUserTokens(String username) { - removeUserTokens.update(username); + getJdbcTemplate().update(removeUserTokensSql, username); } /** @@ -106,50 +102,4 @@ public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements Persisten public void setCreateTableOnStartup(boolean createTableOnStartup) { this.createTableOnStartup = createTableOnStartup; } - - //~ Inner Classes ================================================================================================== - - private class TokensBySeriesMapping extends MappingSqlQuery { - protected TokensBySeriesMapping(DataSource ds) { - super(ds, tokensBySeriesSql); - declareParameter(new SqlParameter(Types.VARCHAR)); - compile(); - } - - protected PersistentRememberMeToken mapRow(ResultSet rs, int rowNum) throws SQLException { - return new PersistentRememberMeToken(rs.getString(1), rs.getString(2), rs.getString(3), rs.getTimestamp(4)); - } - } - - private class UpdateToken extends SqlUpdate { - - public UpdateToken(DataSource ds) { - super(ds, updateTokenSql); - setMaxRowsAffected(1); - declareParameter(new SqlParameter(Types.VARCHAR)); - declareParameter(new SqlParameter(Types.TIMESTAMP)); - declareParameter(new SqlParameter(Types.VARCHAR)); - compile(); - } - } - - private class InsertToken extends SqlUpdate { - - public InsertToken(DataSource ds) { - super(ds, insertTokenSql); - declareParameter(new SqlParameter(Types.VARCHAR)); - declareParameter(new SqlParameter(Types.VARCHAR)); - declareParameter(new SqlParameter(Types.VARCHAR)); - declareParameter(new SqlParameter(Types.TIMESTAMP)); - compile(); - } - } - - private class RemoveUserTokens extends SqlUpdate { - public RemoveUserTokens(DataSource ds) { - super(ds, removeUserTokensSql); - declareParameter(new SqlParameter(Types.VARCHAR)); - compile(); - } - } }