Author: echatellier Date: 2014-07-21 11:59:26 +0200 (Mon, 21 Jul 2014) New Revision: 431 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/431 Log: Fix close persistence context Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-07-21 09:04:55 UTC (rev 430) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-07-21 09:59:26 UTC (rev 431) @@ -69,63 +69,66 @@ if (action instanceof FaxToMailActionSupport) { - FaxToMailActionSupport faxToMailAction = (FaxToMailActionSupport) action; - - FaxToMailServiceContext serviceContext = newServiceContext(invocation); - - FaxToMailSession faxToMailSession = getFaxToMailSession(invocation); - populateUser(faxToMailSession, serviceContext); - - if (CollectionUtils.isNotEmpty(faxToMailSession.getMessages())) { - for (String message : faxToMailSession.getMessages()) { - faxToMailAction.addActionMessage(message); + FaxToMailServiceContext serviceContext = null; + try { + FaxToMailActionSupport faxToMailAction = (FaxToMailActionSupport) action; + + serviceContext = newServiceContext(invocation); + + FaxToMailSession faxToMailSession = getFaxToMailSession(invocation); + populateUser(faxToMailSession, serviceContext); + + if (CollectionUtils.isNotEmpty(faxToMailSession.getMessages())) { + for (String message : faxToMailSession.getMessages()) { + faxToMailAction.addActionMessage(message); + } + faxToMailSession.getMessages().clear(); } - faxToMailSession.getMessages().clear(); - } - - if (CollectionUtils.isNotEmpty(faxToMailSession.getErrorMessages())) { - for (String message : faxToMailSession.getErrorMessages()) { - faxToMailAction.addActionError(message); + + if (CollectionUtils.isNotEmpty(faxToMailSession.getErrorMessages())) { + for (String message : faxToMailSession.getErrorMessages()) { + faxToMailAction.addActionError(message); + } + faxToMailSession.getErrorMessages().clear(); } - faxToMailSession.getErrorMessages().clear(); - } - - Set<PropertyDescriptor> descriptors = - BeanUtil.getDescriptors( - action.getClass(), - BeanUtil.IS_WRITE_DESCRIPTOR); - - for (PropertyDescriptor propertyDescriptor : descriptors) { - - Class<?> propertyType = propertyDescriptor.getPropertyType(); - Object toInject = null; - - if (FaxToMailService.class.isAssignableFrom(propertyType)) { - Class<? extends FaxToMailService> serviceClass = - (Class<? extends FaxToMailService>) propertyType; - toInject = serviceContext.newService(serviceClass); - - } else if (FaxToMailSession.class.isAssignableFrom(propertyType)) { - toInject = faxToMailSession; - - } else if (FaxToMailConfiguration.class.isAssignableFrom(propertyType)) { - toInject = getFaxToMailApplicationContext(invocation).getApplicationConfig(); - } else if (FaxToMailApplicationContext.class.isAssignableFrom(propertyType)) { - toInject = getFaxToMailApplicationContext(invocation); - } - - if (toInject != null) { - if (log.isTraceEnabled()) { - log.trace("injecting " + toInject + " in action " + action); + + Set<PropertyDescriptor> descriptors = + BeanUtil.getDescriptors( + action.getClass(), + BeanUtil.IS_WRITE_DESCRIPTOR); + + for (PropertyDescriptor propertyDescriptor : descriptors) { + + Class<?> propertyType = propertyDescriptor.getPropertyType(); + Object toInject = null; + + if (FaxToMailService.class.isAssignableFrom(propertyType)) { + Class<? extends FaxToMailService> serviceClass = + (Class<? extends FaxToMailService>) propertyType; + toInject = serviceContext.newService(serviceClass); + + } else if (FaxToMailSession.class.isAssignableFrom(propertyType)) { + toInject = faxToMailSession; + + } else if (FaxToMailConfiguration.class.isAssignableFrom(propertyType)) { + toInject = getFaxToMailApplicationContext(invocation).getApplicationConfig(); + } else if (FaxToMailApplicationContext.class.isAssignableFrom(propertyType)) { + toInject = getFaxToMailApplicationContext(invocation); } - propertyDescriptor.getWriteMethod().invoke(action, toInject); + + if (toInject != null) { + if (log.isTraceEnabled()) { + log.trace("injecting " + toInject + " in action " + action); + } + propertyDescriptor.getWriteMethod().invoke(action, toInject); + } } - } - try { return invocation.invoke(); } finally { - serviceContext.getPersistenceContext().close(); + if (serviceContext != null) { + serviceContext.getPersistenceContext().close(); + } } } else {