Migration from CUBA 7.2 to jmix 1.1.1

I have generated a migration project from the latest version of CUBA to jmix but surprisingly I don’t see any of my screens, entities or business logic in the migrated project.

Here is the migration result:

This Jmix project was imported from the 'myapp' CUBA project.

### Migration result

* User entity was modified according to existing table.
* Data Stores were copied into Jmix configurations.

### What needs to be done manually

See more information about migration in the [documentation](https://docs.jmix.io/jmix/cuba/index.html).

image

It may be caused by the incompatibility with the new Kotlin plugin in your IDE.
We’ve added a warning to the docs: Migration from CUBA :: Jmix Documentation

In Jmix Studio v.1.1.4 and below, the migration procedure may fail if your IntelliJ IDEA contains Kotlin plugin of a version newer than 1.5.10. In such a case, downgrade Kotlin plugin to 1.5.10 or below.
In Jmix Studio v.1.1.5 and above, the migration does not have a dependency on Kotlin plugin.

3 posts were split to a new topic: Screen controllers are not visible in Jmix tool window

Hi Konstantin
Thank you. I followed how you suggested i.e. uninstalled the Kotlin and activated it that appears to be 1.5.10. When I run conversion to jmix, in the end, received the following exception:

java.lang.NoClassDefFoundError: org/jetbrains/uast/kotlin/declarations/KotlinUMethod
	at com.haulmont.jmixstudio.cubamigration.step.uast.EntityConverter$EntityClassModifier.convertNamePattern(EntityConverter.kt:138)
	at com.haulmont.jmixstudio.cubamigration.step.uast.EntityConverter$EntityClassModifier.modify(EntityConverter.kt:65)
	at com.haulmont.jmixstudio.cubamigration.step.uast.EntityConverter.modifyFile(EntityConverter.kt:33)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.modifyAndCallNext(UastFileConverter.kt:36)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.modifyAndCallNext(UastFileConverter.kt:37)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.modifyAndCallNext(UastFileConverter.kt:37)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.modifyAndCallNext(UastFileConverter.kt:37)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.modifyAndCallNext(UastFileConverter.kt:37)
	at com.haulmont.jmixstudio.cubamigration.step.uast.UastFileConverter.convert(UastFileConverter.kt:30)
	at com.haulmont.jmixstudio.cubamigration.step.ImportUastFilesStep$execute$$inlined$runReadAction$1.compute(actions.kt:80)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:852)
	at com.haulmont.jmixstudio.cubamigration.step.ImportUastFilesStep.execute(ImportUastFilesStep.kt:118)
	at com.haulmont.jmixstudio.cubamigration.migration.CubaMigrationProcessor$invokeSteps$1.run(CubaMigrationProcessor.kt:53)
	at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:436)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:120)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressSynchronously$8(CoreProgressManager.java:542)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$new$0(ProgressRunner.java:83)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:244)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:244)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassNotFoundException: org.jetbrains.uast.kotlin.declarations.KotlinUMethod PluginClassLoader(plugin=PluginDescriptor(name=Jmix, id=io.jmix.studio, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/IdeaIC2021.3/plugins/jmix-studio, version=1.1.4-213, package=null, isBundled=false), packagePrefix=null, instanceId=124, state=active)
	at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:235)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 34 more

And the jmix project looks like same, my screens, controllers etc. is not there…

image

Hi Mortoza
Can you write please, what exactly version of Kotlin plugin do you use?

Hi Anton
Surprisingly, I see intelliJ still has Kotlin 1.6.x

I have put it back to 1.5.10 and now the conversion of the project worked. Thank you @Anton.Kozub and @krivopustov

After migration, I have taken all the manual steps as suggested. However, I see still many errors and would be really helpful if you please give additional support as follows:

  1. I didn’t find “UserSessionService” anymore. Any shed of light in the migration guide would be helpful. If this is removed in jmix, some migration guide will be helpful.

  2. Some tips on ServiceBean migration will be helpful. This is now full of errors in my migrated application. I see both of the following files are kept after migration but I understand only the serviceBean will stay and the other one should be removed (pls suggest)
    image

  3. Listeners
    If there was any automatic conversion of Listeners that would have been really helpful especially for large projects like I have in CUBA.

