Detail
#26379
Replay-Migration schlägt fehl, weil die DependencyInjection nicht stattfindet
Die tl:EventRewriter für die Migration bekommen zum Beispiel das Log oder das tl:MORepository per Dependency Injection. Leider wird das "Inject" aber nicht für sie ausgeführt, weil sie zur falschen Zeit mit dem falschen tl:InstantiationContext erzeugt werden. Sie müssten in DataMigration.createInsertSQL erzeugt werden. Dort wird der tl:GuiceContext erstellt und inject aufgerufen. Statt dessen sind sie aber als tl:InstanceFormat indirekt in der com.top_logic.knowledge.service.migration.MigrationConfig enthalten. Und diese wird mittels MigrationUtil.buildMigration in ImportDataDialog.dumpUploaded(Object) eingelesen. Der falsche tl:InstantiationContext wird hier erzeugt: MigrationUtil.readMigrationConfig
Bei der Umsetzung dieses Ticket muss beachtet werden, dass es zwei Aufruf-Pfade für die Migration gibt: Zum einen die JSP und zum anderen das Starten der Anwendung. Siehe dazu die Aufrufe des tl:DataMigration Konstruktors.
Des weiteren sollen natürlich Regression-Tests eingeführt werden, welche die Dependency Injection in beiden Fällen testen.
Test
- test-app-rewrite aus #26798