ClassCastException: java.lang.String cannot ... MetaPropertyPath

Hi
While I tried to run one of the screen from my application after upgrading to 6.1.4, noticed the following error at the time of calling the edit screen from browse screen. I am not sure if it is linked to new version of the studio or something else though.


java.lang.ClassCastException: java.lang.String cannot be cast to com.haulmont.chile.core.model.MetaPropertyPath
	at com.haulmont.cuba.gui.xml.layout.loaders.AbstractTableLoader.loadValidators(AbstractTableLoader.java:302)
	at com.haulmont.cuba.gui.xml.layout.loaders.AbstractTableLoader.loadComponent(AbstractTableLoader.java:142)
	at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:39)
	at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponentsAndExpand(ContainerLoader.java:78)
	at com.haulmont.cuba.gui.xml.layout.loaders.GroupBoxLayoutLoader.loadComponent(GroupBoxLayoutLoader.java:58)
	at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:39)
	at com.haulmont.cuba.gui.xml.layout.loaders.ScrollBoxLayoutLoader.loadComponent(ScrollBoxLayoutLoader.java:91)
	at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponents(ContainerLoader.java:39)
	at com.haulmont.cuba.gui.xml.layout.loaders.ContainerLoader.loadSubComponentsAndExpand(ContainerLoader.java:78)
	at com.haulmont.cuba.gui.xml.layout.loaders.WindowLoader.loadComponent(WindowLoader.java:79)
	at com.haulmont.cuba.gui.WindowManager.createWindow(WindowManager.java:385)
	at com.haulmont.cuba.gui.WindowManager.openEditor(WindowManager.java:669)
	at com.haulmont.cuba.gui.components.WindowDelegate.openEditor(WindowDelegate.java:245)
	at com.haulmont.cuba.web.gui.WebWindow.openEditor(WebWindow.java:458)
	at com.haulmont.cuba.gui.components.actions.EditAction.internalOpenEditor(EditAction.java:201)
	at com.haulmont.cuba.gui.components.actions.EditAction.actionPerform(EditAction.java:190)
	at com.haulmont.cuba.web.gui.components.WebButton.performAction(WebButton.java:53)
	at com.haulmont.cuba.web.gui.components.WebButton$1.buttonClick(WebButton.java:44)
	at sun.reflect.GeneratedMethodAccessor290.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
	at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
	at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1008)
	at com.vaadin.ui.Button.fireClick(Button.java:377)
	at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:56)
	at com.vaadin.ui.Button$1.click(Button.java:54)
	at sun.reflect.GeneratedMethodAccessor289.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158)
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:118)
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:414)
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:79)
	at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.lambda$synchronizedHandleRequest$82(CubaVaadinServletService.java:306)
	at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler$$Lambda$40/250256043.call(Unknown Source)
	at com.haulmont.cuba.web.sys.CubaVaadinServletService.withUserSession(CubaVaadinServletService.java:187)
	at com.haulmont.cuba.web.sys.CubaVaadinServletService$CubaUidlRequestHandler.synchronizedHandleRequest(CubaVaadinServletService.java:306)
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409)
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:369)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:242)
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:165)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.haulmont.cuba.web.sys.CubaHttpFilter.handleNotFiltered(CubaHttpFilter.java:110)
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:97)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
	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)

XML file


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
        caption="msg://editCaption"
        class="com.inteacc.gms.gui.vendor.VendorEdit"
        datasource="vendorDs"
        focusComponent="fieldGroup"
        messagesPack="com.inteacc.gms.gui.vendor">
    <dsContext>
        <datasource id="vendorDs"
                    class="com.inteacc.gms.entity.Vendor"
                    view="vendor-view">
            <collectionDatasource id="vendorContactDs"
                                  property="vendorContact"/>
        </datasource>
        <collectionDatasource id="countriesDs"
                              class="com.inteacc.gms.entity.Country">
            <query>
                <![CDATA[select e from inteaccgms$Country e]]>
            </query>
        </collectionDatasource>
        <collectionDatasource id="vendorGroupsDs"
                              class="com.inteacc.gms.entity.VendorGroup">
            <query>
                <![CDATA[select e from inteaccgms$VendorGroup e]]>
            </query>
        </collectionDatasource>
    </dsContext>
    <layout expand="scrollBox"
            spacing="true">
        <scrollBox id="scrollBox"
                   spacing="true">
            <fieldGroup id="fieldGroup"
                        datasource="vendorDs">
                <column>
                    <field id="vendId"
                           width="100px"/>
                    <field id="address1"
                           width="250px"/>
                    <field id="city"
                           width="250px"/>
                    <field id="postCode"
                           width="80px"/>
                    <field id="phone1"
                           width="250px"/>
                </column>
                <column width="250px">
                    <field id="name"/>
                    <field id="address2"/>
                    <field id="state"/>
                    <field id="country"
                           optionsDatasource="countriesDs"/>
                    <field id="phone2"/>
                </column>
                <column>
                    <field id="vendorCategory"/>
                    <field id="vendorGroup"
                           optionsDatasource="vendorGroupsDs"/>
                    <field id="fax"
                           width="250px"/>
                </column>
            </fieldGroup>
            <groupBox id="vendorContactBox"
                      caption="msg://com.inteacc.gms.entity/Vendor.vendorContact"
                      height="100%">
                <table id="vendorContactTable"
                       editable="true"
                       height="200px"
                       width="100%">
                    <actions>
                        <action id="btnAdd"
                                invoke="onAdd"/>
                        <action id="btnRemove"
                                invoke="onRemove"/>
                    </actions>
                    <columns>
                        <column id="name"
                                editable="true"/>
                        <column id="phone1"
                                editable="true"/>
                        <column id="phone2"
                                editable="true"/>
                        <column id="phone2Ext"
                                editable="true"/>
                        <column id="mobile"
                                editable="true"/>
                        <column id="fax"
                                editable="true"/>
                        <column id="email"
                                editable="true"/>
                        <column id="lastName"/>
                    </columns>
                    <rows datasource="vendorContactDs"/>
                    <buttonsPanel>
                        <button id="btnAdd"
                                action="vendorContactTable.btnAdd"
                                icon="font-icon:FILE_O"/>
                        <button id="btnReomve"
                                action="vendorContactTable.btnRemove"
                                icon="font-icon:TRASH_O"/>
                    </buttonsPanel>
                </table>
            </groupBox>
        </scrollBox>
        <frame id="windowActions"
               screen="editWindowActions"/>
    </layout>
</window>

Hi,
please check if all of your editable columns have the id that is existing property of VendorContact. It seems that you have added editable for generated column which is created from the screen controller.

The ClassCastException thrown to indicate that your code has attempted to cast an object to a subclass of which it is not an instance. Casting only works when the casted object follows an is a relationship to the type you are trying to cast to.

When will be ClassCastException is thrown:

  • When you try to cast an object of Parent class to its Child class type, this exception will be thrown.

  • When you try to cast an object of one class into another class type that has not extended the other class or they don’t have any relationship between them.