IllegalStateException: DataGridItems is not active : Platform v7.2.1

After I have migrated my application to Platform 7.2.1 I am getting the following exception where I don’t see any clue to fix. Thanks CUBA team for your help.

java.lang.IllegalStateException: DataGridItems is not active
at com.haulmont.cuba.web.gui.components.WebAbstractDataGrid.getDataGridItemsNN(WebAbstractDataGrid.java:847)
at com.haulmont.cuba.web.gui.components.WebAbstractDataGrid.getEntityDataGridItemsNN(WebAbstractDataGrid.java:858)
at com.haulmont.cuba.web.gui.components.WebAbstractDataGrid.getInitialVisibleColumns(WebAbstractDataGrid.java:1967)
at com.haulmont.cuba.web.gui.components.WebAbstractDataGrid.setItems(WebAbstractDataGrid.java:889)
at com.haulmont.cuba.gui.components.DataGrid.setDatasource(DataGrid.java:207)
at com.haulmont.cuba.gui.xml.layout.loaders.AbstractDataGridLoader.loadComponent(AbstractDataGridLoader.java:205)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponentsAndExpand(ContainerLoader.java:76)
at com.haulmont.cuba.gui.xml.layout.loaders.GroupBoxLayoutLoader.loadComponent(GroupBoxLayoutLoader.java:67)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.SplitPanelLoader.loadComponent(SplitPanelLoader.java:78)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponentsAndExpand(ContainerLoader.java:76)
at com.haulmont.cuba.gui.xml.layout.loaders.AbstractBoxLoader.loadComponent(AbstractBoxLoader.java:50)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.TabSheetLoader.loadComponent(TabSheetLoader.java:93)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.ScrollBoxLayoutLoader.loadComponent(ScrollBoxLayoutLoader.java:63)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:38)
at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponentsAndExpand(ContainerLoader.java:76)
at com.haulmont.cuba.gui.xml.layout.loaders.WindowLoader.loadComponent(WindowLoader.java:94)
at com.haulmont.cuba.web.sys.WebScreens.loadWindowFromXml(WebScreens.java:366)
at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:233)
at com.haulmont.cuba.web.sys.WebScreens.openEditor(WebScreens.java:1202)
at com.haulmont.cuba.gui.components.HasWindowManager.openEditor(HasWindowManager.java:138)
at com.haulmont.cuba.gui.components.actions.CreateAction.internalOpenEditor(CreateAction.java:304)
at com.haulmont.cuba.gui.components.actions.CreateAction.actionPerform(CreateAction.java:257)
at com.haulmont.cuba.web.gui.components.WebButton.buttonClicked(WebButton.java:67)
at com.haulmont.cuba.web.widgets.CubaButton.fireClick(CubaButton.java:76)
at com.vaadin.ui.Button$1.click(Button.java:57)
at sun.reflect.GeneratedMethodAccessor359.invoke(Unknown Source)
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:153)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:431)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:396)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:260)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:82)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1578)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Hi,

Could you please describe the problem in more details? Either demo project or corresponding code will be helpful.

Regards,
Gleb

Hi

I have exactly the same problem. The issue for me appears to be related to nested datasources. If you assign a nested collectiondatasource to the datagrid it throws this error. It was all working in 7.15 so appears to be related to some changes with 7.2 & 7.21.

Thanks
David

Hi Gleb
Please find below the xml and controller files:

xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
        caption="msg://editorCaption"
        class="com.company.web.pp.planorder.PlanOrderEdit"
        datasource="planOrderDs"
        messagesPack="com.company.web.pp.planorder">
    <dsContext>
        <datasource id="planOrderDs"
                    class="com.company.entity.pp.PlanOrder"
                    view="planOrder-view">
            <collectionDatasource id="planOrderOperationsDs"
                                  property="planOrderOperations">
                <collectionDatasource id="planOrderOperationActivityDs"
                                      property="planOrderOperationActivity"/>
            </collectionDatasource>
            <collectionDatasource id="planOrderLineDs"
                                  property="planOrderLine"/>
            <collectionDatasource id="planOrderContinuousProdDs"
                                  property="planOrderContinuousProd"/>
        </datasource>
        <collectionDatasource id="plantsDs"
                              allowCommit="false"
                              class="com.company.entity.pp.Plant"
                              view="plantCompanyCurrencyCountryProdProcess-view">
            <query>
                <![CDATA[select e from erp$Plant e where e.hasManufacturingActivity = TRUE 
and e.company.id = :ds$companiesDs.id
]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="materialsDs"
                              allowCommit="false"
                              class="com.company.entity.mm.Material"
                              refreshMode="NEVER"
                              view="materialProdPlanParameters-view">
        </collectionDatasource>
        <collectionDatasource id="productionVersionsDs"
                              allowCommit="false"
                              class="com.company.entity.pp.ProductionVersion"
                              view="productionVersionMinRecipeBom-view">
            <query>
                <![CDATA[select e from erp$ProductionVersion e
where e.material.id = :ds$materialsDs.id]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="recipeLinesDs"
                              allowCommit="false"
                              class="com.company.entity.pp.RecipeLine"
                              refreshMode="NEVER"
                              view="recipeLineH-view"/>
        <collectionDatasource id="companiesDs"
                              allowCommit="false"
                              class="com.company.entity.acct.Company"
                              view="_minimal">
            <query>
                <![CDATA[select e from erp$Company e where e.active = true]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="operationsDs"
                              allowCommit="false"
                              class="com.company.entity.pp.Operation"
                              view="_minimal">
            <query>
                <![CDATA[select e from erp$Operation e where e.productionStage.id = :ds$productionStagesDs.id]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="resourcesDs"
                              allowCommit="false"
                              class="com.company.entity.pp.Resource"
                              view="_minimal">
            <query>
                <![CDATA[select e from erp$Resource e where e.operation.id = :ds$operationsDs.id]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="salesOrdersDs"
                              allowCommit="false"
                              class="com.company.entity.sd.SalesOrder"
                              view="salesOrderReqDeliveryDate-view">
            <query>
                <![CDATA[select e from erp$SalesOrder e where (e.businessIndustryProductType='mto' OR e.businessIndustryProductType='eto') and e.plant.id = :ds$plantsDs.id]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="resourceCapacityLinesDs"
                              allowCommit="false"
                              class="com.company.entity.pp.ResourceCapacityLine"
                              view="resourceCapacityLine-view">
            <query>
                <![CDATA[select e from erp$ResourceCapacityLine e where e.resource.id = :custom$resourceId
and e.capacityDate >= :custom$fromDate and e.capacityDate <= :custom$toDate]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="productionStagesDs" class="com.company.entity.pp.ProductionStage">
            <query>
                <![CDATA[select e from erp$ProductionStage e join e.productionProcess pr where pr in (select p from erp$ProductionProcess p join p.productionProcessPlant pl where pl.active = true and pl.plant.id = :ds$plantsDs.id )]]>
            </query>
        </collectionDatasource>
    </dsContext>
    <dialogMode height="600"
                width="800"/>
    <layout expand="scrollBox"
            spacing="true">
        <scrollBox id="scrollBox"
                   spacing="true">
            <cssLayout>
                <fieldGroup id="fieldgroup2"
                            datasource="planOrderDs"
                            stylename="field_group_style2">
                    <column width="250px">
                        <field id="orderNumber" editable="false"/>
                        <field id="orderDate"/>
                        <field id="plant" optionsDatasource="plantsDs" editable="true" property="plant"/>
                        <field optionsDatasource="salesOrdersDs" property="salesOrder"/>
                        <field id="material" optionsDatasource="materialsDs" editable="true" property="material"/>
                        <field editable="false" optionsDatasource="productionStagesDs" property="productionStage"/>
                        <field editable="false" property="processOrder"/>
                    </column>
                </fieldGroup>
                <fieldGroup id="fieldGroup"
                            datasource="planOrderDs">
                    <column width="250px">
                        <field editable="false" optionsDatasource="companiesDs" property="company"/>
                        <field id="firmPlanOrder"/>
                        <field property="planOrderStatus"/>
                        <field property="scheduleMode"/>
                        <field optionsDatasource="productionVersionsDs" property="productionVersion"/>
                        <field editable="false" property="purchaseRequisition"/>
                        <field property="planActionIndicator"/>
                        <field property="tenantId" editable="true"/>
                    </column>
                </fieldGroup>
                <fieldGroup id="fieldgroup_1"
                            datasource="planOrderDs"
                            stylename="field_group_style2">
                    <column width="250px">
                        <field id="quantity"/>
                        <field id="scrapQuantity"
                               editable="false"/>
                        <field editable="false"
                               property="unitOfMeasure"/>
                        <field editable="false"
                               property="inhouseProductionTime"/>
                        <field property="planStartDate"/>
                        <field property="planFinishDate"/>
                        <field property="requiredFinishDate"/>
                    </column>
                </fieldGroup>
            </cssLayout>
            <tabSheet id="tabSheet"
                      height="450px"
                      responsive="true">
                <tab id="tabOpers"
                     caption="OPERATIONS"
                     margin="true,false,false,false"
                     spacing="true">
                    <groupBox id="planOrderOperationsBox"
                              caption="msg://com.company.entity.pp/PlanOrder.planOrderOperations"
                              height="100%">
                        <split id="split"
                               height="100%"
                               orientation="vertical"
                               pos="70"
                               responsive="true"
                               width="100%">
                            <table id="planOrderOperationsTable"
                                   editable="true"
                                   height="100%"
                                   width="100%">
                                <actions>
                                    <action id="create"
                                            invoke="onAdd2"/>
                                    <action id="remove"
                                            invoke="onRemove2"/>
                                    <action id="recalcPlan"
                                            invoke="recalculatePlanOrder"/>
                                    <action id="useRecommendedResourceUnitAction"
                                            invoke="useRecommendedResourceUnit"/>
                                    <action id="balanceResourceCalc"
                                            invoke="balanceResourceUnitsWithFirstOperationCalcPlan"/>
                                </actions>
                                <columns>
                                    <column id="sequenceNo"/>
                                    <column id="operation"/>
                                    <column id="resource"/>
                                    <column id="resourceUnit"
                                            editable="true"/>
                                    <column id="resourceCapacity"/>
                                    <column id="operPlanStartDate"
                                            editable="true"/>
                                    <column id="operPlanFinishDate"
                                            editable="true"/>
                                    <column id="workCentre"
                                            collapsed="true"/>
                                    <column id="keyActivityHoursRequired"/>
                                    <column id="workingDaysRequired"
                                            description="this is used in Continuous production production process"/>
                                    <column id="resourceUnitsRecommended"/>
                                    <column id="quantityFinishedPlan"/>
                                    <column id="quantityScrappedPlan"/>
                                    <column id="description"
                                            editable="true"/>
                                    <column id="recipeLine"
                                            collapsed="true"/>
                                    <column id="criticalPathOperation"
                                            editable="true"/>
                                </columns>
                                <rows datasource="planOrderOperationsDs"/>
                                <buttonsPanel>
                                    <button id="recalcBtn"
                                            action="planOrderOperationsTable.recalcPlan"
                                            caption="ReCalculate Plan"
                                            description="Recalculate after any changes in resource units manually"
                                            icon="REFRESH"
                                            stylename="friendly"/>
                                    <button id="balanceResourcesBtn"
                                            action="planOrderOperationsTable.balanceResourceCalc"
                                            caption="BALANCE RESOURCE AND CALC PLAN"
                                            description="Adjust Resource units according to the first operation and recalculate the plan"
                                            stylename="primary"/>
                                </buttonsPanel>
                            </table>
                            <split id="split3"
                                   height="100%"
                                   orientation="horizontal"
                                   width="100%">
                                <table id="planOrderOperationPhaseLineTable"
                                       height="100%"
                                       width="100%">
                                    <columns>
                                        <column id="activityType"/>
                                        <column id="activityUnit"/>
                                        <column id="standardTime"/>
                                        <column id="standardTimePerUnit"/>
                                        <column id="standardTimeTotal"/>
                                    </columns>
                                    <rows datasource="planOrderOperationActivityDs"/>
                                </table>
                                <table id="resourceCapacityTable"
                                       height="100%"
                                       width="100%">
                                    <columns>
                                        <column id="capacityDate"/>
                                        <column id="hoursPerShift"/>
                                        <column id="numberOfShift"/>
                                        <column id="breakTime"/>
                                        <column id="resourceUnits"/>
                                        <column id="resourceUnitsUsed"/>
                                        <column id="efficiencyFactor"/>
                                        <column id="netWorkTimePerResourceUnit"/>
                                        <column id="totalNetWorkTime"/>
                                        <column id="totalLoadTime"/>
                                        <column id="capacityQuantityPerDay"/>
                                        <column id="totalLoadQuantity"/>
                                    </columns>
                                    <rows datasource="resourceCapacityLinesDs"/>
                                </table>
                            </split>
                        </split>
                    </groupBox>
                </tab>
                <tab id="tabContProd"
                     caption="CONTINUOUS PRODUCTION"
                     margin="true,false,false,false"
                     spacing="true">
                    <groupBox id="planOrderContinuousProdBox"
                              caption="msg://com.company.entity.pp/PlanOrder.planOrderContinuousProd"
                              height="100%">
                        <dataGrid id="planOrderContinuousProdGrid"
                                  datasource="planOrderContinuousProdDs"
                                  editorBuffered="false"
                                  height="100%"
                                  width="100%">
                            <actions>
                                <action id="recalcPlan"
                                        invoke="recalculatePlanOrder"/>
                            </actions>
                            <columns>
                                <column property="prodDate"/>
                                <column editable="false"
                                        property="material"/>
                                <column editable="false"
                                        property="operation"/>
                                <column editable="false"
                                        property="resource"/>
                                <column editable="false"
                                        property="resourceUnits"/>
                                <column property="quantityPlan"/>
                                <column property="quantityActual"/>
                                <column property="quantityScrap"/>
                                <column property="resourceHoursRequired"/>
                            </columns>
                        </dataGrid>
                    </groupBox>
                </tab>
                <tab id="tabLine"
                     caption="COMPONENTS"
                     margin="true,false,false,false"
                     spacing="true">
                    <groupBox id="planOrderLineBox"
                              caption="msg://com.company.entity.pp/PlanOrder.planOrderLine"
                              height="100%">
                        <table id="planOrderLineTable"
                               editable="true"
                               height="100%"
                               width="100%">
                            <actions>
                                <action id="create"
                                        invoke="onAdd"/>
                                <action id="remove"
                                        invoke="onRemove"/>
                                <action id="btnRecalculate"
                                        invoke="recalculateComponents"/>
                            </actions>
                            <columns>
                                <column id="lineNumber"/>
                                <column id="component"/>
                                <column id="unitOfMeasure"/>
                                <column id="quantity"/>
                                <column id="wastageQuantity"/>
                                <column id="quantityRequired"/>
                                <column id="requirementDate"/>
                                <column id="billOfMaterialLine"/>
                            </columns>
                            <rows datasource="planOrderLineDs"/>
                            <buttonsPanel>
                                <button id="btnAdd"
                                        action="planOrderLineTable.create"
                                        icon="icons/add.png"/>
                                <button id="btnRemove"
                                        action="planOrderLineTable.remove"
                                        icon="icons/item-remove.png"/>
                            </buttonsPanel>
                        </table>
                    </groupBox>
                </tab>
            </tabSheet>
        </scrollBox>
        <hbox id="buttonsBox" spacing="true">
            <frame id="windowActions" height="100%" screen="editWindowActions"/>
        </hbox>
    </layout>
</window>

controller
PlanOrderController.txt (52.3 KB)

Thank you for reporting the problem, I’ve created a GitHub issue.

Gleb

1 Like

Thank you Gleb.