TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.9.0
  4. #28071

7.9.0
TopLogic Release

2024-10-04

Enhancement

Major
#26586
Direct updating of calculated attributes in forms and grids when editing input values
#26702
TLScript: sendMail() function
#27216
Attribute annotation "fallback value" as replacement in case of empty value
#27457
Conditional formatting in tables/grids/forms
#27784
Java 17 as a development environment
#28122
Layout editor: Generalized form templates
#28151
TLScript: new ParseCSV function
#28263
Allow to specify the deletion policy for a reference in the model
Detail
#27920
Removal of old themes and adaptation to the core theme
#28144
Display button line via template, no more button lines in administration views
#28214
Update pac4j-oidc
#28292
Set tl-license-professional version in tl-parent-all
Nice to have
#28282
tl-demo: Example for TreeGrid with synthetic root node

Bugfix

Major
#28197
Sorting a composition table by a column with SelectField leads to ClassCastException
Detail
#27787
Missing context suggestions for TL script functions with underscore in the name
#28071
Deletion of inline composition elements in the form fails if deleted object triggers further deletions
#28175
Script Recorder: Saving scripts does not display the file name field
#28184
Eclipse settings: Update of the webfragment version to 6.0
#28283
Migration processor for cleaning up multiple references to the same composition
#28288
Dynamic visibility requires fields for dependent attributes
Bugfix

Detail

#28071

Deletion of inline composition elements in the form fails if deleted object triggers further deletions

CompositionDifaV7FormContext

Background

The following model:

"A "s have "B "s and "B "s have "C "s. Each ordered as a composition, multiple values. All classes have a "name" attribute of type String.

A form shows an instance of A with the fields "name" and "B "s. "B "s are displayed as a table that only has the column "name":

The form context of the form is built recursively via the composition hierarchy, so in addition to the fields of A, it also contains those of the linked "B "s and the contained "C "s.

Problem

If a row (an instance of B) is deleted from the table, saving the change fails because the fields of all linked instances of C are also contained in the form context and are checked for modifiability, although these instances were deleted as parts of B and therefore cannot be modified in principle:

Caused by: com.top_logic.knowledge.wrap.exceptions.WrapperRuntimeException: Target object is deleted: DeletedObject(DBKnowledgeObject[wrapper: AttributedWrapper(type:Test:C, id: GenericObject:623170, name: A1.B1.C3)]) at com.top_logic.element.meta.AttributeOperations.checkAlive(AttributeOperations.java:346) at com.top_logic.element.meta.AttributeOperations.checkUpdate(AttributeOperations.java:240) at com.top_logic.element.meta.AttributeUpdate$1.checkUpdate(AttributeUpdate.java:109) at com.top_logic.element.meta.AttributeUpdate.checkUpdate(AttributeUpdate.java:681) at com.top_logic.element.meta.form.overlay.FormObjectOverlay.store(FormObjectOverlay.java:303) at com.top_logic.element.meta.AttributeUpdateContainer.store(AttributeUpdateContainer.java:659) at com.top_logic.element.meta.form.AttributeFormContext.store(AttributeFormContext.java:143) at com.top_logic.element.meta.form.component.AbstractApplyAttributedCommandHandler.saveMetaAttributes(AbstractApplyAttributedCommandHandler.java:48) at com.top_logic.element.meta.form.component.DefaultApplyAttributedCommandHandler.storeChanges(DefaultApplyAttributedCommandHandler.java:29) at com.top_logic.layout.form.component.AbstractApplyCommandHandler.applyChanges(AbstractApplyCommandHandler.java:196)

Note: In order to reproduce the problem, further references with a set deletion strategy are required, which result in other objects being deleted when parts are deleted from compositions. See test case.

The problem can also be reproduced in the instance tab:

Caused by: com.top_logic.knowledge.wrap.exceptions.WrapperRuntimeException: Target object is deleted: DeletedObject(DBKnowledgeObject[wrapper: AttributedWrapper(type:Test:C, id: GenericObject:623170, name: A1.B1.C3)]) at com.top_logic.element.meta.AttributeOperations.checkAlive(AttributeOperations.java:346) at com.top_logic.element.meta.AttributeOperations.checkUpdate(AttributeOperations.java:240) at com.top_logic.element.meta.AttributeUpdate$1.checkUpdate(AttributeUpdate.java:109) at com.top_logic.element.meta.AttributeUpdate.checkUpdate(AttributeUpdate.java:681) at com.top_logic.element.meta.form.overlay.FormObjectOverlay.store(FormObjectOverlay.java:303) at com.top_logic.element.meta.AttributeUpdateContainer.store(AttributeUpdateContainer.java:659) at com.top_logic.element.meta.form.AttributeFormContext.store(AttributeFormContext.java:143) at com.top_logic.element.layout.grid.DefaultGridApplyHandler.storeChanges(DefaultGridApplyHandler.java:30) at com.top_logic.element.layout.grid.GridComponent.storeRowValues(GridComponent.java:1363)

Test

  • /com.top_logic.demo/src/test/java/test/com/top_logic/demo/scripted/model/attribute/composition/TestDeleteNestedCompositions.script.xml
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • DE
  • Login