Can you share a typical example of ServiceBean and Listeners in jmix?

  1. I had some programmatic roles created they are now seen under the core folder instead of under the security folder
    image

  2. screen XML and controllers are in two different locations but frankly speaking it was more convenient in CUBA.

  3. I have a generic class to load data from different entities. After migration it seems that jmix doesn’t support getClassNN method anymore. Is there anything new replaced this?
    image

I have a large project and understand I have to do a lot of manual work even though jmix team has created a migration tool that helps a lot. I look forward.

There is no direct counterpart of this service in Jmix. For getting an information about the current user use CurrentAuthentication. How did you use UserSessionService in CUBA?

Keep both classes, it won’t harm, but use only interfaces to invoke services. You may also want to move *Bean classes to an impl sub-package.

You don’t have to convert EntityChangedEvent and entity listeners, they should work in Jmix as is because jmix-cuba compatibility module contains required adapters.

Fair enough. But this source code layout is a de-facto standard for Java applications, so we have decided to stick to it in Jmix.

Either use io.jmix.core.Metadata.getSession().getClass() or the old com.haulmont.cuba.core.global.Metadata.getSession().getClassNN() - it’s also available in jmix-cuba.

Hope this helps.

Regards,
Konstantin

Thank you so much @krivopustov

That’s very good, I’ll adjust my codes after the imigration.

Like UserSessionService, I have some variables stored for each logged-in user during run-time in memory which is used when needed in different screens or business logic for the user by using attributes of userSessionSource, for example:

 userSessionSource.getUserSession().setAttribute("workflowLicenseActivated", workflowLicenseActivated);

        //Show Default Company
        Company defaultCompany = userSessionSource.getUserSession().getAttribute("defaultCompany");

Thanks for suggesting similar usage in jmix.

I have created impl sub-package and see that is in the java folder under the project node, but not visible from ‘jmix’ node, is this what you meant?

On the other hand, I see the Service (BusinessLogic) created in CUBA is not compatible anymore, is it right that I have to convert my ServiceBeans to SpringBeans?
image

Event Listener wizard:
It would be appreciated if you please confider auto-selection of Entities when typed. It will be very handy for medium to large projects.
image

I didn’t find a specific events e.g AfterDelete, missing anything?

I also noticed that Graddle has removed during migration different dependencies I had in CUBA project e.g.

      compile('org.apache.commons:commons-csv:1.5')
            compile('com.github.lbordowitz.openforecast:openforecast:0.5.0')
            compile('com.workday:timeseries-forecast:1.1.1')

Thank you again for your help.

The old code should work, the compatibility code contains UserSessionSource and UserSession classes. See details here.

You don’t have to convert anything in your services, they should work as is if located in proper packages.

Thanks for the suggestion, we’ll do it: https://youtrack.jmix.io/issue/JST-2467

Listen to EntityChangedEvent with EntityChangedEvent.Type.DELETED type.

The migration procedure creates a completely new build.gradle and adds only known Jmix dependencies to it. So you should add your custom dependencies manually.

1 Like

Thank you very much @krivopustov
I keep analyzing the migrated project and find more things to ask, thanks for your patience and help.

While I have the impression that CUBA code will still work in most of the cases in jmix, thanks to the compatibility package, I didn’t find a few not working.

  1. File download - ActionPerformedEvent as well as see the last line in the following code image that was not recognized:

image

It will also be good to have some code snippets/demo in jmix documentation on downloads (unless I missed!)

  1. Noticed that some of my complex screens (with a lot of components and data) have been broken after migration.

image

Here is the Intellij log that may help:
(employee screen)

