Hi,
I have recently upgraded my project from platform version 1.7 to latest 7.2.13.
Since upgrading on certain screens where I do checks to see if someone is a super user like an admin I get NullPointerException come up.
> java.lang.NullPointerException: null
> at com.haulmont.timesheets.gui.util.SecurityAssistant.isSuperUser(SecurityAssistant.java:49) ~[app-gui-0.1-SNAPSHOT.jar:na]
> at com.haulmont.timesheets.gui.project.ProjectBrowse.onInit(ProjectBrowse.java:108) ~[app-gui-0.1-SNAPSHOT.jar:na]
> at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.gui.screen.Screen.fireEvent(Screen.java:128) ~[cuba-gui-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.gui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:60) ~[cuba-gui-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:262) ~[cuba-web-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:179) ~[cuba-web-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.gui.config.MenuItemCommands$ScreenCommand.run(MenuItemCommands.java:319) ~[cuba-gui-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.sys.MenuBuilder$MenuCommandExecutor.accept(MenuBuilder.java:256) ~[cuba-web-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.sys.MenuBuilder$MenuCommandExecutor.accept(MenuBuilder.java:241) ~[cuba-web-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.gui.components.mainwindow.WebAppMenu$MenuItemImpl.menuSelected(WebAppMenu.java:435) ~[cuba-web-7.2.13.jar:7.2.13]
> at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:225) ~[vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:611) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:457) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:400) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1578) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) [vaadin-server-8.9.2-19-cuba.jar:8.9.2-19-cuba]
> at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) [cuba-web-7.2.13.jar:7.2.13]
> at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) [cuba-web-7.2.13.jar:7.2.13]
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:na]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.27]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.27]
> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.27]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.27]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.27]
> at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) [spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
> at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74) [spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
> at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) [cuba-web-7.2.13.jar:7.2.13]
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.27]
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.27]
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.27]
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.27]
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [catalina.jar:9.0.27]
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.27]
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.27]
> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) [catalina.jar:9.0.27]
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.27]
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.27]
> at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.27]
> at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.27]
> at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-coyote.jar:9.0.27]
> at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579) [tomcat-coyote.jar:9.0.27]
> at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.27]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.27]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
My isSuperUser method is:
public boolean isSuperUser() {
User user = userSessionSource.getUserSession().getCurrentOrSubstitutedUser();
if (CollectionUtils.isEmpty(user.getUserRoles())) {
return true;
}
for (UserRole userRole : user.getUserRoles()) {
if (userRole.getRole().getType() == RoleType.SUPER) {
return true;
}
}
return false;
}
and I call this method here:
@Subscribe
protected void onInit(InitEvent event) {
if (securityAssistant.isSuperUser()) {
projectsDl.setQuery("select e from ts$Project e");
} else {
projectsDl.setParameter("user", userSession.getCurrentOrSubstitutedUser());
}
initTasksTable();
}
I have given the admin role access to all screens and all permissions on Entities.
Any help would be much appreciated.