Wichtig
Detail
Detail
#26663
TreeGridComponent: Selektion wird nach Verwerfen einer transienten Zeile nicht zurück gesetzt
#27027
Deklarative Formulare: SelectField verschwindet nach Upload, wenn Optionsliste von mandatory Property abhängig ist
#27090
TreeTableComponent soll initial die erste sichtbare Zeile selektieren, wenn initial eine Zeile selektiert werden soll
Fehlerbehebung
Detail
#26992
Asynchrones Laden von Layouts für Themes crasht kurz laufende Testfälle
Führt man einen Testfall einzeln aus, z.B. /com.top_logic.bpe.app/src/test/java/test/com/top_logic/bpe/app/scripted/formeditor/TestForeignObjects.script.xml, dann läuft dieser zwar grün durch, aber das Herunterfahren crasht, weil Errors geloggt werden:
junit.framework.AssertionFailedError: Errors (2) logged during startup: com.top_logic.gui.ThemeFactory module not started. com.top_logic.basic.thread.ThreadContextManager module not started. at test.com.top_logic.layout.scripting.ApplicationTestSetup.basicRun(ApplicationTestSetup.java:89) at test.com.top_logic.basic.NamedTestSetup$1.protect(NamedTestSetup.java:35) at junit.framework.TestResult.runProtected(TestResult.java:124) at test.com.top_logic.basic.NamedTestSetup.run(NamedTestSetup.java:39) at test.com.top_logic.basic.NamedTestDecorator.basicRun(NamedTestDecorator.java:40) at test.com.top_logic.basic.NamedTestSetup$1.protect(NamedTestSetup.java:35) ... at junit.framework.TestResult.runProtected(TestResult.java:124) at test.com.top_logic.basic.NamedTestSetup.run(NamedTestSetup.java:39) at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24) at junit.extensions.TestSetup$1.protect(TestSetup.java:21) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.extensions.TestSetup.run(TestSetup.java:25) at test.com.top_logic.basic.LoggingTestSetup.run(LoggingTestSetup.java:207) ... Caused by: java.lang.IllegalStateException: com.top_logic.gui.ThemeFactory module not started. at com.top_logic.basic.module.ModuleUtil.invalidStateNotStarted(ModuleUtil.java:1035) at com.top_logic.basic.module.BasicRuntimeModule.getImplementationInstance(BasicRuntimeModule.java:90) at com.top_logic.gui.ThemeFactory.getInstance(ThemeFactory.java:90) at com.top_logic.gui.ThemeFactory.getTheme(ThemeFactory.java:81) at com.top_logic.layout.processor.LayoutResolver.newRuntimeResolver(LayoutResolver.java:339) at com.top_logic.layout.editor.DynamicComponentDefinition.createLayoutResolver(DynamicComponentDefinition.java:261) at com.top_logic.layout.editor.DynamicComponentDefinition.createTemplateBody(DynamicComponentDefinition.java:253) at com.top_logic.layout.editor.DynamicComponentDefinition.createComponentConfig(DynamicComponentDefinition.java:330) at com.top_logic.layout.editor.LayoutTemplateUtils.createUnqualifiedComponentConfig(LayoutTemplateUtils.java:162) at com.top_logic.layout.editor.LayoutTemplateUtils.getInstantiatedLayoutTemplate(LayoutTemplateUtils.java:139) at com.top_logic.mig.html.layout.LayoutTemplateCall.createLayoutConfiguration(LayoutTemplateCall.java:43) at com.top_logic.mig.html.layout.LayoutTemplateCall.<init>(LayoutTemplateCall.java:34) at com.top_logic.mig.html.layout.ComponentConfigurationBuilder.createTemplateCallLayout(ComponentConfigurationBuilder.java:303) at com.top_logic.mig.html.layout.ComponentConfigurationBuilder.createLayoutFromTemplate(ComponentConfigurationBuilder.java:187) at com.top_logic.mig.html.layout.ComponentConfigurationBuilder.createLayout(ComponentConfigurationBuilder.java:133) at com.top_logic.mig.html.layout.ComponentConfigurationBuilder.build(ComponentConfigurationBuilder.java:123) at com.top_logic.mig.html.layout.LayoutStorage.createLayout(LayoutStorage.java:503) at com.top_logic.mig.html.layout.LayoutStorage.installLayout(LayoutStorage.java:454) at com.top_logic.mig.html.layout.LayoutStorage.installLayout(LayoutStorage.java:436) at com.top_logic.mig.html.layout.LayoutStorage$1.run(LayoutStorage.java:413) at com.top_logic.mig.html.layout.LayoutStorage$1.run(LayoutStorage.java:1) at com.top_logic.gui.MultiThemeFactory.withTheme(MultiThemeFactory.java:237) at com.top_logic.mig.html.layout.LayoutStorage.fetchAvailableLayouts(LayoutStorage.java:403) at com.top_logic.mig.html.layout.LayoutStorage.loadLayoutsForNonDefaultThemes(LayoutStorage.java:256) at com.top_logic.mig.html.layout.LayoutStorage.lambda$2(LayoutStorage.java:240) at com.top_logic.basic.thread.ThreadContextManager.inInteractionInternal(ThreadContextManager.java:312) at com.top_logic.basic.thread.ThreadContextManager.inSystemInteractionInternal(ThreadContextManager.java:346) at com.top_logic.basic.thread.ThreadContextManager.inSystemInteraction(ThreadContextManager.java:339) at com.top_logic.mig.html.layout.LayoutStorage.lambda$1(LayoutStorage.java:239) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) 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.lang.Thread.run(Thread.java:829)
Das Problem ist, dass der Testfall nach der Ausführung die Anwendung wieder herunterfährt, aber in der herunterfahrenden Anwendung noch Threads laufen, die besagte Layouts laden. Zwar ist bereits im LayoutStorage ansatzweise Vorsorge dagegen getroffen worden, das funktioniert aber nicht.
Lösung
Layout-Storage nicht herunterfahren, solage sein Thread für das Laden der Layouts noch läuft.
Test
- Kein Test.