2021-12-30 13:51:05,110 [54218367]   WARN - datamodel.EntityScreensSection -  
java.lang.Throwable: Control-flow exceptions (like ProcessCanceledException) should never be logged: ignore for explicitly started processes or rethrow to handle on the outer process level
	at com.intellij.openapi.diagnostic.Logger.ensureNotControlFlow(Logger.java:234)
	at com.intellij.idea.IdeaLogger.warn(IdeaLogger.java:183)
	at com.intellij.openapi.diagnostic.Logger.warn(Logger.java:176)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.jmix.datamodel.EntityScreensSection.getChildrenImpl(DataModelSectionProvider.kt:212)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.jmix.datamodel.EntityScreensSection.getChildrenImpl(DataModelSectionProvider.kt:197)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.AbstractJmixSection.getChildren(AbstractJmixSection.kt:56)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.jmix.UtilsKt.hasChildren(utils.kt:34)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.jmix.datamodel.JmixEntitySection.getChildrenImpl(DataModelSectionProvider.kt:115)
	at com.haulmont.jmixstudio.ui.toolwindow.structure.node2.JpaSection.getChildren(JpaSection.kt:53)
	at com.intellij.ide.util.treeView.AbstractTreeStructureBase.getChildElements(AbstractTreeStructureBase.java:38)
	at com.intellij.ui.tree.StructureTreeModel.getValidChildren(StructureTreeModel.java:383)
	at com.intellij.ui.tree.StructureTreeModel.validateChildren(StructureTreeModel.java:299)
	at com.intellij.ui.tree.StructureTreeModel$Node.isLeaf(StructureTreeModel.java:559)
	at com.intellij.ui.tree.StructureTreeModel.isLeaf(StructureTreeModel.java:335)
	at com.intellij.ui.tree.LeafState.get(LeafState.java:64)
	at com.intellij.ui.tree.AsyncTreeModel$CmdGetChildren.load(AsyncTreeModel.java:574)
	at com.intellij.ui.tree.AsyncTreeModel$CmdGetChildren.getNode(AsyncTreeModel.java:547)
	at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:440)
	at com.intellij.ui.tree.AsyncTreeModel$Command.get(AsyncTreeModel.java:406)
	at com.intellij.util.concurrency.Invoker$Task.run(Invoker.java:316)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1084)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:75)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:115)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:75)
	at com.intellij.util.concurrency.Invoker.invokeSafely(Invoker.java:205)
	at com.intellij.util.concurrency.Invoker.lambda$offerSafely$0(Invoker.java:183)
	at com.intellij.util.concurrency.Invoker$Background.lambda$offer$0(Invoker.java:486)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:220)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:246)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:32)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:225)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:213)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:214)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: com.intellij.openapi.progress.ProcessCanceledException
	at com.intellij.openapi.progress.util.AbstractProgressIndicatorBase.throwIfCanceled(AbstractProgressIndicatorBase.java:156)
	at com.intellij.openapi.progress.util.AbstractProgressIndicatorBase.checkCanceled(AbstractProgressIndicatorBase.java:147)
	at com.intellij.openapi.progress.util.AbstractProgressIndicatorExBase.checkCanceled(AbstractProgressIndicatorExBase.java:103)
	at com.intellij.openapi.progress.impl.CoreProgressManager.doCheckCanceled(CoreProgressManager.java:143)
	at com.intellij.openapi.progress.ProgressManager.checkCanceled(ProgressManager.java:210)
	at com.intellij.openapi.progress.ProgressIndicatorProvider.checkCanceled(ProgressIndicatorProvider.java:23)
	at com.intellij.psi.impl.source.tree.CompositeElement.getPsi(CompositeElement.java:687)
	at com.intellij.psi.impl.source.SourceTreeToPsiMap.treeElementToPsi(SourceTreeToPsiMap.java:16)
	at com.intellij.psi.impl.source.tree.SharedImplUtil.getNextSibling(SharedImplUtil.java:46)
	at com.intellij.psi.impl.source.tree.LeafPsiElement.getNextSibling(LeafPsiElement.java:75)
	at com.intellij.psi.impl.source.tree.CompositePsiElement.acceptChildren(CompositePsiElement.java:66)
	at com.intellij.psi.XmlRecursiveElementVisitor.visitElement(XmlRecursiveElementVisitor.java:39)
	at com.haulmont.jmixstudio.backend.util.CubaXmlUtil$1.visitElement(CubaXmlUtil.java:107)
	at com.intellij.psi.XmlElementVisitor.visitXmlElement(XmlElementVisitor.java:22)
	at com.intellij.psi.XmlElementVisitor.visitXmlTag(XmlElementVisitor.java:54)
	at com.intellij.psi.impl.source.xml.XmlTagImpl.accept(XmlTagImpl.java:284)
	at com.haulmont.jmixstudio.backend.util.CubaXmlUtil.findElements(CubaXmlUtil.java:100)
	at com.haulmont.jmixstudio.backend.ed.attr.ScreenAttributeModifyUtil.getDataObjectElements(ScreenAttributeModifyUtil.java:74)
	at com.haulmont.jmixstudio.backend.ed.attr.ScreenContainersFinder.getPossibleContainers(ScreenContainersFinder.kt:281)
	at com.haulmont.jmixstudio.backend.ed.attr.ScreenContainersFinder.getPossibleContainers(ScreenContainersFinder.kt:111)
	at com.haulmont.jmixstudio.backend.ed.attr.ScreenContainersFinder.getPossibleScreenDescriptors(ScreenContainersFinder.kt:67)
	at com.haulmont.jmixstudio.intellij.ui.cubatree.jmix.datamodel.EntityScreensSection.getChildrenImpl(DataModelSectionProvider.kt:209)
	... 49 more
