Hi,
When using dynamic attributes within browse screens, all works fine until the user wants to save a presentation that has a grouping on such a dynamic attribute.
Note that the grouping itself works fine, only when saving the presentation for reuse later on, things go wrong:
08:57:33.196 ERROR com.haulmont.cuba.web.log.AppLog - Exception in com.haulmont.cuba.web.toolkit.ui.CubaButton:
com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method click in com.vaadin.shared.ui.button.ButtonServerRpc
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:160)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:300)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:191)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
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)
Caused by: java.lang.reflect.InvocationTargetException: null
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 com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158)
... 38 common frames omitted
Caused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method buttonClick in com.haulmont.cuba.web.gui.components.presentations.PresentationEditor$$Lambda$314/818226350 failed.
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:530)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037)
at com.vaadin.ui.Button.fireClick(Button.java:377)
at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:54)
at com.vaadin.ui.Button$1.click(Button.java:54)
... 43 common frames omitted
Caused by: com.vaadin.event.ListenerMethod$MethodException: Invocation of method windowClose in com.haulmont.cuba.web.gui.components.presentations.PresentationEditor$$Lambda$316/1612917445 failed.
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:530)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037)
at com.vaadin.ui.Window.fireClose(Window.java:448)
at com.vaadin.ui.UI.removeWindow(UI.java:578)
at com.vaadin.ui.Window.close(Window.java:260)
at com.haulmont.cuba.web.toolkit.ui.CubaWindow.close(CubaWindow.java:194)
at com.haulmont.cuba.web.gui.components.presentations.PresentationEditor.lambda$initLayout$61446b05$1(PresentationEditor.java:124)
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 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
... 49 common frames omitted
Caused by: java.lang.NullPointerException: null
at com.haulmont.cuba.gui.data.impl.GroupDelegate.getValueByProperty(GroupDelegate.java:275)
at com.haulmont.cuba.gui.data.impl.GroupDelegate.groupItems(GroupDelegate.java:134)
at com.haulmont.cuba.gui.data.impl.GroupDelegate.doGroup(GroupDelegate.java:120)
at com.haulmont.cuba.gui.data.impl.GroupDelegate.groupBy(GroupDelegate.java:77)
at com.haulmont.cuba.gui.data.impl.GroupDatasourceImpl.groupBy(GroupDatasourceImpl.java:41)
at com.haulmont.cuba.web.gui.components.WebGroupTable$GroupTableDsWrapper.doGroup(WebGroupTable.java:405)
at com.haulmont.cuba.web.gui.components.WebGroupTable$GroupTableDsWrapper.groupBy(WebGroupTable.java:399)
at com.haulmont.cuba.web.toolkit.data.util.GroupTableContainerWrapper.groupBy(GroupTableContainerWrapper.java:47)
at com.haulmont.cuba.web.toolkit.ui.CubaGroupTable.groupBy(CubaGroupTable.java:417)
at com.haulmont.cuba.web.gui.components.WebGroupTable$1.groupBy(WebGroupTable.java:85)
at com.haulmont.cuba.web.gui.components.WebGroupTable.groupBy(WebGroupTable.java:191)
at com.haulmont.cuba.web.gui.components.WebGroupTable.applyColumnSettings(WebGroupTable.java:151)
at com.haulmont.cuba.web.gui.components.WebAbstractTable.applySettings(WebAbstractTable.java:1415)
at com.haulmont.cuba.web.gui.components.WebAbstractTable.applyPresentation(WebAbstractTable.java:2616)
at com.haulmont.cuba.web.gui.components.WebAbstractTable.applyPresentation(WebAbstractTable.java:2594)
at com.haulmont.cuba.web.gui.components.presentations.PresentationEditor.lambda$commit$23fb4817$1(PresentationEditor.java:195)
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 com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
... 62 common frames omitted
08:57:33.218 ERROR com.haulmont.cuba.web.log.AppLog - Exception:
java.lang.RuntimeException: Push failed
at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:171)
at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:146)
at com.vaadin.ui.UI.push(UI.java:1562)
at com.vaadin.server.VaadinSession.unlock(VaadinSession.java:1002)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:43)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:300)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:191)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
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)
Caused by: java.lang.NullPointerException: null
at com.vaadin.ui.Table.findNumRowsToPaint(Table.java:3826)
at com.vaadin.ui.Table.doPaintContent(Table.java:3324)
at com.vaadin.ui.Table.paintContent(Table.java:3310)
at com.haulmont.cuba.web.toolkit.ui.CubaTable.paintContent(CubaTable.java:828)
at com.haulmont.cuba.web.toolkit.ui.CubaGroupTable.paintContent(CubaGroupTable.java:68)
at com.vaadin.server.LegacyPaint.paint(LegacyPaint.java:65)
at com.vaadin.server.communication.LegacyUidlWriter.write(LegacyUidlWriter.java:82)
at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:131)
at com.vaadin.server.communication.AtmospherePushConnection.push(AtmospherePushConnection.java:168)
... 36 common frames omitted
The user is then logged out. After logging in once more, the presentation seems to be saved but selecting it will cause the error to appear once more.
The presentations’ content (in XML) is shown below:
<?xml version="1.0" encoding="UTF-8"?>
<presentation textSelection="false"><columns><columns id="+EngineeringtechEngineer" visible="true"/><columns id="_actions" width="175" visible="true"/><columns id="name" width="400" visible="true"/><columns id="description" visible="false"/><columns id="owner" visible="true"/><columns id="availability" visible="false"/><columns id="confidentiality" visible="false"/><columns id="integrity" visible="false"/><columns id="status" visible="true"/><columns id="sysType" visible="true"/><columns id="inUseSince" visible="false"/><columns id="department" visible="false"/></columns><groupProperties><property id="+EngineeringtechEngineer"/></groupProperties></presentation>
This is an example but is consistent over different entity types.
I do consider this a bug of the platform, correct?