← Back to team overview

dhis2-devs team mailing list archive

Re: NPE on opening messages in 2.25

 

This was due to a missing null-check when accessing the (nullable) feedback
recipient group. Fixed in 2.26-SNAP and backported to 2.25.

On Thu, Oct 13, 2016 at 4:52 PM, Stian Sandvold <stian@xxxxxxxxx> wrote:

> Have you set up feedback recipient groups?
> ——
> Stian Sandvold
> Software developer, DHIS 2
> University of Oslo
> http://www.dhis2.org
>
>
>
>
> On 13 Oct 2016, at 15:40, Jason Pickering <jason.p.pickering@xxxxxxxxx>
> wrote:
>
> When accessing messages from the dashboard, I get this error. Any ideas?
>
> Version:2.25Build revision:332e86dBuild date:2016-10-13 08:37
>
> * ERROR 2016-10-13 15:38:27,628 Error while executing action
> (ExceptionInterceptor.java [http-bio-127.0.0.1-8090-exec-18])
> java.lang.NullPointerException
> at org.hisp.dhis.configuration.DefaultConfigurationService.
> isUserInFeedbackRecipientUserGroup(DefaultConfigurationService.java:91)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
> (AopUtils.java:302)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.
> invokeJoinpoint(ReflectiveMethodInvocation.java:190)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:157)
> at org.springframework.transaction.interceptor.TransactionInterceptor$1.
> proceedWithInvocation(TransactionInterceptor.java:99)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> invokeWithinTransaction(TransactionAspectSupport.java:281)
> at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:96)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:208)
> at com.sun.proxy.$Proxy63.isUserInFeedbackRecipientUserGroup(Unknown
> Source)
> at org.hisp.dhis.message.DefaultMessageService.
> hasAccessToManageFeedbackMessages(DefaultMessageService.java:478)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
> (AopUtils.java:302)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.
> invokeJoinpoint(ReflectiveMethodInvocation.java:190)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:157)
> at org.springframework.transaction.interceptor.TransactionInterceptor$1.
> proceedWithInvocation(TransactionInterceptor.java:99)
> at org.springframework.transaction.interceptor.TransactionAspectSupport.
> invokeWithinTransaction(TransactionAspectSupport.java:281)
> at org.springframework.transaction.interceptor.
> TransactionInterceptor.invoke(TransactionInterceptor.java:96)
> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
> ReflectiveMethodInvocation.java:179)
> at org.springframework.aop.framework.JdkDynamicAopProxy.
> invoke(JdkDynamicAopProxy.java:208)
> at com.sun.proxy.$Proxy76.hasAccessToManageFeedbackMessages(Unknown
> Source)
> at org.hisp.dhis.dashboard.message.action.GetMessagesAction.execute(
> GetMessagesAction.java:113)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(
> NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:891)
> at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293)
> at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
> at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.
> callMethodWithDebugInfo(XWorkMethodAccessor.java:117)
> at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(
> XWorkMethodAccessor.java:108)
> at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369)
> at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
> at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
> at ognl.SimpleNode.getValue(SimpleNode.java:258)
> at ognl.Ognl.getValue(Ognl.java:494)
> at ognl.Ognl.getValue(Ognl.java:458)
> at com.opensymphony.xwork2.ognl.OgnlUtil$2.execute(OgnlUtil.java:309)
> at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(
> OgnlUtil.java:340)
> at com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:307)
> at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(
> DefaultActionInvocation.java:423)
> at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(
> DefaultActionInvocation.java:287)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:250)
> at org.hisp.dhis.webportal.interceptor.XWorkPortalUserInterceptor.
> intercept(XWorkPortalUserInterceptor.java:85)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.webportal.interceptor.XWorkPortalModuleInterceptor.
> intercept(XWorkPortalModuleInterceptor.java:91)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.webportal.interceptor.XWorkPortalMenuInterceptor.
> intercept(XWorkPortalMenuInterceptor.java:94)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.webportal.interceptor.XWorkPortalParamsInterceptor.
> intercept(XWorkPortalParamsInterceptor.java:150)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.interceptor.ContextInterceptor.intercept(
> ContextInterceptor.java:83)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.interceptor.UserSettingInterceptor.intercept(
> UserSettingInterceptor.java:81)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.security.intercept.LoginInterceptor.
> intercept(LoginInterceptor.java:85)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.security.intercept.XWorkSecurityInterceptor.intercept(
> XWorkSecurityInterceptor.java:116)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.interceptor.SystemSettingInterceptor.intercept(
> SystemSettingInterceptor.java:115)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.interceptor.I18nInterceptor.intercept(
> I18nInterceptor.java:139)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(
> ParametersInterceptor.java:229)
> at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(
> MethodFilterInterceptor.java:98)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.
> intercept(StaticParametersInterceptor.java:191)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.hisp.dhis.interceptor.ExceptionInterceptor.intercept(
> ExceptionInterceptor.java:113)
> at com.opensymphony.xwork2.DefaultActionInvocation.invoke(
> DefaultActionInvocation.java:244)
> at org.apache.struts2.impl.StrutsActionProxy.execute(
> StrutsActionProxy.java:54)
> at org.apache.struts2.dispatcher.Dispatcher.serviceAction(
> Dispatcher.java:564)
> at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(
> ExecuteOperations.java:81)
> at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.
> doFilter(StrutsPrepareAndExecuteFilter.java:99)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:241)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:208)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> at org.springframework.security.web.access.intercept.
> FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.access.ExceptionTranslationFilter.
> doFilter(ExceptionTranslationFilter.java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.session.SessionManagementFilter.
> doFilter(SessionManagementFilter.java:103)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.
> java:113)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.servletapi.
> SecurityContextHolderAwareRequestFilter.doFilter(
> SecurityContextHolderAwareRequestFilter.java:154)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.
> doFilter(RequestCacheAwareFilter.java:45)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.www.
> BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CorsFilter.doFilter(CorsFilter.java:91)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.
> AbstractAuthenticationProcessingFilter.doFilter(
> AbstractAuthenticationProcessingFilter.java:199)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.CustomAuthenticationFilter.doFilter(
> CustomAuthenticationFilter.java:64)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.oauth2.provider.authentication.
> OAuth2AuthenticationProcessingFilter.doFilter(
> OAuth2AuthenticationProcessingFilter.java:140)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.authentication.logout.
> LogoutFilter.doFilter(LogoutFilter.java:110)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.hisp.dhis.security.filter.AutomaticAccessFilter.doFilter(
> AutomaticAccessFilter.java:115)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.header.HeaderWriterFilter.
> doFilterInternal(HeaderWriterFilter.java:57)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.request.async.
> WebAsyncManagerIntegrationFilter.doFilterInternal(
> WebAsyncManagerIntegrationFilter.java:50)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.context.SecurityContextPersistenceFilt
> er.doFilter(SecurityContextPersistenceFilter.java:87)
> at org.springframework.security.web.FilterChainProxy$
> VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> at org.springframework.security.web.FilterChainProxy.doFilterInternal(
> FilterChainProxy.java:192)
> at org.springframework.security.web.FilterChainProxy.doFilter(
> FilterChainProxy.java:160)
> at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
> DelegatingFilterProxy.java:346)
> at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
> DelegatingFilterProxy.java:262)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:241)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:208)
> at org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.
> doFilterInternal(OpenSessionInViewFilter.java:151)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:241)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:208)
> at org.springframework.web.filter.CharacterEncodingFilter.
> doFilterInternal(CharacterEncodingFilter.java:121)
> at org.springframework.web.filter.OncePerRequestFilter.
> doFilter(OncePerRequestFilter.java:107)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:241)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:208)
> at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:221)
> at org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:122)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(
> AuthenticatorBase.java:505)
> at org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java:169)
> at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:103)
> at org.apache.catalina.valves.AccessLogValve.invoke(
> AccessLogValve.java:956)
> at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:116)
> at org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:436)
> at org.apache.coyote.http11.AbstractHttp11Processor.process(
> AbstractHttp11Processor.java:1078)
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.
> process(AbstractProtocol.java:625)
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.
> run(JIoEndpoint.java:316)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1142)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:617)
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> TaskThread.java:61)
> at java.lang.Thread.run(Thread.java:745)
>
>
> --
> Jason P. Pickering
> email: jason.p.pickering@xxxxxxxxx
> tel:+46764147049 <+46764147049>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help   : https://help.launchpad.net/ListHelp
>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help   : https://help.launchpad.net/ListHelp
>
>


-- 
Halvdan Hoem Grelland
Software developer, DHIS 2
University of Oslo
http://www.dhis2.org <https://www.dhis2.org/>

References