2021-12-30 13:51:30,154 [54243411]   WARN - ctionSystem.impl.ActionUpdater - 876 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 13:51:30,160 [54243417]   WARN - ctionSystem.impl.ActionUpdater - 881 ms to grab EDT for TabListAction#update (com.intellij.ide.actions.TabListAction) 
2021-12-30 13:51:50,482 [54263739]   WARN - ctionSystem.impl.ActionUpdater - 123 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 13:52:09,088 [54282345]   WARN - ctionSystem.impl.ActionUpdater - 170 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 13:52:36,344 [54309601]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 13:52:36,461 [54309718]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 13:57:36,620 [54609877]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 13:57:36,740 [54609997]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 13:58:30,287 [54663544]   INFO - rationStore.ComponentStoreImpl - Saving appTodoConfiguration took 14 ms 
2021-12-30 13:58:35,486 [54668743]   WARN - ctionSystem.impl.ActionUpdater - 112 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:00:37,786 [54791043]   INFO - .packagesearch.intellij-plugin - [122, source=INIT] ProjectDataProvider#fetchInfoFor() - Failed obtaining data for 29 dependencies:
	* 'io.jmix.core:jmix-core-starter'
	* 'io.jmix.data:jmix-eclipselink-starter'
	* 'io.jmix.ui:jmix-ui-starter'
	* 'io.jmix.ui:jmix-ui-data-starter'
	* 'io.jmix.ui:jmix-ui-themes-compiled'
	* 'io.jmix.ui:jmix-ui-widgets-compiled'
	* 'io.jmix.security:jmix-security-starter'
	* 'io.jmix.security:jmix-security-ui-starter'
	* 'io.jmix.security:jmix-security-data-starter'
	* 'io.jmix.localfs:jmix-localfs-starter'
	* 'io.jmix.cuba:jmix-cuba-starter'
	* 'io.jmix.ui:jmix-charts-starter'
	* 'io.jmix.ui:jmix-ui-widgets'
	* 'io.jmix.ui:jmix-charts-widgets'
	* 'io.jmix.reports:jmix-reports-starter'
	* 'io.jmix.reports:jmix-reports-ui-starter'
	* 'io.jmix.reports:jmix-reports-rest-starter'
	* 'io.jmix.search:jmix-search-starter'
	* 'io.jmix.search:jmix-search-ui-starter'
	* 'io.jmix.dashboards:jmix-dashboards-chart-starter'
	* 'io.jmix.dashboards:jmix-dashboards-starter'
	* 'io.jmix.dashboards:jmix-dashboards-ui-starter'
	* 'io.jmix.emailtemplates:jmix-emailtemplates-starter'
	* 'io.jmix.emailtemplates:jmix-emailtemplates-ui-starter'
	* 'io.jmix.multitenancy:jmix-multitenancy-starter'
	* 'io.jmix.multitenancy:jmix-multitenancy-ui-starter'
	* 'io.jmix.rest:jmix-rest-starter'
	* 'io.jmix.security:jmix-security-oauth2-starter'
	* 'io.jmix.grapesjs:jmix-grapesjs-starter' 
