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
#19344
Attributes of type TLEnumeration return collections despite multiple=false
Attributes that store a single tl:TLEnumeration object always return it as a collection. This is inconsistent with all other TLTypes.
See also:
- StorageDetail.isCollectionValued(MetaAttribute)
- TLModelUtil.needsCollectionCompatibility(TLStructuredTypePart)
Solution
Attributes of type `tl:TLEnumeration` return one or no `tl:TLClassifier` when `multiple="false"`, and a collection of `tl:TLClassifier`—which may be empty or non-empty—when `multiple="true"`.
Code Migration
- Check calls to TLModelUtil.needsCollectionCompatibility(TLStructuredTypePart). Remove the workaround here that involves adding the value to a singleton list when setting a value, or extracting a list from persistence when retrieving the value.
- ReplaceStorageImplementation.isCollectionValued(TLStructuredTypePart) with TLStructuredTypePart.isMultiple().
- Regenerate the wrapper if an attribute is of type TLEnumeration.
Data Migration
The attributes projectTemplate:projectTemplate.Project#projectState, projectTemplate:projectTemplate.Activity#state, and projectTemplate:projectTemplate.Issue#state must be defined as non-multiple (only necessary when using tl-pos). The migration script Ticket_19344_state_attributes_single.migration.xml in doc:AutomaticDataMigration implements this.
Test
Refactoring. No test.