NullPointerException on closing a screen with data grid

In case of uninitialized column settings the primitive boolean comparison with the Boolean object return value causes a NullPointerException on auto unboxing.

module: io.jmix.ui:jmix-ui:1.1.0
class: io.jmix.ui.settings.component.binder.AbstractDataGridSettingsBinder:292
stack trace (excerpt):

java.lang.NullPointerException
	at io.jmix.ui.settings.component.binder.AbstractDataGridSettingsBinder.isCommonDataGridSettingsChanged(AbstractDataGridSettingsBinder.java:292)
	at io.jmix.ui.settings.component.binder.AbstractDataGridSettingsBinder.saveSettings(AbstractDataGridSettingsBinder.java:123)
	at io.jmix.ui.settings.component.binder.AbstractDataGridSettingsBinder.saveSettings(AbstractDataGridSettingsBinder.java:41)
	at io.jmix.uidata.settings.ScreenSettingsManagerImpl.saveSettings(ScreenSettingsManagerImpl.java:113)
	at io.jmix.ui.settings.facet.ScreenSettingsFacetImpl.saveScreenSettings(ScreenSettingsFacetImpl.java:318)
	at io.jmix.ui.settings.facet.ScreenSettingsFacetImpl.saveSettings(ScreenSettingsFacetImpl.java:111)
	at io.jmix.ui.settings.facet.ScreenSettingsFacetImpl.onAfterDetachEvent(ScreenSettingsFacetImpl.java:300)
	at io.jmix.core.common.event.EventHub.publish(EventHub.java:170)
	at io.jmix.ui.screen.Screen.fireEvent(Screen.java:124)
	at io.jmix.ui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58)
	at io.jmix.ui.sys.ScreensImpl.fireScreenAfterDetachEvent(ScreensImpl.java:1371)
	at io.jmix.ui.sys.ScreensImpl.remove(ScreensImpl.java:543)
	at io.jmix.ui.screen.Screen.close(Screen.java:327)
	at io.jmix.ui.sys.ScreensImpl$TabCloseTask.run(ScreensImpl.java:1344)
	at io.jmix.ui.sys.ScreensImpl.handleTabWindowClose(ScreensImpl.java:1322)
	at io.jmix.ui.widget.JmixMainTabSheet.lambda$new$f77d23a5$1(JmixMainTabSheet.java:129)
	at com.vaadin.ui.TabSheet$TabsheetServerRpcImpl.closeTab(TabSheet.java:100)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115)
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:442)
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:407)
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:275)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:83)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1636)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:465)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)

Hello!

Thank you for reporting the problem! The fix will be available in the next bug fix release.

See issue: Haulmont/jmix-ui#706