major
minor
major
minor
#26382
Error messages "Duplicate tag name..." when starting an application in the IDE from a TL-Studio
#26405
TTypeRewriter logs warning "Unable to resolve items by external reference" also unnecessarily
#26431
Changed superclass relationship leads to changed attribute list in the form editor only after a restart
#26484
In-app template for grid and tables: Function "Verifier for use as list item" does not get component model
#26536
When rendering HTML from TLScript expressions, configured renderers are not taken into account
#26797
Transaction with user input: invisible properties of the form model cannot be assigned values (initialized)
#26885
Constraints on declarative forms with arguments from a container reference lead to errors for new elements
#26921
ClassCastException when evaluating security rules that refer to (non-structuredElement) singletons of a module.
#26922
With generated subject classes, a default provider of an attribute in a non-structure class does not get a create context
#26988
In-app documentation generator does not extract documentation for overwritten config properties
#27027
Declarative forms: SelectField disappears after upload if option list depends on mandatory property
#27042
MaintenanceJspBase should write to the log first, then to the client, instead of the other way around.
defect
minor
#26992
Asynchronous loading of layouts for themes crashes short-running test cases
If you run a test case individually, e.g., /com.top_logic.bpe.app/src/test/java/test/com/top_logic/bpe/app/scripted/formeditor/TestForeignObjects.script.xml, it will run successfully (showing "green"), but the shutdown process crashes because errors are logged:
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)
The problem is that after execution, the test case shuts down the application, but threads that load the layouts in question are still running in the shutting-down application. Although some precautions have already been taken against this in LayoutStorage, they do not work.
Solution
Do not shut down LayoutStorage as long as its thread for loading the layouts is still running.
Test
- No test.