Browse Source

Enable nullable annotations for Volo.Abp.Validation

pull/17020/head
liangshiwei 3 years ago
parent
commit
bd3aa78c46
  1. 2
      framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj
  2. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs
  3. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs
  4. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs
  5. 4
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs
  6. 4
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs
  7. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs
  8. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs
  9. 5
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs
  10. 7
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs
  11. 4
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs
  12. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs
  13. 2
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs
  14. 6
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs
  15. 12
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs
  16. 8
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs

2
framework/src/Volo.Abp.Validation/Volo.Abp.Validation.csproj

@ -5,6 +5,8 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.Validation</AssemblyName> <AssemblyName>Volo.Abp.Validation</AssemblyName>
<PackageId>Volo.Abp.Validation</PackageId> <PackageId>Volo.Abp.Validation</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DataAnnotationObjectValidationContributor.cs

@ -33,7 +33,7 @@ public class DataAnnotationObjectValidationContributor : IObjectValidationContri
return Task.CompletedTask; return Task.CompletedTask;
} }
protected virtual void ValidateObjectRecursively(List<ValidationResult> errors, object validatingObject, int currentDepth) protected virtual void ValidateObjectRecursively(List<ValidationResult> errors, object? validatingObject, int currentDepth)
{ {
if (currentDepth > MaxRecursiveParameterValidationDepth) if (currentDepth > MaxRecursiveParameterValidationDepth)
{ {

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/DefaultAttributeValidationResultProvider.cs

@ -5,7 +5,7 @@ namespace Volo.Abp.Validation;
public class DefaultAttributeValidationResultProvider : IAttributeValidationResultProvider, ITransientDependency public class DefaultAttributeValidationResultProvider : IAttributeValidationResultProvider, ITransientDependency
{ {
public virtual ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext) public virtual ValidationResult? GetOrDefault(ValidationAttribute validationAttribute, object? validatingObject, ValidationContext validationContext)
{ {
return validationAttribute.GetValidationResult(validatingObject, validationContext); return validationAttribute.GetValidationResult(validatingObject, validationContext);
} }

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IAttributeValidationResultProvider.cs

@ -4,5 +4,5 @@ namespace Volo.Abp.Validation;
public interface IAttributeValidationResultProvider public interface IAttributeValidationResultProvider
{ {
ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext); ValidationResult? GetOrDefault(ValidationAttribute validationAttribute, object? validatingObject, ValidationContext validationContext);
} }

4
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/IObjectValidator.cs

@ -8,13 +8,13 @@ public interface IObjectValidator
{ {
Task ValidateAsync( Task ValidateAsync(
object validatingObject, object validatingObject,
string name = null, string? name = null,
bool allowNull = false bool allowNull = false
); );
Task<List<ValidationResult>> GetErrorsAsync( Task<List<ValidationResult>> GetErrorsAsync(
object validatingObject, object validatingObject,
string name = null, string? name = null,
bool allowNull = false bool allowNull = false
); );
} }

4
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/ObjectValidator.cs

@ -19,7 +19,7 @@ public class ObjectValidator : IObjectValidator, ITransientDependency
Options = options.Value; Options = options.Value;
} }
public virtual async Task ValidateAsync(object validatingObject, string name = null, bool allowNull = false) public virtual async Task ValidateAsync(object validatingObject, string? name = null, bool allowNull = false)
{ {
var errors = await GetErrorsAsync(validatingObject, name, allowNull); var errors = await GetErrorsAsync(validatingObject, name, allowNull);
@ -32,7 +32,7 @@ public class ObjectValidator : IObjectValidator, ITransientDependency
} }
} }
public virtual async Task<List<ValidationResult>> GetErrorsAsync(object validatingObject, string name = null, bool allowNull = false) public virtual async Task<List<ValidationResult>> GetErrorsAsync(object validatingObject, string? name = null, bool allowNull = false)
{ {
if (validatingObject == null) if (validatingObject == null)
{ {

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/AlwaysValidValueValidator.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues;
[ValueValidator("NULL")] [ValueValidator("NULL")]
public class AlwaysValidValueValidator : ValueValidatorBase public class AlwaysValidValueValidator : ValueValidatorBase
{ {
public override bool IsValid(object value) public override bool IsValid(object? value)
{ {
return true; return true;
} }

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/BooleanValueValidator.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues;
[ValueValidator("BOOLEAN")] [ValueValidator("BOOLEAN")]
public class BooleanValueValidator : ValueValidatorBase public class BooleanValueValidator : ValueValidatorBase
{ {
public override bool IsValid(object value) public override bool IsValid(object? value)
{ {
if (value == null) if (value == null)
{ {

5
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IStringValueType.cs

@ -7,11 +7,10 @@ public interface IStringValueType
{ {
string Name { get; } string Name { get; }
[CanBeNull] object? this[string key] { get; set; }
object this[string key] { get; set; }
[NotNull] [NotNull]
Dictionary<string, object> Properties { get; } Dictionary<string, object?> Properties { get; }
IValueValidator Validator { get; set; } IValueValidator Validator { get; set; }
} }

7
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/IValueValidator.cs

@ -7,11 +7,10 @@ public interface IValueValidator
{ {
string Name { get; } string Name { get; }
[CanBeNull] object? this[string key] { get; set; }
object this[string key] { get; set; }
[NotNull] [NotNull]
IDictionary<string, object> Properties { get; } IDictionary<string, object?> Properties { get; }
bool IsValid(object value); bool IsValid(object? value);
} }

4
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/LocalizableSelectionStringValueItem.cs

@ -2,7 +2,7 @@
public class LocalizableSelectionStringValueItem : ISelectionStringValueItem public class LocalizableSelectionStringValueItem : ISelectionStringValueItem
{ {
public string Value { get; set; } public string Value { get; set; } = default!;
public LocalizableStringInfo DisplayText { get; set; } public LocalizableStringInfo DisplayText { get; set; } = default!;
} }

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/NumericValueValidator.cs

@ -28,7 +28,7 @@ public class NumericValueValidator : ValueValidatorBase
MaxValue = maxValue; MaxValue = maxValue;
} }
public override bool IsValid(object value) public override bool IsValid(object? value)
{ {
if (value == null) if (value == null)
{ {

2
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/SelectionStringValueType.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues;
[StringValueType("SELECTION")] [StringValueType("SELECTION")]
public class SelectionStringValueType : StringValueTypeBase public class SelectionStringValueType : StringValueTypeBase
{ {
public ISelectionStringValueItemSource ItemSource { get; set; } public ISelectionStringValueItemSource ItemSource { get; set; } = default!;
public SelectionStringValueType() public SelectionStringValueType()
{ {

6
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueTypeBase.cs

@ -8,12 +8,12 @@ public abstract class StringValueTypeBase : IStringValueType
{ {
public virtual string Name => ValueValidatorAttribute.GetName(GetType()); public virtual string Name => ValueValidatorAttribute.GetName(GetType());
public object this[string key] { public object? this[string key] {
get => Properties.GetOrDefault(key); get => Properties.GetOrDefault(key);
set => Properties[key] = value; set => Properties[key] = value;
} }
public Dictionary<string, object> Properties { get; } public Dictionary<string, object?> Properties { get; }
public IValueValidator Validator { get; set; } public IValueValidator Validator { get; set; }
@ -26,6 +26,6 @@ public abstract class StringValueTypeBase : IStringValueType
protected StringValueTypeBase(IValueValidator validator) protected StringValueTypeBase(IValueValidator validator)
{ {
Validator = validator; Validator = validator;
Properties = new Dictionary<string, object>(); Properties = new Dictionary<string, object?>();
} }
} }

12
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/StringValueValidator.cs

@ -22,7 +22,7 @@ public class StringValueValidator : ValueValidatorBase
set => this["MaxLength"] = value; set => this["MaxLength"] = value;
} }
public string RegularExpression { public string? RegularExpression {
get => this["RegularExpression"] as string; get => this["RegularExpression"] as string;
set => this["RegularExpression"] = value; set => this["RegularExpression"] = value;
} }
@ -32,7 +32,7 @@ public class StringValueValidator : ValueValidatorBase
} }
public StringValueValidator(int minLength = 0, int maxLength = 0, string regularExpression = null, bool allowNull = false) public StringValueValidator(int minLength = 0, int maxLength = 0, string? regularExpression = null, bool allowNull = false)
{ {
MinLength = minLength; MinLength = minLength;
MaxLength = maxLength; MaxLength = maxLength;
@ -40,20 +40,18 @@ public class StringValueValidator : ValueValidatorBase
AllowNull = allowNull; AllowNull = allowNull;
} }
public override bool IsValid(object value) public override bool IsValid(object? value)
{ {
if (value == null) if (value == null)
{ {
return AllowNull; return AllowNull;
} }
if (!(value is string)) if (!(value is string strValue))
{ {
return false; return false;
} }
var strValue = value as string;
if (MinLength > 0 && strValue.Length < MinLength) if (MinLength > 0 && strValue.Length < MinLength)
{ {
return false; return false;
@ -66,7 +64,7 @@ public class StringValueValidator : ValueValidatorBase
if (!RegularExpression.IsNullOrEmpty()) if (!RegularExpression.IsNullOrEmpty())
{ {
return Regex.IsMatch(strValue, RegularExpression); return Regex.IsMatch(strValue, RegularExpression!);
} }
return true; return true;

8
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/StringValues/ValueValidatorBase.cs

@ -8,17 +8,17 @@ public abstract class ValueValidatorBase : IValueValidator
{ {
public virtual string Name => ValueValidatorAttribute.GetName(GetType()); public virtual string Name => ValueValidatorAttribute.GetName(GetType());
public object this[string key] { public object? this[string key] {
get => Properties.GetOrDefault(key); get => Properties.GetOrDefault(key);
set => Properties[key] = value; set => Properties[key] = value;
} }
public IDictionary<string, object> Properties { get; } public IDictionary<string, object?> Properties { get; }
protected ValueValidatorBase() protected ValueValidatorBase()
{ {
Properties = new Dictionary<string, object>(); Properties = new Dictionary<string, object?>();
} }
public abstract bool IsValid(object value); public abstract bool IsValid(object? value);
} }

Loading…
Cancel
Save