Major
Detail
Major
Detail
Scenario
A bidirectional model transformation is declared in the layout, where the input value of the transformation corresponds to an interface type from which the target model is retrieved in the transformation expression:
model->$model.get(`example:ContainerInterface#containmentAttr`)
The layout is published.
Now, as part of a refactoring, this transformation is removed from the layout (the view is deleted) and also the type "ContainmentInterface", which is no longer needed, is deleted from the model. Everything works as expected at first.
Problem
If now the session is terminated (timeout, logout) before this layout change has been published again, a new login is no longer possible. Also a restart of the server on this data state is now no longer possible.
This is because the remote model transformation still exists in the previously published layout and is initialized on both restart and login. Thereby (in the constructor of BidirectionalTransformLinkingByExpression) the specified transformation expression is compiled, but this fails, because there is a reference to the model type which does not exist any more.
Solution
Ensure robustness against this error. The application must start despite misconfiguration of individual views and allow correction of the errors.
Test
No test.