[MGNLUI-7049] Composite field with checkbox group breaks form Created: 25/Feb/22  Updated: 20/Jul/22  Resolved: 01/Apr/22

Status: Closed
Project: Magnolia UI
Component/s: None
Affects Version/s: 6.2.17
Fix Version/s: None

Type: Bug Priority: Neutral
Reporter: Eduard Lehel Reichenberger Assignee: Dominik Maslanka
Resolution: Won't Fix Votes: 0
Labels: nucleus
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Cloners
is cloned by MAGNOLIA-8364 DOC: checkbox group field breaks pag... Closed
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Epic Link: Nucleus Quality Maintenance
Team: Nucleus

 Description   

Steps to reproduce

  1.  Create a dialog/content app detail page and create a composite field with checkbox group field
compField:
  $type: compositeField
  label: ""
  itemProvider:
    $type: jcrChildNodeProvider
  properties:
    checkboxGroup1:
      $type: checkBoxGroupField
      defaultValue: # an alternative way of setting multiple default values
        - Mahler
        - Bach
      datasource:
        $type: optionListDatasource
        options:
          - name: Vivaldi
            value: Vivaldi
          - name: Bach
            value: Bach
          - name: Bartok
            value: Bartok
          - name: Stravinsky
            value: Stravinsky
          - name: Mahler
            value: Mahler
    checkboxGroup2:
      $type: checkBoxGroupField
      defaultValue: # an alternative way of setting multiple default values
        - Mahler
        - Bach
      datasource:
        $type: optionListDatasource
        options:
          - name: Vivaldi
            value: Vivaldi
          - name: Bach
            value: Bach
          - name: Bartok
            value: Bartok
          - name: Stravinsky
            value: Stravinsky
          - name: Mahler
            value: Mahler 
  1. Open the form, select value Vivaldi from any of the groups.
  2. Save the item
  3. Edit the form yaml and remove the option Vivaldi
  4. You cannot edit the item anymore unless you remove the node for the composite field from JCR

.. Logs, screenshots, gifs...

Expected results

The provider should ignore values that do not exist in the field anymore and allow to edit the item and select new fields and overwrite old/missing values.

Actual results

NPE is thrown when opening the form:

