Skip to content

Commit aa29641

Browse files
Migrate to HC 12, C# 10, .NET 6 (#84)
* Migrate to HC 12 * Migrate to c# 10 global usings * Fix hints * Extract argumentOptions.SkipValidation * Bump to rc * Bump packages * Test global usings with msbuild. No ide support * Switch to preview c#, use generic attributes * Use protected internal configure. Only UseFluentValidationAttribute can call configure * Rename attribute parameters, add comments to base attribute properties * Update ValidationDefaults.cs * Update ValidationDefaults.cs * Update ValidationDefaults.cs * Bump HC to stable 12
1 parent 493c657 commit aa29641

44 files changed

Lines changed: 94 additions & 133 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/AppAny.HotChocolate.FluentValidation.csproj

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
55
<Nullable>enable</Nullable>
6-
<LangVersion>9</LangVersion>
6+
<LangVersion>preview</LangVersion>
77
<EmbedUntrackedSources>true</EmbedUntrackedSources>
88
<IncludeSymbols>true</IncludeSymbols>
99
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
@@ -22,9 +22,19 @@
2222
<PackageTags>.NET Core;ASP.NET Core;HotChocolate;FluentValidation</PackageTags>
2323
</PropertyGroup>
2424

25+
<!-- <ItemGroup Label="Usings">-->
26+
<!-- <Using Include="System" />-->
27+
<!-- <Using Include="System.Threading.Tasks" />-->
28+
<!-- <Using Include="HotChocolate" />-->
29+
<!-- <Using Include="HotChocolate.Types" />-->
30+
<!-- <Using Include="HotChocolate.Resolvers" />-->
31+
<!-- <Using Include="FluentValidation" />-->
32+
<!-- <Using Include="FluentValidation.Results" />-->
33+
<!-- </ItemGroup>-->
34+
2535
<ItemGroup Label="Packages">
26-
<PackageReference Include="FluentValidation" Version="10.3.0" />
27-
<PackageReference Include="HotChocolate.Execution" Version="11.3.5" />
36+
<PackageReference Include="FluentValidation" Version="10.3.3" />
37+
<PackageReference Include="HotChocolate.Execution" Version="12.0.0" />
2838
</ItemGroup>
2939

3040
<ItemGroup Label="Assets">

src/Attributes/BaseUseValidatorAttribute.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
1-
using System;
21
using FluentValidation.Internal;
32

