minor
defect
major
minor
minor
#29393
URL routing in the React view layer is broken: ForwardingReactContext does not delegate getRouteManager()
The browser URL is no longer synchronized with the navigation state in the React view layer (observed in the React demo): When loading, no route segment is appended to /view/; clicks on sidebar entries and tabs do not change the URL; deep links are not resolved; and the browser’s Back and Forward buttons have no effect. The server does not send any RouteChangeEvent via SSE.
Cause: `ForwardingReactContext ` delegates 9 of the 10 methods from `ReactContext `— `getRouteManager()` is missing and falls back to the interface’s default, which returns `null`. Since f61fe2e15f (Ticket #29108, Snackbar-ErrorSink), such a wrapper (ViewServlet.withWindowErrorSink) has existed between the DefaultReactContext (which owns the RouteManager ) and the DefaultViewContext. As a result , all controls created below this level see `getRouteManager() == null`; `ReactControl.onAttach() ` silently skips registering the `RoutingParticipant`s (sidebar, tab bar), so the `RouteManager` never composes a URL.
Fix: ForwardingReactContext#getRouteManager() delegates to the delegate. To prevent this from recurring, a regression test uses reflection to verify that ForwardingReactContext overrides every method of ReactContext —any interface method added in the future (even with a default value) will therefore fail the test until it is delegated.