Since Random can't be mocked in jdk17+, replace the settable Random with Supplier<Double>. Production should still use ThreadLoacalRandom unless the supplier is set.
This moves the removal of GATEWAY_PREDICATE_PATH_CONTAINER_ATTR to ServerWebExchangeUtils.handle() which is now used in SpringCloudCircuitBreakerFilterFactory and ForwardRoutingFilter.
Fixes gh-2950
* Add metadata requestParam to /refresh specific routes
* Added requestParam that will be included in the event as a map of key:value pairs
* ScopedRefreshRoutesEvent: RefreshRoutesEvent was extended hierarchically to add metadata for filtering
* Modify CachingRouteLocator to filter in case the incoming event is ScopedRefreshRoutesEvent
* Change refresh by group for covering deletion
When all the routes in a group were deleted, the refresh were not done
---------
Co-authored-by: Spencer Gibb <sgibb@pivotal.io>
* Add a new endpoint POST /routes
A list of RouteDefinition can be sent to /routes using POST method to persist multiple routes by a single request.
Validation is done before persisting any RouteDefinition
Using
```yml
- StripPrefix=0
- LocalResponseCache=3m,1MB
- RemoveJsonAttributesResponseBody=args,data,files,Sec-Fetch-Dest,true
uri: https://httpbin.org
```
the Flux<DataBuffer> was replaced by other type, provoking a ClassCastException