From 4173f634da272e3fbe3bd6f60b1c42f31f7d19b0 Mon Sep 17 00:00:00 2001 From: Michael Staib Date: Mon, 16 Jan 2023 23:03:13 +0100 Subject: [PATCH] Implicitly inject topic event receiver and topic event sender (#5692) --- .../Resolvers/DefaultResolverCompiler.cs | 35 ++++++++++--------- .../Types/SubscriptionTypeTests.cs | 2 +- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/HotChocolate/Core/src/Types/Resolvers/DefaultResolverCompiler.cs b/src/HotChocolate/Core/src/Types/Resolvers/DefaultResolverCompiler.cs index 76b6543bd9f..6c2a7488bf8 100644 --- a/src/HotChocolate/Core/src/Types/Resolvers/DefaultResolverCompiler.cs +++ b/src/HotChocolate/Core/src/Types/Resolvers/DefaultResolverCompiler.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using HotChocolate.Internal; using HotChocolate.Resolvers.Expressions.Parameters; +using HotChocolate.Subscriptions; using HotChocolate.Types.Descriptors; using HotChocolate.Utilities; using static System.Linq.Expressions.Expression; @@ -48,7 +49,7 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler : new List(); // explicit internal expression builders will be added first. - var parameterExpressionBuilders = new List + var expressionBuilders = new List { new ParentParameterExpressionBuilder(), new ServiceParameterExpressionBuilder(), @@ -69,25 +70,27 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler { if (!builder.IsDefaultHandler) { - parameterExpressionBuilders.Add(builder); + expressionBuilders.Add(builder); } } } // then we add the internal implicit expression builder. - parameterExpressionBuilders.Add(new DocumentParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new CancellationTokenParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new ResolverContextParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new PureResolverContextParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new SchemaParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new SelectionParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new FieldSyntaxParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new ObjectTypeParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new OperationDefinitionParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new OperationParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new FieldParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new ClaimsPrincipalParameterExpressionBuilder()); - parameterExpressionBuilders.Add(new PathParameterExpressionBuilder()); + expressionBuilders.Add(new DocumentParameterExpressionBuilder()); + expressionBuilders.Add(new CancellationTokenParameterExpressionBuilder()); + expressionBuilders.Add(new ResolverContextParameterExpressionBuilder()); + expressionBuilders.Add(new PureResolverContextParameterExpressionBuilder()); + expressionBuilders.Add(new SchemaParameterExpressionBuilder()); + expressionBuilders.Add(new SelectionParameterExpressionBuilder()); + expressionBuilders.Add(new FieldSyntaxParameterExpressionBuilder()); + expressionBuilders.Add(new ObjectTypeParameterExpressionBuilder()); + expressionBuilders.Add(new OperationDefinitionParameterExpressionBuilder()); + expressionBuilders.Add(new OperationParameterExpressionBuilder()); + expressionBuilders.Add(new FieldParameterExpressionBuilder()); + expressionBuilders.Add(new ClaimsPrincipalParameterExpressionBuilder()); + expressionBuilders.Add(new PathParameterExpressionBuilder()); + expressionBuilders.Add(new CustomServiceParameterExpressionBuilder()); + expressionBuilders.Add(new CustomServiceParameterExpressionBuilder()); if (customParameterExpressionBuilders is not null) { @@ -111,7 +114,7 @@ internal sealed class DefaultResolverCompiler : IResolverCompiler } - _parameterExpressionBuilders = parameterExpressionBuilders; + _parameterExpressionBuilders = expressionBuilders; var parameterFieldConfigurations = new List(); diff --git a/src/HotChocolate/Core/test/Types.Tests/Types/SubscriptionTypeTests.cs b/src/HotChocolate/Core/test/Types.Tests/Types/SubscriptionTypeTests.cs index 65ea9e17b78..e420a0c2b84 100644 --- a/src/HotChocolate/Core/test/Types.Tests/Types/SubscriptionTypeTests.cs +++ b/src/HotChocolate/Core/test/Types.Tests/Types/SubscriptionTypeTests.cs @@ -1139,7 +1139,7 @@ public async IAsyncEnumerable CreateOnArguments(string arg) public class MySubscriptionExtension { public async ValueTask> SubscribeToOnExplicit( - [Service] ITopicEventReceiver eventReceiver) => + ITopicEventReceiver eventReceiver) => await eventReceiver.SubscribeAsync("explicit"); [Subscribe(With = nameof(SubscribeToOnExplicit))]