@Override
public void valueUnbound(HttpSessionBindingEvent event) {
try {
UserSessionCounterRepository userSessionCounterRepository = InjectHelper.getInstance(UserSessionCounterRepository.class);
WorkQueueRepository workQueueRepository = InjectHelper.getInstance(WorkQueueRepository.class);
AuditService auditService = InjectHelper.getInstance(AuditService.class);
int sessionCount = userSessionCounterRepository.deleteSession(userId, event.getSession().getId());
if (sessionCount < 1) {
UserStatus status = UserStatus.OFFLINE;
LOGGER.info("setting userId %s status to %s", userId, status);
UserRepository userRepository = InjectHelper.getInstance(UserRepository.class);
User user = userRepository.setStatus(userId, status);
workQueueRepository.pushUserStatusChange(user, status);
auditService.auditLogout(userId);
}
workQueueRepository.pushSessionExpiration(userId, event.getSession().getId());
} catch (Exception ex) {
LOGGER.error("exception while unbinding user session for userId:%s", userId, ex);
}
}
}