diff --git a/src/Management/src/Endpoint/Actuators/RouteMappings/RouteMappingsEndpointMiddleware.cs b/src/Management/src/Endpoint/Actuators/RouteMappings/RouteMappingsEndpointMiddleware.cs index 7b99dad36d..79de77e011 100644 --- a/src/Management/src/Endpoint/Actuators/RouteMappings/RouteMappingsEndpointMiddleware.cs +++ b/src/Management/src/Endpoint/Actuators/RouteMappings/RouteMappingsEndpointMiddleware.cs @@ -17,9 +17,6 @@ internal sealed class RouteMappingsEndpointMiddleware( IRouteMappingsEndpointHandler endpointHandler, IOptionsMonitor managementOptionsMonitor, ILoggerFactory loggerFactory) : EndpointMiddleware(endpointHandler, managementOptionsMonitor, loggerFactory) { - // There is no difference between v2 and v3 responses. This override is a workaround for Spring Boot Admin: https://github.com/codecentric/spring-boot-admin/issues/4001. - private protected override string ContentType => "application/vnd.spring-boot.actuator.v2+json"; - protected override async Task InvokeEndpointHandlerAsync(object? request, CancellationToken cancellationToken) { return await EndpointHandler.InvokeAsync(request, cancellationToken); diff --git a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminClientHostedService.cs b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminClientHostedService.cs index 7efd0a3e77..e5728e71b3 100644 --- a/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminClientHostedService.cs +++ b/src/Management/src/Endpoint/SpringBootAdminClient/SpringBootAdminClientHostedService.cs @@ -49,6 +49,11 @@ public async Task StartAsync(CancellationToken cancellationToken) { SpringBootAdminClientOptions clientOptions = _clientOptionsMonitor.CurrentValue; + if (clientOptions.Url == null) + { + throw new InvalidOperationException("Spring Boot Admin Server Url must be provided in options."); + } + _logger.LogInformation("Registering with Spring Boot Admin Server at {Url}", clientOptions.Url); if (clientOptions.ApplicationName == null || !Uri.TryCreate(clientOptions.BasePath, UriKind.Absolute, out Uri? baseUri)) @@ -69,7 +74,7 @@ public async Task StartAsync(CancellationToken cancellationToken) } catch (Exception exception) when (!exception.IsCancellation()) { - _logger.LogError(exception, "Error connecting to Spring Boot Admin Server: {Message}", exception.Message); + _logger.LogError(exception, "Error connecting to Spring Boot Admin Server."); return; } @@ -132,7 +137,7 @@ public async Task StopAsync(CancellationToken cancellationToken) } catch (Exception exception) when (!exception.IsCancellation()) { - _logger.LogError(exception, "Error connecting to Spring Boot Admin Server: {Message}", exception.Message); + _logger.LogError(exception, "Error connecting to Spring Boot Admin Server."); return; } diff --git a/src/Management/test/Endpoint.Test/ActuatorContentNegotiationTests.cs b/src/Management/test/Endpoint.Test/ActuatorContentNegotiationTests.cs index 2e870fadd5..cc1c361d21 100644 --- a/src/Management/test/Endpoint.Test/ActuatorContentNegotiationTests.cs +++ b/src/Management/test/Endpoint.Test/ActuatorContentNegotiationTests.cs @@ -38,7 +38,7 @@ public sealed class ActuatorContentNegotiationTests [InlineData("httpexchanges", SpringBootStandardAccept, ActuatorV3)] [InlineData("info", $"{ActuatorV3},{SpringBootStandardAccept}", ActuatorV3)] [InlineData("loggers", SpringBootStandardAccept, ActuatorV3)] - [InlineData("mappings", SpringBootStandardAccept, ActuatorV2)] + [InlineData("mappings", SpringBootStandardAccept, ActuatorV3)] [InlineData("threaddump", SpringBootStandardAccept, ActuatorV3)] [Theory] public async Task Responses_for_SpringBootAdmin_match_expectations(string endpoint, string acceptHeader, string responseContentType) diff --git a/src/Management/test/Endpoint.Test/Actuators/RouteMappings/ActuatorRouteMappingsTest.cs b/src/Management/test/Endpoint.Test/Actuators/RouteMappings/ActuatorRouteMappingsTest.cs index ed817dd0e4..682fcdb7ea 100644 --- a/src/Management/test/Endpoint.Test/Actuators/RouteMappings/ActuatorRouteMappingsTest.cs +++ b/src/Management/test/Endpoint.Test/Actuators/RouteMappings/ActuatorRouteMappingsTest.cs @@ -651,7 +651,7 @@ public async Task Returns_endpoints_for_RouteMappings_actuator(HostBuilderType h "dispatcherServlet": [ { "handler": "/actuator/mappings", - "predicate": "{GET [/actuator/mappings], produces [application/vnd.spring-boot.actuator.v2+json]}", + "predicate": "{GET [/actuator/mappings], produces [application/vnd.spring-boot.actuator.v3+json]}", "details": { "handlerMethod": { "className": "Steeltoe.Management.Endpoint.Middleware.EndpointMiddleware`2", @@ -668,7 +668,7 @@ public async Task Returns_endpoints_for_RouteMappings_actuator(HostBuilderType h "consumes": [], "produces": [ { - "mediaType": "application/vnd.spring-boot.actuator.v2+json", + "mediaType": "application/vnd.spring-boot.actuator.v3+json", "negated": false } ],