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>
<TargetFrameworks>netstandard2.0;netstandard2.1;net7.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>Volo.Abp.Validation</AssemblyName>
<PackageId>Volo.Abp.Validation</PackageId>
<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;
}
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)
{

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 virtual ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext)
public virtual ValidationResult? GetOrDefault(ValidationAttribute validationAttribute, object? validatingObject, ValidationContext 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
{
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(
object validatingObject,
string name = null,
string? name = null,
bool allowNull = false
);
Task<List<ValidationResult>> GetErrorsAsync(
object validatingObject,
string name = null,
string? name = null,
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;
}
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);
@ -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)
{

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

@ -6,7 +6,7 @@ namespace Volo.Abp.Validation.StringValues;
[ValueValidator("NULL")]
public class AlwaysValidValueValidator : ValueValidatorBase
{
public override bool IsValid(object value)
public override bool IsValid(object? value)
{
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")]
public class BooleanValueValidator : ValueValidatorBase
{
public override bool IsValid(object value)
public override bool IsValid(object? value)
{
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; }
[CanBeNull]
object this[string key] { get; set; }
object? this[string key] { get; set; }
[NotNull]
Dictionary<string, object> Properties { get; }
Dictionary<string, object?> Properties { get; }
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; }
[CanBeNull]
object this[string key] { get; set; }
object? this[string key] { get; set; }
[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 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;
}
public override bool IsValid(object value)
public override bool IsValid(object? value)
{
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")]
public class SelectionStringValueType : StringValueTypeBase
{
public ISelectionStringValueItemSource ItemSource { get; set; }
public ISelectionStringValueItemSource ItemSource { get; set; } = default!;
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 object this[string key] {
public object? this[string key] {
get => Properties.GetOrDefault(key);
set => Properties[key] = value;
}
public Dictionary<string, object> Properties { get; }
public Dictionary<string, object?> Properties { get; }
public IValueValidator Validator { get; set; }
@ -26,6 +26,6 @@ public abstract class StringValueTypeBase : IStringValueType
protected StringValueTypeBase(IValueValidator 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;
}
public string RegularExpression {
public string? RegularExpression {
get => this["RegularExpression"] as string;
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;
MaxLength = maxLength;
@ -40,20 +40,18 @@ public class StringValueValidator : ValueValidatorBase
AllowNull = allowNull;
}
public override bool IsValid(object value)
public override bool IsValid(object? value)
{
if (value == null)
{
return AllowNull;
}
if (!(value is string))
if (!(value is string strValue))
{
return false;
}
var strValue = value as string;
if (MinLength > 0 && strValue.Length < MinLength)
{
return false;
@ -66,7 +64,7 @@ public class StringValueValidator : ValueValidatorBase
if (!RegularExpression.IsNullOrEmpty())
{
return Regex.IsMatch(strValue, RegularExpression);
return Regex.IsMatch(strValue, RegularExpression!);
}
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 object this[string key] {
public object? this[string key] {
get => Properties.GetOrDefault(key);
set => Properties[key] = value;
}
public IDictionary<string, object> Properties { get; }
public IDictionary<string, object?> Properties { get; }
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