Author: sletellier Date: 2010-05-20 17:12:39 +0200 (Thu, 20 May 2010) New Revision: 1968 Url: http://nuiton.org/repositories/revision/topia/1968 Log: Add finally block to close transaction Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java Modified: trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java =================================================================== --- trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java 2010-05-20 12:45:07 UTC (rev 1967) +++ trunk/topia-service-security/src/main/java/org/nuiton/topia/taas/jaas/TaasLoginModule.java 2010-05-20 15:12:39 UTC (rev 1968) @@ -54,6 +54,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.TopiaException; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaSecurityDAOHelper; import org.nuiton.topia.taas.TaasService; @@ -134,9 +135,10 @@ String hashed = TaasUtil.hash(password); //Vérification du login/pass et récupération des Principals + TopiaContext transaction = null; try { TopiaContext rootContext = taasService.getRootContextNoSecure(); - TopiaContext transaction = rootContext.beginTransaction(); + transaction = rootContext.beginTransaction(); TaasUserDAO userDAO = TopiaSecurityDAOHelper.getTaasUserDAO(transaction); TaasUser user = userDAO.findByLogin(login); @@ -148,7 +150,7 @@ user.setLastConnectionDate(new Date()); int numberOfConnection = user.getNumberOfConnection(); user.setNumberOfConnection(numberOfConnection + 1); - userDAO.update(user); + user.update(); // Récupération des principals principals = new HashSet<TaasPrincipalWrapper>(); @@ -163,14 +165,20 @@ privateCredential = null; throw new LoginException("Erreur lors de l'authentification " + login); } - - transaction.commitTransaction(); - transaction.closeContext(); } catch (Exception e) { - LoginException le = new LoginException("Erreur lors de l'authentification"); + LoginException le = new LoginException("Erreur lors de l'authentification" + login); le.initCause(e); log.error(e); throw le; + } finally { + if (transaction != null) { + try { + transaction.commitTransaction(); + transaction.closeContext(); + } catch (TopiaException e) { + throw new LoginException("Erreur lors de l'authentification " + login); + } + } } return true;