diff --git a/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java b/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java index 3d3557f80..24e5bb48f 100644 --- a/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java +++ b/src/com/rjconsultores/ventaboletos/auditoria/interceptor/AuditInterceptor.java @@ -65,37 +65,44 @@ public class AuditInterceptor extends EmptyInterceptor { private boolean getAuditModuleService() { - if (!AuditManager.getINSTANCE().getCheckModuleAudit()) { - return AuditManager.getINSTANCE().getCurrentService() != null ? true : false; - } + Session session = null; + try { + if (!AuditManager.getINSTANCE().getCheckModuleAudit()) { + return AuditManager.getINSTANCE().getCurrentService() != null ? true : false; + } - AuditService auditService = null; + AuditService auditService = null; - SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); - Session session = sessionFactory.openSession(); + SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); + session = sessionFactory.openSession(); - Criteria criteriaFuncionSistema = session.createCriteria(FuncionSistema.class); - criteriaFuncionSistema.add(Restrictions.eq("descruta", AuditManager.getINSTANCE().getCurrentActionService())); - FuncionSistema funcionSistema = (FuncionSistema) criteriaFuncionSistema.uniqueResult(); + Criteria criteriaFuncionSistema = session.createCriteria(FuncionSistema.class); + criteriaFuncionSistema.add(Restrictions.eq("descruta", AuditManager.getINSTANCE().getCurrentActionService())); + FuncionSistema funcionSistema = (FuncionSistema) criteriaFuncionSistema.uniqueResult(); + + if (funcionSistema == null) { + Log.info("Função sistema " + funcionSistema + " não encontrada na base de dados."); + AuditManager.getINSTANCE().setCurrentService(auditService); + return false; + } + + Criteria criteriaService = session.createCriteria(AuditService.class); + criteriaService.add(Restrictions.eq("funcionSistema", funcionSistema)); + auditService = (AuditService) criteriaService.uniqueResult(); + + if (auditService == null) { + return false; + } - if (funcionSistema == null) { - Log.info("Função sistema " + funcionSistema + " não encontrada na base de dados."); AuditManager.getINSTANCE().setCurrentService(auditService); - return false; + AuditManager.getINSTANCE().setCheckModuleAudit(Boolean.FALSE); + + return true; + + } finally { + if (session != null) + session.close(); } - - Criteria criteriaService = session.createCriteria(AuditService.class); - criteriaService.add(Restrictions.eq("funcionSistema", funcionSistema)); - auditService = (AuditService) criteriaService.uniqueResult(); - - if (auditService == null) { - return false; - } - - AuditManager.getINSTANCE().setCurrentService(auditService); - AuditManager.getINSTANCE().setCheckModuleAudit(Boolean.FALSE); - - return true; } private void genAudit(Object entity, EnumAuditAction action) { @@ -103,6 +110,8 @@ public class AuditInterceptor extends EmptyInterceptor { return; } + Session session = null; + try { /** * Ignorado caso a entidade for de auditoria e se não for encontrado o módulo no banco @@ -130,7 +139,7 @@ public class AuditInterceptor extends EmptyInterceptor { audit.setUsuario(UsuarioLogado.getUsuarioLogado()); SessionFactory sessionFactory = DBUtil.getInstance().getSessionFactory(); - Session session = sessionFactory.openSession(); + session = sessionFactory.openSession(); session.persist(audit); session.flush(); @@ -140,6 +149,9 @@ public class AuditInterceptor extends EmptyInterceptor { } catch (Exception exception) { log.error(exception.getStackTrace()); + } finally { + if (session != null) + session.close(); } } }