From 6ada975071f91fa0eb1d50e187017528c2fb60b8 Mon Sep 17 00:00:00 2001
From: Bart Koelman <104792814+bart-vmware@users.noreply.github.com>
Date: Tue, 3 Mar 2026 12:09:58 +0100
Subject: [PATCH 1/2] Fix broken documentation in Steeltoe 4.x
---
.../Configuration/ConfigurationServiceCollectionExtensions.cs | 4 ++--
.../Endpoint/Actuators/Health/Availability/LivenessState.cs | 3 ++-
.../Endpoint/Actuators/Health/Availability/ReadinessState.cs | 3 ++-
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs b/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs
index 652c368278..e2692969e7 100644
--- a/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs
+++ b/src/Discovery/src/Configuration/ConfigurationServiceCollectionExtensions.cs
@@ -18,7 +18,7 @@ public static class ConfigurationServiceCollectionExtensions
/// Build your list of service instances under the configuration prefix discovery:services.
///
/// Example configuration in appsettings.json:
- ///
+ /// ]]>
///
///
///
diff --git a/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs b/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs
index e19bbbb7eb..e0e609983d 100644
--- a/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs
+++ b/src/Management/src/Endpoint/Actuators/Health/Availability/LivenessState.cs
@@ -6,9 +6,10 @@ namespace Steeltoe.Management.Endpoint.Actuators.Health.Availability;
///
/// "Liveness" state of the application.
-///
+///
/// An application is considered live when it's running with a correct internal state. "Liveness" failure means that the internal state of the
/// application is broken, and we cannot recover from it. As a result, the platform should restart the application.
+///
///
public sealed class LivenessState : AvailabilityState
{
diff --git a/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs b/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs
index b4371f9898..4169a69ae7 100644
--- a/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs
+++ b/src/Management/src/Endpoint/Actuators/Health/Availability/ReadinessState.cs
@@ -6,9 +6,10 @@ namespace Steeltoe.Management.Endpoint.Actuators.Health.Availability;
///
/// The Readiness state of the application.
-///
+///
/// An application is considered ready when it's and willing to accept traffic. "Readiness" failure means that the
/// application is not able to accept traffic and that the infrastructure should not route requests to it.
+///
///
public sealed class ReadinessState : AvailabilityState
{
From 97a84e4eca56f8c8be5c473e6216d5b3ff20f779 Mon Sep 17 00:00:00 2001
From: Bart Koelman <104792814+bart-vmware@users.noreply.github.com>
Date: Tue, 3 Mar 2026 12:53:06 +0100
Subject: [PATCH 2/2] Fix broken build (this branch uses an old Sonar version)
---
.../src/Abstractions/CompositeConfigurationProvider.cs | 7 +++----
.../Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs | 2 +-
.../src/Connectors/DynamicTypeAccess/ConnectorShim.cs | 2 +-
src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs | 7 ++++++-
.../Actuators/RouteMappings/AspNetEndpointProvider.cs | 2 +-
5 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs b/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs
index b9523cf738..2dc24eb071 100644
--- a/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs
+++ b/src/Configuration/src/Abstractions/CompositeConfigurationProvider.cs
@@ -97,10 +97,9 @@ public void Set(string key, string? value)
LogSet(GetType().Name, key, value);
- if (ConfigurationRoot != null)
- {
- ConfigurationRoot[key] = value;
- }
+#pragma warning disable S1121 // Assignments should not be made from within sub-expressions
+ ConfigurationRoot?[key] = value;
+#pragma warning restore S1121 // Assignments should not be made from within sub-expressions
}
public void Dispose()
diff --git a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs
index 4ad4609884..51d468747d 100644
--- a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs
+++ b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorFactoryShim.cs
@@ -60,7 +60,7 @@ private static TypeAccessor MakeGenericTypeAccessor(Type connectionType)
public ConnectorShim Get(string serviceBindingName)
{
- object instance = InstanceAccessor.InvokeMethodOverload(nameof(ConnectorFactory.Get), true, [typeof(string)], serviceBindingName)!;
+ object instance = InstanceAccessor.InvokeMethodOverload(nameof(ConnectorFactory<,>.Get), true, [typeof(string)], serviceBindingName)!;
return new ConnectorShim(_connectionType, instance);
}
diff --git a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs
index ff13dba205..e3479f0232 100644
--- a/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs
+++ b/src/Connectors/src/Connectors/DynamicTypeAccess/ConnectorShim.cs
@@ -25,7 +25,7 @@ private static InstanceAccessor CreateAccessor(Type connectionType, object insta
public object GetConnection()
{
- return InstanceAccessor.InvokeMethod(nameof(Connector.GetConnection), true)!;
+ return InstanceAccessor.InvokeMethod(nameof(Connector<,>.GetConnection), true)!;
}
public void Dispose()
diff --git a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
index 8417407d59..df11be4347 100644
--- a/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
+++ b/src/Discovery/src/Eureka/AppInfo/ApplicationInfo.cs
@@ -17,7 +17,7 @@ public sealed class ApplicationInfo
private readonly ConcurrentDictionary _instanceMap = new();
public string Name { get; }
- public IReadOnlyList Instances => new List(_instanceMap.Values);
+ public IReadOnlyList Instances => GetInstancesSnapshot();
internal ApplicationInfo(string name)
: this(name, Array.Empty())
@@ -38,6 +38,11 @@ internal ApplicationInfo(string name, ICollection instances)
}
}
+ private List GetInstancesSnapshot()
+ {
+ return [.. _instanceMap.Values];
+ }
+
internal InstanceInfo? GetInstance(string instanceId)
{
ArgumentException.ThrowIfNullOrWhiteSpace(instanceId);
diff --git a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs
index 70f810c77f..39c995b7a9 100644
--- a/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs
+++ b/src/Management/src/Endpoint/Actuators/RouteMappings/AspNetEndpointProvider.cs
@@ -167,7 +167,7 @@ private static IEnumerable FromActuatorEndpoint(RouteEndpoint en
if (endpointOptions != null)
{
string displayName = endpoint.DisplayName ?? string.Empty;
- MethodInfo handlerMethod = typeof(EndpointMiddleware<,>).GetMethod(nameof(EndpointMiddleware