From 14290570aaa597f1463fad02bbe58fd0bc7dad8a Mon Sep 17 00:00:00 2001 From: tobias-tengler <45513122+tobias-tengler@users.noreply.github.com> Date: Tue, 27 Jan 2026 10:55:12 +0100 Subject: [PATCH] Move GetRootServiceProvider to abstractions --- .../ExecutionServiceProviderExtensions.cs | 32 +++++++++++++++++++ ...HotChocolate.Execution.Abstractions.csproj | 4 +++ ...ternalSchemaServiceCollectionExtensions.cs | 26 --------------- ...FusionGatewayBuilderExtensions.Services.cs | 11 +++++++ ...colateFusionServiceCollectionExtensions.cs | 13 -------- 5 files changed, 47 insertions(+), 39 deletions(-) create mode 100644 src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs diff --git a/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs b/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs new file mode 100644 index 00000000000..2abbd758fcc --- /dev/null +++ b/src/HotChocolate/Core/src/Execution.Abstractions/Execution/Extensions/ExecutionServiceProviderExtensions.cs @@ -0,0 +1,32 @@ +using HotChocolate; + +namespace Microsoft.Extensions.DependencyInjection; + +public static class ExecutionServiceProviderExtensions +{ + /// + /// Gets the root service provider from the schema services. This allows + /// schema services to access application level services. + /// + /// + /// The schema. + /// + /// + /// The root service provider. + /// + public static IServiceProvider GetRootServiceProvider(this ISchemaDefinition schema) + => schema.Services.GetRequiredService().ServiceProvider; + + /// + /// Gets the root service provider from the schema services. This allows + /// schema services to access application level services. + /// + /// + /// The schema services. + /// + /// + /// The root service provider. + /// + public static IServiceProvider GetRootServiceProvider(this IServiceProvider services) + => services.GetRequiredService().ServiceProvider; +} diff --git a/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj b/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj index 90b52d518ac..3c4acc638af 100644 --- a/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj +++ b/src/HotChocolate/Core/src/Execution.Abstractions/HotChocolate.Execution.Abstractions.csproj @@ -23,6 +23,10 @@ + + + + diff --git a/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs b/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs index 27ad8eaf8d3..57839a3b016 100644 --- a/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs +++ b/src/HotChocolate/Core/src/Execution/DependencyInjection/InternalSchemaServiceCollectionExtensions.cs @@ -45,30 +45,4 @@ internal static IServiceCollection TryAddDiagnosticEvents( return services; } - - /// - /// Gets the root service provider from the schema services. This allows - /// schema services to access application level services. - /// - /// - /// The schema. - /// - /// - /// The root service provider. - /// - public static IServiceProvider GetRootServiceProvider(this Schema schema) - => schema.Services.GetRequiredService().ServiceProvider; - - /// - /// Gets the root service provider from the schema services. This allows - /// schema services to access application level services. - /// - /// - /// The schema services. - /// - /// - /// The root service provider. - /// - public static IServiceProvider GetRootServiceProvider(this IServiceProvider services) - => services.GetRequiredService().ServiceProvider; } diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs index 72ea99ebe98..d261f3d9aaf 100644 --- a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs +++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/CoreFusionGatewayBuilderExtensions.Services.cs @@ -1,3 +1,4 @@ +using HotChocolate.Execution; using HotChocolate.Fusion.Configuration; namespace Microsoft.Extensions.DependencyInjection; @@ -19,4 +20,14 @@ public static IFusionGatewayBuilder AddApplicationService( return builder.ConfigureSchemaServices( static (sp, sc) => sc.AddSingleton(sp.GetRequiredService())); } + + public static ValueTask BuildRequestExecutorAsync( + this IFusionGatewayBuilder builder, + string? schemaName = null, + CancellationToken cancellationToken = default) => + builder + .Services + .BuildServiceProvider() + .GetRequiredService() + .GetExecutorAsync(schemaName, cancellationToken); } diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs index 73294145fe5..a09cde1ead2 100644 --- a/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs +++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs @@ -32,19 +32,6 @@ public static IFusionGatewayBuilder AddGraphQLGateway( return CreateBuilder(services, name); } - /// - /// Gets the root service provider from the schema services. This allows - /// schema services to access application level services. - /// - /// - /// The schema services. - /// - /// - /// The root service provider. - /// - public static IServiceProvider GetRootServiceProvider(this IServiceProvider services) - => services.GetRequiredService().ServiceProvider; - private static void AddRequestExecutorManager( IServiceCollection services) {