43
namespace AppAny.HotChocolate.FluentValidation
54
{
65
public abstract class BaseUseValidatorAttribute : FluentValidationAttribute
76
{
8-
protected BaseUseValidatorAttribute(Type validatorType)
9-
{
10-
ValidatorType = validatorType;
11-
}
12-
13-
public Type ValidatorType { get; }
14-
7+
/// <summary>
8+
/// Include property names. Passed to <see cref="ValidationStrategy{T}.IncludeProperties(string[])"/>
9+
/// </summary>
1510
public string[]? IncludeProperties { get; set; }
11+
12+
/// <summary>
13+
/// Include rule sets. Passed to <see cref="ValidationStrategy{T}.IncludeRuleSets(string[])"/>
14+
/// </summary>
1615
public string[]? IncludeRuleSets { get; set; }
16+
17+
/// <summary>
18+
/// Include all rule sets. Use <see cref="ValidationStrategy{T}.IncludeAllRuleSets()"/>
19+
/// </summary>
1720
public bool IncludeAllRuleSets { get; set; }
21+
22+
/// <summary>
23+
/// Include rules not in rule set. Use <see cref="ValidationStrategy{T}.IncludeRulesNotInRuleSet()"/>
24+
/// </summary>
1825
public bool IncludeRulesNotInRuleSet { get; set; }
1926

2027
protected Action<ValidationStrategy<object>>? TryGetValidationStrategy()
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
using System;
2-
31
namespace AppAny.HotChocolate.FluentValidation
42
{
53
public abstract class FluentValidationAttribute : Attribute
64
{
7-
public abstract void Configure(ArgumentValidationBuilder builder);
5+
protected internal abstract void Configure(ArgumentValidationBuilder argumentValidationBuilder);
86
}
97
}

src/Attributes/SkipValidationAttribute.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
using System.Threading.Tasks;
2-
31
namespace AppAny.HotChocolate.FluentValidation
42
{
53
public class SkipValidationAttribute : FluentValidationAttribute
64
{
7-
public sealed override void Configure(ArgumentValidationBuilder builder)
5+
protected internal sealed override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
86
{
9-
builder.SkipValidation(SkipValidation);
7+
argumentValidationBuilder.SkipValidation(SkipValidation);
108
}
119

1210
protected virtual ValueTask<bool> SkipValidation(SkipValidationContext skipValidationContext)

src/Attributes/UseDefaultErrorMapperAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace AppAny.HotChocolate.FluentValidation
22
{
33
public sealed class UseDefaultErrorMapperAttribute : FluentValidationAttribute
44
{
5-
public override void Configure(ArgumentValidationBuilder builder)
5+
protected internal override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
66
{
7-
builder.UseDefaultErrorMapper();
7+
argumentValidationBuilder.UseDefaultErrorMapper();
88
}
99
}
1010
}

src/Attributes/UseDefaultErrorMapperWithDetailsAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace AppAny.HotChocolate.FluentValidation
22
{
33
public sealed class UseDefaultErrorMapperWithDetailsAttribute : FluentValidationAttribute
44
{
5-
public override void Configure(ArgumentValidationBuilder builder)
5+
protected internal override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
66
{
7-
builder.UseDefaultErrorMapperWithDetails();
7+
argumentValidationBuilder.UseDefaultErrorMapperWithDetails();
88
}
99
}
1010
}

src/Attributes/UseDefaultErrorMapperWithExtendedDetailsAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace AppAny.HotChocolate.FluentValidation
22
{
33
public sealed class UseDefaultErrorMapperWithExtendedDetailsAttribute : FluentValidationAttribute
44
{
5-
public override void Configure(ArgumentValidationBuilder builder)
5+
protected internal override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
66
{
7-
builder.UseDefaultErrorMapperWithExtendedDetails();
7+
argumentValidationBuilder.UseDefaultErrorMapperWithExtendedDetails();
88
}
99
}
1010
}

src/Attributes/UseDefaultInputValidatorAttribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ namespace AppAny.HotChocolate.FluentValidation
22
{
33
public sealed class UseDefaultInputValidatorAttribute : FluentValidationAttribute
44
{
5-
public override void Configure(ArgumentValidationBuilder builder)
5+
protected internal override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
66
{
7-
builder.UseDefaultInputValidator();
7+
argumentValidationBuilder.UseDefaultInputValidator();
88
}
99
}
1010
}

src/Attributes/UseFluentValidationAttribute.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System;
21
using System.Reflection;
3-
using HotChocolate.Types;
42
using HotChocolate.Types.Descriptors;
53

64
namespace AppAny.HotChocolate.FluentValidation
@@ -13,13 +11,13 @@ namespace AppAny.HotChocolate.FluentValidation
1311
public sealed class UseFluentValidationAttribute : ArgumentDescriptorAttribute
1412
{
1513
public override void OnConfigure(
16-
IDescriptorContext context,
17-
IArgumentDescriptor descriptor,
18-
ParameterInfo parameter)
14+
IDescriptorContext descriptorContext,
15+
IArgumentDescriptor argumentDescriptor,
16+
ParameterInfo parameterInfo)
1917
{
20-
var fluentValidationAttributes = parameter.GetCustomAttributes<FluentValidationAttribute>();
18+
var fluentValidationAttributes = parameterInfo.GetCustomAttributes<FluentValidationAttribute>();
2119

22-
descriptor.UseFluentValidation(options =>
20+
argumentDescriptor.UseFluentValidation(options =>
2321
{
2422
foreach (var fluentValidationAttribute in fluentValidationAttributes)
2523
{

src/Attributes/UseValidatorAttribute.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
1-
using System;
2-
31
namespace AppAny.HotChocolate.FluentValidation
42
{
5-
public sealed class UseValidatorAttribute : BaseUseValidatorAttribute
3+
public sealed class UseValidatorAttribute<TValidator> : BaseUseValidatorAttribute
4+
where TValidator : class, IValidator
65
{
7-
public UseValidatorAttribute(Type validatorType)
8-
: base(validatorType)
9-
{
10-
}
11-
12-
public override void Configure(ArgumentValidationBuilder builder)
6+
protected internal override void Configure(ArgumentValidationBuilder argumentValidationBuilder)
137
{
148
var validationStrategy = TryGetValidationStrategy();
159

1610
if (validationStrategy is null)
1711
{
18-
builder.UseValidator(ValidatorType);
12+
argumentValidationBuilder.UseValidator<TValidator>();
1913
}
2014
else
2115
{
22-
builder.UseValidator(ValidatorType, validationStrategy);
16+
argumentValidationBuilder.UseValidator<TValidator>(validationStrategy);
2317
}
2418
}
2519
}

0 commit comments

Comments
 (0)