r2158 - trunk/wao-web/src/main/java/fr/ifremer/wao/web
Author: bleny Date: 2014-07-21 10:58:50 +0200 (Mon, 21 Jul 2014) New Revision: 2158 Url: http://forge.codelutin.com/projects/wao/repository/revisions/2158 Log: fixes #5391 do NOT create service context before returning redirect-to-login (finally clause not called) Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoInterceptor.java Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoInterceptor.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoInterceptor.java 2014-07-16 15:32:29 UTC (rev 2157) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoInterceptor.java 2014-07-21 08:58:50 UTC (rev 2158) @@ -65,95 +65,101 @@ WaoActionSupport waoAction = (WaoActionSupport) action; - Locale locale = waoAction.getLocale(); - - WaoServiceContext serviceContext = newServiceContext(invocation, locale); - WaoSession waoSession = getWaoSession(invocation); if (waoSession.getAuthenticatedWaoUser() == null && ! ACTIONS_ACCESSIBLE_WITHOUT_LOGIN.contains(waoAction.getClass())) { return "redirect-to-login"; - } + } else { - if (CollectionUtils.isNotEmpty(waoSession.getMessages())) { + if (CollectionUtils.isNotEmpty(waoSession.getMessages())) { - for (String message : waoSession.getMessages()) { + for (String message : waoSession.getMessages()) { - waoAction.addActionMessage(message); + waoAction.addActionMessage(message); + } + + waoSession.getMessages().clear(); + } - waoSession.getMessages().clear(); + if (CollectionUtils.isNotEmpty(waoSession.getErrorMessages())) { - } + for (String message : waoSession.getErrorMessages()) { - if (CollectionUtils.isNotEmpty(waoSession.getErrorMessages())) { + waoAction.addActionError(message); - for (String message : waoSession.getErrorMessages()) { + } - waoAction.addActionError(message); + waoSession.getErrorMessages().clear(); } - waoSession.getErrorMessages().clear(); + Set<PropertyDescriptor> descriptors = + BeanUtil.getDescriptors( + action.getClass(), + BeanUtil.IS_WRITE_DESCRIPTOR); - } + Locale locale = waoAction.getLocale(); - Set<PropertyDescriptor> descriptors = - BeanUtil.getDescriptors( - action.getClass(), - BeanUtil.IS_WRITE_DESCRIPTOR); + WaoServiceContext serviceContext = null; - for (PropertyDescriptor propertyDescriptor : descriptors) { + try { - Class<?> propertyType = propertyDescriptor.getPropertyType(); + serviceContext = newServiceContext(invocation, locale); - Object toInject = null; + for (PropertyDescriptor propertyDescriptor : descriptors) { - if (WaoService.class.isAssignableFrom(propertyType)) { + Class<?> propertyType = propertyDescriptor.getPropertyType(); - Class<? extends WaoService> serviceClass = - (Class<? extends WaoService>) propertyType; + Object toInject = null; - toInject = serviceContext.newService(serviceClass); + if (WaoService.class.isAssignableFrom(propertyType)) { - } else if (WaoSession.class.isAssignableFrom(propertyType)) { + Class<? extends WaoService> serviceClass = + (Class<? extends WaoService>) propertyType; - toInject = waoSession; + toInject = serviceContext.newService(serviceClass); - } else if (WaoApplicationConfig.class.isAssignableFrom(propertyType)) { + } else if (WaoSession.class.isAssignableFrom(propertyType)) { - toInject = getWaoApplicationContext(invocation).getApplicationConfig(); + toInject = waoSession; - } + } else if (WaoApplicationConfig.class.isAssignableFrom(propertyType)) { - if (toInject != null) { + toInject = getWaoApplicationContext(invocation).getApplicationConfig(); - if (log.isTraceEnabled()) { - log.trace("injecting " + toInject + " in action " + action); - } + } - propertyDescriptor.getWriteMethod().invoke(action, toInject); + if (toInject != null) { - } - } + if (log.isTraceEnabled()) { + log.trace("injecting " + toInject + " in action " + action); + } - try { + propertyDescriptor.getWriteMethod().invoke(action, toInject); - return invocation.invoke(); + } + } - } finally { + return invocation.invoke(); - serviceContext.getPersistenceContext().rollback(); + } finally { - serviceContext.getPersistenceContext().close(); + // TODO brendan 21/07/14 use try with resources + if (serviceContext != null) { + serviceContext.getPersistenceContext().close(); + } + } + } } else { + // access to a static data (css, image...) just process return invocation.invoke(); }
participants (1)
-
bleny@users.forge.codelutin.com