2021-12-30 14:01:05,412 [54818669]   WARN - ctionSystem.impl.ActionUpdater - 117 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:11,296 [54824553]   INFO - .designer.ComponentModelMapper - Model class for cuba:cubaUpload not found 
2021-12-30 14:01:11,299 [54824556]   INFO -                         STDOUT - s 
2021-12-30 14:01:11,762 [54825019]   WARN - ctionSystem.impl.ActionUpdater - 328 ms to grab EDT for ProjectRefreshActionGroup#update (com.intellij.openapi.externalSystem.autoimport.ProjectRefreshActionGroup) 
2021-12-30 14:01:11,762 [54825019]   WARN - ctionSystem.impl.ActionUpdater - 325 ms to grab EDT for CWMTelephonyGroup#update (com.jetbrains.rd.platform.codeWithMe.telephony.CWMTelephonyGroup) 
2021-12-30 14:01:12,032 [54825289]   WARN - ctionSystem.impl.ActionUpdater - 105 ms to call on EDT TabListAction#update (com.intellij.ide.actions.TabListAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:12,441 [54825698]   WARN - ctionSystem.impl.ActionUpdater - 112 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:14,242 [54827499]   WARN - ctionSystem.impl.ActionUpdater - 748 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:14,242 [54827499]   WARN - ctionSystem.impl.ActionUpdater - 748 ms to grab EDT for ObjectInspectorManager$MoveToAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ObjectInspectorManager$MoveToAction) 
2021-12-30 14:01:16,768 [54830025]   WARN - ctionSystem.impl.ActionUpdater - 109 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:17,268 [54830525]   WARN - ctionSystem.impl.ActionUpdater - 107 ms to call on EDT ComponentHierarchyManager$MyInjectToControllerAction#update (com.haulmont.studio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:01:40,824 [54854081]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Edit' preloaded at 'MainMenu' in 6 ms 
2021-12-30 14:01:40,831 [54854088]   INFO - System.impl.PopupMenuPreloader - Popup menu 'File' preloaded at 'MainMenu' in 13 ms 
2021-12-30 14:01:40,833 [54854090]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Navigate' preloaded at 'MainMenu' in 15 ms 
2021-12-30 14:01:40,834 [54854091]   INFO - System.impl.PopupMenuPreloader - Popup menu 'View' preloaded at 'MainMenu' in 16 ms 
2021-12-30 14:01:40,836 [54854093]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Refactor' preloaded at 'MainMenu' in 18 ms 
2021-12-30 14:01:40,836 [54854093]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Code' preloaded at 'MainMenu' in 18 ms 
2021-12-30 14:01:40,837 [54854094]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Build' preloaded at 'MainMenu' in 19 ms 
2021-12-30 14:01:40,839 [54854096]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Run' preloaded at 'MainMenu' in 21 ms 
2021-12-30 14:01:40,865 [54854122]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Tools' preloaded at 'MainMenu' in 47 ms 
2021-12-30 14:01:40,865 [54854122]   INFO - System.impl.PopupMenuPreloader - Popup menu 'CUBA' preloaded at 'MainMenu' in 47 ms 
2021-12-30 14:01:40,866 [54854123]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Window' preloaded at 'MainMenu' in 48 ms 
2021-12-30 14:01:40,869 [54854126]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Git' preloaded at 'MainMenu' in 50 ms 
2021-12-30 14:01:40,869 [54854126]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Help' preloaded at 'MainMenu' in 51 ms 
2021-12-30 14:02:36,876 [54910133]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:02:37,012 [54910269]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:03:01,815 [54935072]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Edit' preloaded at 'MainMenu' in 4 ms 
2021-12-30 14:03:01,823 [54935080]   INFO - System.impl.PopupMenuPreloader - Popup menu 'File' preloaded at 'MainMenu' in 12 ms 
2021-12-30 14:03:01,826 [54935083]   INFO - System.impl.PopupMenuPreloader - Popup menu 'View' preloaded at 'MainMenu' in 14 ms 
2021-12-30 14:03:01,827 [54935084]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Navigate' preloaded at 'MainMenu' in 16 ms 
2021-12-30 14:03:01,833 [54935090]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Refactor' preloaded at 'MainMenu' in 22 ms 
2021-12-30 14:03:01,836 [54935093]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Build' preloaded at 'MainMenu' in 25 ms 
2021-12-30 14:03:01,841 [54935098]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Run' preloaded at 'MainMenu' in 30 ms 
2021-12-30 14:03:01,842 [54935099]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Code' preloaded at 'MainMenu' in 30 ms 
2021-12-30 14:03:01,845 [54935102]   INFO - System.impl.PopupMenuPreloader - Popup menu 'CUBA' preloaded at 'MainMenu' in 33 ms 
2021-12-30 14:03:01,846 [54935103]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Tools' preloaded at 'MainMenu' in 34 ms 
2021-12-30 14:03:01,848 [54935105]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Window' preloaded at 'MainMenu' in 36 ms 
2021-12-30 14:03:01,848 [54935105]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Git' preloaded at 'MainMenu' in 37 ms 
2021-12-30 14:03:01,850 [54935107]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Help' preloaded at 'MainMenu' in 39 ms 
2021-12-30 14:03:09,722 [54942979]   INFO - rationStore.ComponentStoreImpl - Saving appTodoConfiguration took 453 ms 
2021-12-30 14:03:13,770 [54947027]   WARN - ctionSystem.impl.ActionUpdater - 298 ms to call on EDT MyInjectToControllerAction#update (com.haulmont.jmixstudio.intellij.ui.sd.designer.toolwindow.ComponentHierarchyManager$MyInjectToControllerAction) - speed it up and/or implement UpdateInBackground. 
2021-12-30 14:03:13,771 [54947028]   WARN - ctionSystem.impl.ActionUpdater - 299 ms to grab EDT for DockToolWindowAction#update (com.intellij.openapi.wm.impl.DockToolWindowAction) 
2021-12-30 14:03:22,412 [54955669]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Edit' preloaded at 'MainMenu' in 4 ms 
2021-12-30 14:03:22,420 [54955677]   INFO - System.impl.PopupMenuPreloader - Popup menu 'File' preloaded at 'MainMenu' in 11 ms 
2021-12-30 14:03:22,422 [54955679]   INFO - System.impl.PopupMenuPreloader - Popup menu 'View' preloaded at 'MainMenu' in 14 ms 
2021-12-30 14:03:22,423 [54955680]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Navigate' preloaded at 'MainMenu' in 15 ms 
2021-12-30 14:03:22,425 [54955682]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Refactor' preloaded at 'MainMenu' in 16 ms 
2021-12-30 14:03:22,426 [54955683]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Build' preloaded at 'MainMenu' in 17 ms 
2021-12-30 14:03:22,428 [54955685]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Run' preloaded at 'MainMenu' in 19 ms 
2021-12-30 14:03:22,430 [54955687]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Tools' preloaded at 'MainMenu' in 21 ms 
2021-12-30 14:03:22,430 [54955687]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Code' preloaded at 'MainMenu' in 22 ms 
2021-12-30 14:03:22,432 [54955689]   INFO - System.impl.PopupMenuPreloader - Popup menu 'CUBA' preloaded at 'MainMenu' in 24 ms 
2021-12-30 14:03:22,433 [54955690]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Git' preloaded at 'MainMenu' in 24 ms 
2021-12-30 14:03:22,433 [54955690]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Window' preloaded at 'MainMenu' in 25 ms 
2021-12-30 14:03:22,434 [54955691]   INFO - System.impl.PopupMenuPreloader - Popup menu 'Help' preloaded at 'MainMenu' in 25 ms 
2021-12-30 14:07:37,126 [55210383]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:07:37,239 [55210496]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:11:33,559 [55446816]   WARN - ctionSystem.impl.ActionUpdater - 300 ms to grab EDT for #update (com.intellij.openapi.wm.impl.ToolWindowHeader$1) 
2021-12-30 14:11:33,560 [55446817]   WARN - ctionSystem.impl.ActionUpdater - 301 ms to grab EDT for #update (com.intellij.openapi.wm.impl.ToolWindowHeader$1) 
2021-12-30 14:12:09,847 [55483104]   INFO - .designer.ComponentModelMapper - Model class for cuba:cubaUpload not found 
2021-12-30 14:12:09,849 [55483106]   INFO -                         STDOUT - s 
2021-12-30 14:12:10,122 [55483379]   WARN - ctionSystem.impl.ActionUpdater - 238 ms to grab EDT for ProjectRefreshActionGroup#update (com.intellij.openapi.externalSystem.autoimport.ProjectRefreshActionGroup) 
2021-12-30 14:12:10,123 [55483380]   WARN - ctionSystem.impl.ActionUpdater - 224 ms to grab EDT for #update (com.intellij.openapi.wm.impl.ToolWindowHeader$1) 
2021-12-30 14:12:37,346 [55510603]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:12:37,453 [55510710]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 

