Enhancement
Critical
Major
Detail
Detail
Major
#25598
NPE in TL-Sync when sending overwritten attributes whose definition is not exported.
There is a type T1 with an attribute A`, and a derivative `T2 with an override of A*. T1 is not annotated as exported. T2 is annotated as exported.
Error
When sending a T2, a NullPointerException occurs in ModelBasedExportConfiguration.getAttributeName(ObjectKey). The reason is that there is no entry in the ModelBasedExportConfiguration._attributeIdToName map for the ObjectKey representing the T1#A attribute. This is because neither the type T1 nor the attribute A` are annotated as "exported". Only the derivation `T2 and its attribute A*. But it does not query T2#A*, because only the definition of an attribute is ever used in the database, even if the attribute is overwritten.
Noticed in EPP. There are abstract supertypes of which some derivatives are exported and others imported. Therefore, the supertypes can be annotated neither as "exported" nor as "imported".
Code Migration
Value mappings must be moved to the definition of their attribute, that is, to the original definition. For technical reasons, value mappings are not found at attribute overrides. Changing this is too complex.
Test
test.com.top_logic.kafka.services.TestTLSyncAnnotationInheritance