NPE during attach in editable TreeTable

Hello,
I navigate through different views. One of them contains editable TreeTable (see screenshot):

serviceList = new TreeTable("Menage services for roles:"); serviceList.setTableFieldFactory(new DefaultFieldFactory(){ @Override public Field<?> createField(Container container, final Object itemId, final Object propertyId, Component uiContext) { CheckBox field = new CheckBox(Objects.toString(itemId)); field.addValueChangeListener(event -> { if (itemId instanceof ServiceDescriptor){ ServiceDescriptor service = (ServiceDescriptor) itemId; if (field.getValue() != null && field.getValue()) { field.addStyleName("blue"); }else{ field.removeStyleName("blue"); } }else{//itemId instanceof ServiceGroup for (Object service : serviceList.getContainerDataSource().getChildren(itemId)) { serviceList.getContainerProperty(service, propertyId).setValue(event.getProperty().getValue()); } } }); field.addValueChangeListener(event -> { if (systemChange){ return; } //some other staff }); return field; } }); serviceList.addValueChangeListener(event -> { Collection<?> value = (Collection<?>) event.getProperty().getValue(); for (Object itemId : serviceList.getItemIds()) { if (itemId instanceof ServiceDescriptor) { serviceList.getContainerProperty(itemId, "service").setValue(CollectionUtils.find(value, object -> { return ((ServiceDescriptor) object).getKodSlu() == ((ServiceDescriptor) itemId).getKodSlu(); }) != null); } } }); serviceList.setSizeFull(); Loading items to the tree table:

UI.getCurrent().access(() -> { HierarchicalContainer services = (HierarchicalContainer) serviceList.getContainerDataSource(); synchronized (systemChange) { try { systemChange = true; services.removeAllItems(); for (ServiceDescriptor service : loadData()) { ServiceGroup group = service.getServiceGroup(); if (!services.containsId(group)) { services.addItem(group); serviceList.setCollapsed(group, false); } services.addItem(service); services.setChildrenAllowed(service, false); services.setParent(service, group); } } catch (Exception e1) { error(e1); showDBError(e1); } finally { systemChange = false; } } }); And changing value (
roleList
is a table on the left on th screenshot):

roleList.addValueChangeListener(event -> { if (event.getProperty().getValue() == null || statements.getStatement(Role_Statements.SELECT_SERVICE_BY_ROLE) == null) { return; } try { statements.getStatement(Role_Statements.SELECT_SERVICE_BY_ROLE).setValue(RoleFields.ROLE, ((EnumValueDescriptor) event.getProperty().getValue()).getValue()); ResultSet data = statements.getStatement(Role_Statements.SELECT_SERVICE_BY_ROLE).executeQuery(); Collection<ServiceDescriptor> result = new ArrayList<>(); while (data.next()) { ServiceDescriptor service = FPSL_Statements.createServiceFromResultSet(data); result.add(service); } synchronized (systemChange) { systemChange = true; serviceList.setValue(result); systemChange = false; } } catch (Exception e) { error(e); showDBError(e); }; }); Sometimes during navigation between views I get following exception:

com.vaadin.data.Buffered$SourceException at com.vaadin.ui.AbstractField.updateValueFromDataSource(AbstractField.java:1649) at com.vaadin.ui.AbstractField.attach(AbstractField.java:1374) at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:590) at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:621) at com.vaadin.ui.AbstractField.attach(AbstractField.java:1367) at com.vaadin.ui.AbstractSelect.attach(AbstractSelect.java:1872) at com.vaadin.ui.Table.attach(Table.java:4248) at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:590) at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:621) at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:590) at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:621) at com.vaadin.server.AbstractClientConnector.attach(AbstractClientConnector.java:590) at com.vaadin.ui.AbstractComponent.attach(AbstractComponent.java:621) [b] at cz.pse.services.RolesView.attach(RolesView.java:99) at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:528) at com.vaadin.ui.AbstractSingleComponentContainer.setContent(AbstractSingleComponentContainer.java:149) at com.vaadin.ui.UI.setContent(UI.java:1276) at com.vaadin.navigator.Navigator$SingleComponentContainerViewDisplay.showView(Navigator.java:224) at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:575) at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:527) at cz.pse.services.ServicesView$7.menuSelected(ServicesView.java:457) [/b] at com.vaadin.ui.MenuBar.changeVariables(MenuBar.java:191) at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:486) at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:305) at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:184) at com.vaadin.server.communication.PushHandler$3.run(PushHandler.java:182) at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:261) at com.vaadin.server.communication.PushHandler.access$200(PushHandler.java:58) at com.vaadin.server.communication.PushHandler$1.onRequest(PushHandler.java:78) at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:205) at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:104) at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:154) at org.atmosphere.container.Tomcat7Servlet30SupportWithWebSocket.service(Tomcat7Servlet30SupportWithWebSocket.java:62) at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075) at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:570) at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:332) at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101) at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:327) at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:424) at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatchReader(DefaultWebSocketProcessor.java:794) at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:526) at org.atmosphere.container.TomcatWebSocketHandler.onTextData(TomcatWebSocketHandler.java:104) at org.apache.catalina.websocket.StreamInbound.doOnTextData(StreamInbound.java:187) at org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:135) at org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:83) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:587) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NullPointerException at com.vaadin.data.util.IndexedContainer$IndexedContainerProperty.getValue(IndexedContainer.java:901) at com.vaadin.ui.AbstractField.getDataSourceValue(AbstractField.java:305) at com.vaadin.ui.AbstractField.updateValueFromDataSource(AbstractField.java:1639) ... 49 more Does anybody have an idea why the excepion is araised and how to fix it?

My vaadin version is 7.4.8.

22901.png