and this (interview-assessment screen)

2021-12-30 14:15:37,633 [55690890]   INFO - .packagesearch.intellij-plugin - [124, source=INIT] ProjectDataProvider#fetchInfoFor() - Failed obtaining data for 29 dependencies:
	* 'io.jmix.core:jmix-core-starter'
	* 'io.jmix.data:jmix-eclipselink-starter'
	* 'io.jmix.ui:jmix-ui-starter'
	* 'io.jmix.ui:jmix-ui-data-starter'
	* 'io.jmix.ui:jmix-ui-themes-compiled'
	* 'io.jmix.ui:jmix-ui-widgets-compiled'
	* 'io.jmix.security:jmix-security-starter'
	* 'io.jmix.security:jmix-security-ui-starter'
	* 'io.jmix.security:jmix-security-data-starter'
	* 'io.jmix.localfs:jmix-localfs-starter'
	* 'io.jmix.cuba:jmix-cuba-starter'
	* 'io.jmix.ui:jmix-charts-starter'
	* 'io.jmix.ui:jmix-ui-widgets'
	* 'io.jmix.ui:jmix-charts-widgets'
	* 'io.jmix.reports:jmix-reports-starter'
	* 'io.jmix.reports:jmix-reports-ui-starter'
	* 'io.jmix.reports:jmix-reports-rest-starter'
	* 'io.jmix.search:jmix-search-starter'
	* 'io.jmix.search:jmix-search-ui-starter'
	* 'io.jmix.dashboards:jmix-dashboards-chart-starter'
	* 'io.jmix.dashboards:jmix-dashboards-starter'
	* 'io.jmix.dashboards:jmix-dashboards-ui-starter'
	* 'io.jmix.emailtemplates:jmix-emailtemplates-starter'
	* 'io.jmix.emailtemplates:jmix-emailtemplates-ui-starter'
	* 'io.jmix.multitenancy:jmix-multitenancy-starter'
	* 'io.jmix.multitenancy:jmix-multitenancy-ui-starter'
	* 'io.jmix.rest:jmix-rest-starter'
	* 'io.jmix.security:jmix-security-oauth2-starter'
	* 'io.jmix.grapesjs:jmix-grapesjs-starter' 
