Skip to content

Commit

Permalink
Add session metadata as batch
Browse files Browse the repository at this point in the history
  • Loading branch information
pamodaaw committed Jul 23, 2019
1 parent dfd01d8 commit 239fd42
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,15 @@ public UserSession getSession(String sessionId) throws SessionManagementServerEx
switch (key) {
case SessionMgtConstants.USER_AGENT:
userSession.setUserAgent(value);
break;
case SessionMgtConstants.IP_ADDRESS:
userSession.setIp(value);
break;
case SessionMgtConstants.LAST_ACCESS_TIME:
userSession.setLastAccessTime(value);
break;
case SessionMgtConstants.LOGIN_TIME:
userSession.setLoginTime(value);
default:
break;
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -593,11 +593,12 @@ private void storeSessionMetaData(String sessionId, HttpServletRequest request)
String ip = request.getRemoteAddr();
String time = Long.toString(System.currentTimeMillis());

// TODO: 7/17/19 Do session meta data storing as a batch query.
UserSessionStore.getInstance().storeSessionMetaData(sessionId, SessionMgtConstants.USER_AGENT, userAgent);
UserSessionStore.getInstance().storeSessionMetaData(sessionId, SessionMgtConstants.IP_ADDRESS, ip);
UserSessionStore.getInstance().storeSessionMetaData(sessionId, SessionMgtConstants.LOGIN_TIME, time);
UserSessionStore.getInstance().storeSessionMetaData(sessionId, SessionMgtConstants.LAST_ACCESS_TIME, time);
Map<String, String> metaDataMap = new HashMap<>();
metaDataMap.put(SessionMgtConstants.USER_AGENT, userAgent);
metaDataMap.put(SessionMgtConstants.IP_ADDRESS, ip);
metaDataMap.put(SessionMgtConstants.LOGIN_TIME, time);
metaDataMap.put(SessionMgtConstants.LAST_ACCESS_TIME, time);
UserSessionStore.getInstance().storeSessionMetaData(sessionId, metaDataMap);
}

private String getApplicationTenantDomain(AuthenticationContext context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
Expand Down Expand Up @@ -557,22 +558,26 @@ public boolean isExistingAppSession(String sessionId, String subject, int appID,
}

/**
* Method to store session meta data.
* Method to store session meta data as a batch
*
* @param sessionId id of the authenticated session
* @param metaData map of metadata type and value of the session
* @throws UserSessionException while storing session meta data
*/
public void storeSessionMetaData(String sessionId, String propertyType, String value) throws UserSessionException {
public void storeSessionMetaData(String sessionId, Map<String, String> metaData) throws UserSessionException {

JdbcTemplate jdbcTemplate = JdbcUtils.getNewTemplate();
try {
jdbcTemplate.executeUpdate(SQLQueries.SQL_INSERT_SESSION_META_DATA, (preparedStatement -> {
preparedStatement.setString(1, sessionId);
preparedStatement.setString(2, propertyType);
preparedStatement.setString(3, value);
}));
jdbcTemplate.executeBatchInsert(SQLQueries.SQL_INSERT_SESSION_META_DATA, (preparedStatement -> {
for (Map.Entry<String, String> entry : metaData.entrySet()) {
preparedStatement.setString(1, sessionId);
preparedStatement.setString(2, entry.getKey());
preparedStatement.setString(3, entry.getValue());
preparedStatement.addBatch();
}
}), sessionId);
} catch (DataAccessException e) {
throw new UserSessionException("Error while storing " + propertyType + " of session:" + sessionId +
throw new UserSessionException("Error while storing metadata of session:" + sessionId +
" in table " + IDN_AUTH_SESSION_META_DATA_TABLE + ".", e);
}
}
Expand Down

0 comments on commit 239fd42

Please sign in to comment.