major
minor
defect
major
minor
minor
#29393
URL-Routing der React-View-Schicht defekt: ForwardingReactContext delegiert getRouteManager() nicht
Die Browser-URL wird in der React-View-Schicht nicht mehr mit dem Navigationszustand synchronisiert (beobachtet in der React-Demo): Beim Laden wird kein Routen-Segment an /view/ angehängt, Klicks auf Sidebar-Einträge und Tabs ändern die URL nicht, Deep-Links werden nicht aufgelöst und Browser-Zurück/Vorwärts ist wirkungslos. Der Server sendet keinerlei RouteChangeEvent über SSE.
Ursache: ForwardingReactContext delegiert 9 der 10 Methoden von ReactContext — getRouteManager() fehlt und fällt auf den default der Schnittstelle zurück, der null liefert. Seit f61fe2e15f (Ticket #29108, Snackbar-ErrorSink) liegt zwischen dem DefaultReactContext (der den RouteManager besitzt) und dem DefaultViewContext ein solcher Wrapper (ViewServlet.withWindowErrorSink). Alle darunter erzeugten Controls sehen dadurch getRouteManager() == null; ReactControl.onAttach() überspringt die Registrierung der RoutingParticipant`s (Sidebar, Tab-Leiste) stillschweigend, sodass der `RouteManager nie eine URL komponiert.
Behebung: ForwardingReactContext#getRouteManager() delegiert an den Delegaten. Zur Absicherung gegen Wiederholung prüft ein Regressionstest per Reflection, dass ForwardingReactContext jede Methode von ReactContext überschreibt — eine künftig ergänzte Schnittstellenmethode (auch mit default) schlägt damit im Test fehl, bis sie delegiert wird.