java.lang.NullPointerException: null
    at java.util.Objects.requireNonNull(Objects.java:221) ~[?:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) ~[?:?]
    at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) ~[?:?]
    at com.vaadin.ui.AbstractMultiSelect.setValue(AbstractMultiSelect.java:214) ~[vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.ui.AbstractMultiSelect.setValue(AbstractMultiSelect.java:61) ~[vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.data.Binder$BindingImpl.convertAndSetFieldValue(Binder.java:1350) ~[vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.data.Binder$BindingImpl.initFieldValue(Binder.java:1259) ~[vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.data.Binder$BindingImpl.access$100(Binder.java:1091) ~[vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.data.Binder.lambda$readBean$2(Binder.java:1902) ~[vaadin-server-8.14.1.jar:8.14.1]
    at java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?]
    at com.vaadin.data.Binder.readBean(Binder.java:1895) ~[vaadin-server-8.14.1.jar:8.14.1]
    at info.magnolia.ui.editor.FormPresenter.bind(FormPresenter.java:125) ~[magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.editor.FormView.populate(FormView.java:147) ~[magnolia-ui-framework-6.2.15.jar:?]
    at java.util.Optional.ifPresent(Optional.java:183) ~[?:?]
    at info.magnolia.ui.editor.FormView.lambda$null$6(FormView.java:150) ~[magnolia-ui-framework-6.2.15.jar:?]
    at java.util.HashMap.forEach(HashMap.java:1336) ~[?:?]
    at info.magnolia.ui.editor.FormView.lambda$populate$7(FormView.java:150) ~[magnolia-ui-framework-6.2.15.jar:?]
    at java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?]
    at info.magnolia.ui.editor.FormView.populate(FormView.java:148) ~[magnolia-ui-framework-6.2.15.jar:?]
    at java.util.Optional.ifPresent(Optional.java:183) ~[?:?]
    at info.magnolia.ui.contentapp.detail.ContentDetailSubApp.start(ContentDetailSubApp.java:158) ~[magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.contentapp.detail.ContentDetailSubApp.start(ContentDetailSubApp.java:79) ~[magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.AppInstanceControllerImpl.startSubApp(AppInstanceControllerImpl.java:423) ~[magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.AppInstanceControllerImpl.openSubApp(AppInstanceControllerImpl.java:369) ~[magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.BaseApp.lambda$openSubApp$7(BaseApp.java:138) ~[magnolia-ui-framework-6.2.15.jar:?]
    at java.util.Optional.ifPresent(Optional.java:183) [?:?]
    at info.magnolia.util.OptionalConsumer.ifPresent(OptionalConsumer.java:56) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.BaseApp.openSubApp(BaseApp.java:138) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.BaseApp.start(BaseApp.java:111) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.AppInstanceControllerImpl.start(AppInstanceControllerImpl.java:220) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.AppControllerImpl.doStartIfNotAlreadyRunning(AppControllerImpl.java:276) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.framework.app.AppControllerImpl.onLocationChanged(AppControllerImpl.java:408) [magnolia-ui-framework-6.2.15.jar:?]
    at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:64) [magnolia-ui-api-6.2.15.jar:?]
    at info.magnolia.ui.api.location.LocationChangedEvent.dispatch(LocationChangedEvent.java:42) [magnolia-ui-api-6.2.15.jar:?]
    at info.magnolia.event.SimpleEventBus.fireEvent(SimpleEventBus.java:75) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.event.ResettableEventBus.fireEvent(ResettableEventBus.java:70) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.ui.api.location.LocationController.goToWithoutChecks(LocationController.java:103) [magnolia-ui-api-6.2.15.jar:?]
    at info.magnolia.ui.api.location.LocationController.goTo(LocationController.java:97) [magnolia-ui-api-6.2.15.jar:?]
    at info.magnolia.admincentral.ResurfaceUIPresenter.checkAndNavigate(ResurfaceUIPresenter.java:152) [magnolia-admincentral-6.2.15.jar:?]
    at info.magnolia.admincentral.ResurfaceUIPresenter.start(ResurfaceUIPresenter.java:113) [magnolia-admincentral-6.2.15.jar:?]
    at info.magnolia.admincentral.ResurfaceUI.init(ResurfaceUI.java:119) [magnolia-admincentral-6.2.15.jar:?]
    at com.vaadin.ui.UI.doInit(UI.java:771) [vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:218) [vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:76) [vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1637) [vaadin-server-8.14.1.jar:8.14.1]
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:464) [vaadin-server-8.14.1.jar:8.14.1]
    at info.magnolia.admincentral.AdmincentralServlet.service(AdmincentralServlet.java:119) [magnolia-admincentral-6.2.15.jar:?]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
    at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.virtualuri.VirtualUriFilter.doFilter(VirtualUriFilter.java:98) [magnolia-virtual-uri-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cors.AbstractCorsFilter.doFilter(AbstractCorsFilter.java:77) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58) [magnolia-cache-core-5.9.4.jar:?]
    at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:66) [magnolia-cache-core-5.9.4.jar:?]
    at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:164) [magnolia-cache-core-5.9.4.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:78) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:84) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119) [magnolia-site-1.4.3.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:120) [magnolia-module-multisite-2.1.1.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:74) [magnolia-cache-core-5.9.4.jar:?]
    at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at champion.systems.hamiltonShared.filters.LoginFilterWithRedirect.doFilter(LoginFilterWithRedirect.java:131) [hamilton-shared-1.0-SNAPSHOT.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at champion.systems.hamiltonOauth.OauthFilter.doFilter(OauthFilter.java:33) [hamilton-oauth-1.0-SNAPSHOT.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:91) [magnolia-module-enterprise-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92) [magnolia-personalization-preview-app-2.0.14.jar:?]
    at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:75) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110) [magnolia-core-6.2.15.jar:?]
    at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96) [magnolia-core-6.2.15.jar:?]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.22]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.22]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.22]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.22]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [catalina.jar:9.0.22]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.22]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.22]
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) [catalina.jar:9.0.22]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.22]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.22]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.22]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.22]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) [tomcat-coyote.jar:9.0.22]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) [tomcat-coyote.jar:9.0.22]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.22]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.22]
    at java.lang.Thread.run(Thread.java:834) [?:?]
2022-02-25 16:25:07,072 WARN  info.magnolia.ui.framework.ioc.UiComponentProvider: Attempted to cache a UIComponent (FailedSubAppStub) instance in bean store containing another UIComponent (SubAppView) 

Workaround

None found so far except manually editing items in JCR. 

 

Update 01.03.2022

I managed to implement a workaround by extending the CheckboxGroup field and overriding the setValue method in the com.vaadin.ui.AbstractMultiSelect class. I now filter the value Set for nonNull items before updating the selection. I did some tests and it seems to work  fine.

Development notes



 Comments   
Comment by Adam Siska [ 21/Mar/22 ]

Discovery:

  • the bug is present and easily reproducible and obviously ui shouldn't fail like this (according to first comment 5.7 affected in a similar way..)
  • overriding setValue is really just workaround to cope with it not a way to go
  • we have had similar issue with deleted/broken links in linkfields which resulted in whole new "deleted-item" management, in this case we would probably need some extension of OptionListDatasource related logic to not pass/resolve null for non-existing options when binding, but rather some extra option for values that won't fit in configuration.
  • this would apparently need an UX inputs as this is about rewriting wrong data (user should be probably warned about it)
Comment by Rabie Hayoun [ 25/Mar/22 ]

We need to decide which option to go with:

  1. Add a new flow to notify the user about the data inconsistency
  2. Add a note on the docu informing the user of this know issue.
Generated at Mon Feb 12 09:42:38 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.