major
minor
defect
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
defect
When a form is created using the Form Editor and the "External Objects" option is selected, you can configure another form to display the external objects.
If this happens, a NullPointerException occurs:
Caused by: java.lang.NullPointerException
at com.top_logic.element.layout.formeditor.FormEditorUtil.createAnotherMetaAttribute(FormEditorUtil.java:98)
at com.top_logic.element.layout.formeditor.FormEditorUtil.addAnotherMetaAttribute(FormEditorUtil.java:157)
at com.top_logic.element.layout.formeditor.implementation.FieldDefinitionTemplateProvider.createFormMember(FieldDefinitionTemplateProvider.java:391)
at com.top_logic.element.layout.formeditor.implementation.FieldDefinitionTemplateProvider.addMember(FieldDefinitionTemplateProvider.java:339)
at com.top_logic.element.layout.formeditor.implementation.FieldDefinitionTemplateProvider.createDisplayTemplate(FieldDefinitionTemplateProvider.java:140)
at com.top_logic.model.form.implementation.AbstractFormElementProvider.createDesignTemplate(AbstractFormElementProvider.java:139)
at com.top_logic.model.form.implementation.FormElementTemplateProvider.createTemplate(FormElementTemplateProvider.java:42)
at com.top_logic.model.form.implementation.AbstractFormContainerProvider.createContentTemplate(AbstractFormContainerProvider.java:84)
at com.top_logic.model.form.implementation.FormDefinitionTemplateProvider.createDesignTemplate(FormDefinitionTemplateProvider.java:63)
at com.top_logic.element.layout.formeditor.FormEditorEditorControl.createTemplate(FormEditorEditorControl.java:312)
at com.top_logic.element.layout.formeditor.FormEditorEditorControl.writeContent(FormEditorEditorControl.java:279)
at com.top_logic.element.layout.formeditor.FormEditorEditorControl.internalWrite(FormEditorEditorControl.java:273)
at com.top_logic.layout.basic.AbstractControlBase$ScopedRenderer.write(AbstractControlBase.java:1306)
at com.top_logic.layout.basic.AbstractControlBase$ScopedRenderer.write(AbstractControlBase.java:1293)
at com.top_logic.layout.basic.AbstractDisplayContext.renderScoped(AbstractDisplayContext.java:109)
at com.top_logic.layout.basic.AbstractControlBase.write(AbstractControlBase.java:550)
Cause
Since there are no objects in design mode, `tl:FormField`s are created for `tl:AttributeUpdate` in "create" mode. Since no identifiers exist for the objects of the base type and the "foreign type" that are supposed to be created, the system attempts to use the same transient object, which fails.
Solution
Use a "domain" when creating the AttributeUpdate.
Test
- Open the form editor for a type X` != `User Account.
- Select "Objects".
- Here, select the User Account type.
- Configure the form.
- Select the "Username" attribute here.
- Add an attribute of type X.
- Expected result: No NullPointerException occurs.