@Transactional public LoginInfo loginAttempt(final String username, final String password) { try { List<User> users = userDao.loginAttempt(username, password); LoginInfo loginInfo = new LoginInfo(); if (users.size() == 1) { loginInfo.setAuthorized(PasswordHash.validatePassword(password, users.get(0).getHash())); loginInfo.setUser(users.get(0)); return loginInfo; } else if (users.size() == 0) { return null; } else { throw new UserProcessingException("Duplicate entries were found in table 'users'"); } } catch (Throwable t) { LOGGER.warn("Exception occurred during login attempt, error: " + t); } return null; }