2021-12-30 14:17:37,582 [55810839]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:17:37,691 [55810948]   INFO - il.indexing.FileBasedIndexImpl - Health check heartbeat 
2021-12-30 14:18:41,807 [55875064]   WARN - ctionSystem.impl.ActionUpdater - 301 ms to grab EDT for ProjectRefreshActionGroup#update (com.intellij.openapi.externalSystem.autoimport.ProjectRefreshActionGroup) 
2021-12-30 14:18:41,808 [55875065]   WARN - ctionSystem.impl.ActionUpdater - 262 ms to grab EDT for #update (com.intellij.openapi.wm.impl.ToolWindowHeader$1) 
2021-12-30 14:18:51,640 [55884897]   WARN - ctionSystem.impl.ActionUpdater - 321 ms to grab EDT for ProjectRefreshActionGroup#update (com.intellij.openapi.externalSystem.autoimport.ProjectRefreshActionGroup) 
2021-12-30 14:18:51,641 [55884898]   WARN - ctionSystem.impl.ActionUpdater - 234 ms to grab EDT for #update (com.intellij.openapi.wm.impl.ToolWindowHeader$1) 
2021-12-30 14:18:52,370 [55885627]   WARN - ifydialog.HNotificationManager - Exception during Screen Designer activation. <a href="#">See log for details</a>. 
java.lang.reflect.InvocationTargetException
	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.haulmont.jmixstudio.ui.sd.layout.model.baseprop.StringComponentProperty.setValue(StringComponentProperty.java:81)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.setComponentProperties(ComponentModelMapper.java:644)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:400)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateNestedModel(ComponentModelMapper.java:537)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:486)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateNestedModel(ComponentModelMapper.java:537)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:486)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateNestedModel(ComponentModelMapper.java:537)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:486)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateNestedModel(ComponentModelMapper.java:537)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:486)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateNestedModel(ComponentModelMapper.java:537)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ComponentModelMapper.updateComponentFromModel(ComponentModelMapper.java:486)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ScreenLayoutDesigner.lambda$updateComponentFromModel$1(ScreenLayoutDesigner.java:175)
	at com.haulmont.jmixstudio.ui.util.UiWrapper.lambda$runComponent$0(UiWrapper.java:22)
	at com.haulmont.jmixstudio.ui.util.UiWrapper.lambda$compute$2(UiWrapper.java:53)
	at com.vaadin.ui.UI.accessSynchronously(UI.java:1392)
	at com.haulmont.jmixstudio.ui.util.UiWrapper.compute(UiWrapper.java:51)
	at com.haulmont.jmixstudio.ui.util.UiWrapper.computeComponent(UiWrapper.java:35)
	at com.haulmont.jmixstudio.ui.util.UiWrapper.runComponent(UiWrapper.java:21)
	at com.haulmont.jmixstudio.intellij.ui.sd.designer.ScreenLayoutDesigner.lambda$updateComponentFromModel$2(ScreenLayoutDesigner.java:174)
	at com.intellij.openapi.project.DumbServiceImpl.lambda$smartInvokeLater$9(DumbServiceImpl.java:530)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
	at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:348)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:82)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:131)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:47)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:187)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:760)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:492)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.NullPointerException
	at com.haulmont.jmixstudio.ui.sd.layout.gui.impl.meta.StudioTableComponent.setPropertyValue(StudioTableComponent.java:152)
	at com.haulmont.jmixstudio.ui.sd.layout.gui.impl.meta.StudioTableComponent.setDataContainer(StudioTableComponent.java:405)
	... 55 more
