Verbesserung
Wichtig
Detail
Fehlerbehebung
Wichtig
Detail
#27393
Baum - Tabellen: Selektion von mehrfach vorkommenden Zeilenobjekten expandiert Teilbäume / wählt falsche Zeile
#27424
"Container" für neue Grid-Zeile nicht mandatory, aber versteckte NPE, wenn Wert gelöscht wird
Fehlerbehebung
com.top_logic.knowledge.indexing.lucene.ContentRetrievalFailedException: Retrieving the description failed! at com.top_logic.knowledge.indexing.lucene.LuceneThread.getDescription(LuceneThread.java:907) at com.top_logic.knowledge.indexing.lucene.LuceneThread.indexContent(LuceneThread.java:899) at com.top_logic.knowledge.indexing.lucene.LuceneThread.indexQueue(LuceneThread.java:831) at com.top_logic.knowledge.indexing.lucene.LuceneThread.workOnQueues(LuceneThread.java:719) at com.top_logic.knowledge.indexing.lucene.LuceneThread$1.run(LuceneThread.java:704) at com.top_logic.knowledge.indexing.lucene.LuceneThread$1.run(LuceneThread.java:699) at com.top_logic.basic.thread.ThreadContextManager.inInteractionInternal(ThreadContextManager.java:810) at com.top_logic.basic.thread.ThreadContextManager.inSystemInteractionInternal(ThreadContextManager.java:832) at com.top_logic.basic.thread.ThreadContextManager.inSystemInteraction(ThreadContextManager.java:294) at com.top_logic.basic.thread.ThreadContext.inSystemContext(ThreadContext.java:156) at com.top_logic.knowledge.indexing.lucene.LuceneThread.workInSystemContext(LuceneThread.java:699) at com.top_logic.knowledge.indexing.lucene.LuceneThread.workHandlingReaderWriter(LuceneThread.java:665) at com.top_logic.knowledge.indexing.lucene.LuceneThread.workSurvivingExceptions(LuceneThread.java:653) at com.top_logic.knowledge.indexing.lucene.LuceneThread.work(LuceneThread.java:615) at com.top_logic.knowledge.indexing.lucene.LuceneThread.run(LuceneThread.java:78) Caused by: java.lang.ClassCastException: class com.top_logic.basic.util.ResKey$LiteralKey cannot be cast to class java.lang.String (com.top_logic.basic.util.ResKey$LiteralKey is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap') at com.top_logic.model.TLNamed.getName(TLNamed.java:34) at com.top_logic.knowledge.indexing.DefaultIndexingService$WrapperContentObject.getDescription(DefaultIndexingService.java:836) at com.top_logic.knowledge.indexing.lucene.LuceneThread.getDescription(LuceneThread.java:904) ... 14 more
Analyse
Implementierungsklassen von persistenten Objekten implmentieren standardmäßig tl:com.top_logic.model.TLNamed, obwohl das zugehörige Modell kein oder kein kompatibles Namensattribut besitzt. Deklariert man in einer Klasse ein Namensattribut das nicht vom Typ String ist, so wird trotzdem für die Darstellung des Objektes die String getName()-Methode gerufen, die versucht den Wert des Namensattributs nach String zu casten. Das schlägt fehl.
Verbesserung
In tl:com.top_logic.model.TLNamed den Wert des Namensattributs über einen passenden tl:LabelProvider in einen String umwandeln, wenn der Wert kein String ist.
Test
- Typ mit verpflichtendem "Internationalisierte Zeichenkette" als name-Attribut anlegen.
- Im Instanzeneditor eine Instanz des Typs anlegen.
- com.top_logic.demo/src/test/java/test/com/top_logic/demo/scripted/model/attribute/TestI18NStringAsName.script.xml