Detail
Detail
Hintergrund
Wird eine Kopie eines historischen Objekts erstellt, werden die Werte automatisch vom Original in das neu erstellte Objekt übernommen.
Problem
Bei Referenz-Werten (insb. auch ENUMS) liegen die Werte in der Revision des Originalobjekts vor und können daher nicht direkt in die Kopie übernommen werden.
Daher führt die Kopie eines historischen Objekts mit nicht leeren Referenz-Attributen zu der Fehlermeldung "Failed to set Value ... must be a current revision".
Lösungsvorschlag
Wenn eine Referenz explizit als "historisch" deklariert ist, sollten die Werte direkt vom Original in die Kopie übernommen werden.
Sonst müssten die Werte "inCurrent()" Revision an der Kopie gesetzt werden bzw. wenn ein Wertobjekt nicht mehr existiert, null.
Das Commit der Kopie darf weiterhin fehlschlagen, wenn ein Pflichtfeld der Kopie nicht automatisch belegt werden konnte. Um die Behandlung dieses Falls müsste sich der Aufrufer kümmern.
Test
- test.com.top_logic.model.search.expr.TestSearchExpression.testCopy()