2021-12-30 14:18:52,377 [55885634]   WARN - ctionSystem.impl.ActionUpdater - 302 ms to grab EDT for CodeWithMeUsersAction#update (com.jetbrains.rd.platform.codeWithMe.toolbar.CodeWithMeUsersAction)

Listen to EntityChangedEvent with EntityChangedEvent.Type.DELETED type.
→ Is it viable to bring this in the wizard?

For Action, use the following import: import io.jmix.ui.action.Action;

The ByteArrayDownloadProvider now has a different constructor indeed, due to removing AppBeans class in Jmix. You can use the following code:

    @Autowired
    private ExportDisplay exportDisplay;
    @Autowired
    private UiProperties uiProperties;
    @Autowired
    private CoreProperties coreProperties;

    private void download(byte[] bytes) {
        exportDisplay.show(
                new ByteArrayDataProvider(
                        bytes,
                        uiProperties.getSaveExportedByteArrayDataThresholdBytes(),
                        coreProperties.getTempDir()),
                "some name"
        );
    }

In the next Jmix patch release, we’ll add the old constructor to the ByteArrayDataProvider of the jmix-cuba module, see https://github.com/Haulmont/jmix-cuba/issues/121

1 Like

Thank you so much Konstantin. Now I have most of it to migrate but still need to figure out the fix for the screen error that I shared in point 2 of my previous message. Any guidance to the fix?

Hello @mortoza_khan

Could you provide a screen descriptor on which the exception is reproduced?

Regards,
Gleb