jmix
jmix copied to clipboard
StackOverflowError occurs in EntityChangedEvent listener when DynamicAttributesPanel is used in editor
Description
Project contains EntityChangedEvent handler for Task entity. It does the same logic like in the documentation example: doc link.
Demo project: jmixpm.zip
Steps to reproduce
- Download demo project above.
- Create
Projectentity instance without tasks. - Edit it again and create Task:
- fill task name
- fill project field
- fill assignee
- select category and fill the field
- Save Task and Project.
The part of stacktrace that is repeated
at com.company.jmixpm.app.TaskChangedListener.onTaskChangedEvent(TaskChangedListener.java:43)
at jdk.internal.reflect.GeneratedMethodAccessor208.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344)
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229)
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
at io.jmix.eclipselink.impl.EntityChangedEventManager.publish(EntityChangedEventManager.java:164)
at io.jmix.eclipselink.impl.JpaDataStore.beforeSaveTransactionCommit(JpaDataStore.java:451)
at io.jmix.core.datastore.AbstractDataStore.save(AbstractDataStore.java:229)
at io.jmix.eclipselink.impl.JpaDataStore.save(JpaDataStore.java:227)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.saveContextToStore(UnconstrainedDataManagerImpl.java:257)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.save(UnconstrainedDataManagerImpl.java:216)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.save(UnconstrainedDataManagerImpl.java:135)
at com.company.jmixpm.app.TaskChangedListener.onTaskChangedEvent(TaskChangedListener.java:43)
at jdk.internal.reflect.GeneratedMethodAccessor208.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344)
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:229)
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:166)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378)
at io.jmix.eclipselink.impl.EntityChangedEventManager.publish(EntityChangedEventManager.java:164)
at io.jmix.eclipselink.impl.JpaDataStore.beforeSaveTransactionCommit(JpaDataStore.java:451)
at io.jmix.core.datastore.AbstractDataStore.save(AbstractDataStore.java:229)
at io.jmix.eclipselink.impl.JpaDataStore.save(JpaDataStore.java:227)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.saveContextToStore(UnconstrainedDataManagerImpl.java:257)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.save(UnconstrainedDataManagerImpl.java:216)
at io.jmix.core.impl.UnconstrainedDataManagerImpl.save(UnconstrainedDataManagerImpl.java:135)
at com.company.jmixpm.app.TaskChangedListener.onTaskChangedEvent(TaskChangedListener.java:43)