Verbesserung
Top-Thema
Detail
Wichtig
Detail
Wichtig
#25598
NPE in TL-Sync beim Senden von überschriebenen Attributen, deren Definition nicht exportiert wird
Es gibt einen Typ T1 mit einem Attribut A`, und eine Ableitung `T2 mit einer Überschreibung von A*. T1 ist nicht als exportiert annotiert. T2 ist als exportiert annotiert.
Fehler
Beim Senden eines T2 kommt es zu einer NullPointerException in ModelBasedExportConfiguration.getAttributeName(ObjectKey). Ursache ist, dass für den ObjectKey, der das Attribute T1#A repräsentiert kein Eintrag in der Map ModelBasedExportConfiguration._attributeIdToName existiert. Denn weder der Typ T1 noch das Attribute A` sind als "exportiert" annotiert. Nur die Ableitung `T2 und dessen Attribut A*. Aber es wird nicht T2#A* angefragt, weil in der Datenbank immer nur die Definition eines Attributs genutzt wird, auch wenn das Attribut überschrieben ist.
Aufgefallen in EPP. Dort gibt es abstrakte Obertypen von denen manche Ableitungen exportiert sind und andere importiert. Daher können die Obertypen weder als "exportiert" noch als "importiert" annotiert sein.
Code Migration
Value-Mappings müssen an die Definition ihres Attributes verschoben werden, also an die ursprüngliche Definition. Aus technischen Gründen werden Value-Mappings an Überschreibungen von Attributen nicht gefunden. Das zu ändern ist zu aufwendig.
Test
test.com.top_logic.kafka.services.TestTLSyncAnnotationInheritance