From 31ec88526ad236b7261fed1e88fa6c536c45f60e Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Thu, 9 Jun 2016 10:07:41 -0700 Subject: [PATCH] Fix #4801 Rename ValidationExcludeFilter 'ValidationExcludeFilter' -> 'SuppressChildValidationMetadataProvider' Also moved to .ModelBinding for improved discoverability. There aren't many reasons user code would have a using for .Validation. --- .../Internal/MvcCoreMvcOptionsSetup.cs | 10 +++++----- ...> SuppressChildValidationMetadataProvider.cs} | 12 ++++++------ .../Internal/MvcJsonMvcOptionsSetup.cs | 4 ++-- ...vcXmlDataContractSerializerMvcOptionsSetup.cs | 6 +++--- .../WebApiCompatShimOptionsSetup.cs | 6 +++--- .../Internal/DefaultObjectValidatorTests.cs | 4 ++-- .../ValidationIntegrationTests.cs | 2 +- .../MvcOptionsSetupTest.cs | 16 ++++++++-------- test/WebSites/FormatterWebSite/Startup.cs | 6 +++--- 9 files changed, 33 insertions(+), 33 deletions(-) rename src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/{Validation/ValidationExcludeFilter.cs => SuppressChildValidationMetadataProvider.cs} (85%) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs index b71ab8554f..0246e9a223 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Internal/MvcCoreMvcOptionsSetup.cs @@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Mvc.Internal options.ModelValidatorProviders.Add(new DefaultModelValidatorProvider()); // Add types to be excluded from Validation - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(Type))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(Uri))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(CancellationToken))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(IFormFile))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(IFormCollection))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Type))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Uri))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(CancellationToken))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(IFormFile))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(IFormCollection))); } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/SuppressChildValidationMetadataProvider.cs similarity index 85% rename from src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs rename to src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/SuppressChildValidationMetadataProvider.cs index 16b560dba3..5c10bfdcb3 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/Validation/ValidationExcludeFilter.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ModelBinding/SuppressChildValidationMetadataProvider.cs @@ -6,22 +6,22 @@ using System.Diagnostics; using System.Reflection; using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; -namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation +namespace Microsoft.AspNetCore.Mvc.ModelBinding { /// /// An which configures to /// false for matching types. /// - public class ValidationExcludeFilter : IValidationMetadataProvider + public class SuppressChildValidationMetadataProvider : IValidationMetadataProvider { /// - /// Creates a new for the given . + /// Creates a new for the given . /// /// /// The . This and all assignable values will have /// set to false. /// - public ValidationExcludeFilter(Type type) + public SuppressChildValidationMetadataProvider(Type type) { if (type == null) { @@ -32,13 +32,13 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Validation } /// - /// Creates a new for the given . + /// Creates a new for the given . /// /// /// The type full name. This type and all of its subclasses will have /// set to false. /// - public ValidationExcludeFilter(string fullTypeName) + public SuppressChildValidationMetadataProvider(string fullTypeName) { if (fullTypeName == null) { diff --git a/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Internal/MvcJsonMvcOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Internal/MvcJsonMvcOptionsSetup.cs index 7cbbf7f05e..be98df37de 100644 --- a/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Internal/MvcJsonMvcOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.Formatters.Json/Internal/MvcJsonMvcOptionsSetup.cs @@ -2,7 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System.Buffers; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.Extensions.Logging; using Microsoft.Extensions.ObjectPool; using Microsoft.Extensions.Options; @@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Mvc.Formatters.Json.Internal options.FormatterMappings.SetMediaTypeMappingForFormat("json", MediaTypeHeaderValue.Parse("application/json")); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(JToken))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(JToken))); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Internal/MvcXmlDataContractSerializerMvcOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Internal/MvcXmlDataContractSerializerMvcOptionsSetup.cs index 5520950317..031b796016 100644 --- a/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Internal/MvcXmlDataContractSerializerMvcOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.Formatters.Xml/Internal/MvcXmlDataContractSerializerMvcOptionsSetup.cs @@ -2,7 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.Mvc.Formatters.Xml.Internal @@ -32,8 +32,8 @@ namespace Microsoft.AspNetCore.Mvc.Formatters.Xml.Internal options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter()); options.InputFormatters.Add(new XmlDataContractSerializerInputFormatter()); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter("System.Xml.Linq.XObject")); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter("System.Xml.XmlNode")); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider("System.Xml.Linq.XObject")); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider("System.Xml.XmlNode")); } } } diff --git a/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/WebApiCompatShimOptionsSetup.cs b/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/WebApiCompatShimOptionsSetup.cs index e75fae9159..1cd98c2ad7 100644 --- a/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/WebApiCompatShimOptionsSetup.cs +++ b/src/Microsoft.AspNetCore.Mvc.WebApiCompatShim/WebApiCompatShimOptionsSetup.cs @@ -3,7 +3,7 @@ using System.Net.Http; using System.Net.Http.Formatting; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -33,8 +33,8 @@ namespace Microsoft.AspNetCore.Mvc.WebApiCompatShim // Add a formatter to write out an HttpResponseMessage to the response options.OutputFormatters.Insert(0, new HttpResponseMessageOutputFormatter()); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(HttpRequestMessage))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(HttpResponseMessage))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(HttpRequestMessage))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(HttpResponseMessage))); } public void Configure(WebApiCompatShimOptions options) diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultObjectValidatorTests.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultObjectValidatorTests.cs index 17dda63446..dd664c7aac 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultObjectValidatorTests.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Internal/DefaultObjectValidatorTests.cs @@ -1068,10 +1068,10 @@ namespace Microsoft.AspNetCore.Mvc.Internal private static DefaultObjectValidator CreateValidator(Type excludedType) { - var excludeFilters = new List(); + var excludeFilters = new List(); if (excludedType != null) { - excludeFilters.Add(new ValidationExcludeFilter(excludedType)); + excludeFilters.Add(new SuppressChildValidationMetadataProvider(excludedType)); } var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(excludeFilters.ToArray()); diff --git a/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ValidationIntegrationTests.cs b/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ValidationIntegrationTests.cs index 19b736bc13..2ed7bd361f 100644 --- a/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ValidationIntegrationTests.cs +++ b/test/Microsoft.AspNetCore.Mvc.IntegrationTests/ValidationIntegrationTests.cs @@ -1272,7 +1272,7 @@ namespace Microsoft.AspNetCore.Mvc.IntegrationTests }, options => { - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(Address))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Address))); testOptions = options; }); diff --git a/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs b/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs index 2e7ad74935..5f36d0b9b9 100644 --- a/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Test/MvcOptionsSetupTest.cs @@ -162,44 +162,44 @@ namespace Microsoft.AspNetCore.Mvc provider => Assert.IsType(provider), provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(Type), excludeFilter.Type); }, provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(Uri), excludeFilter.Type); }, provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(CancellationToken), excludeFilter.Type); }, provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(IFormFile), excludeFilter.Type); }, provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(IFormCollection), excludeFilter.Type); }, provider => Assert.IsType(provider), provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(JToken), excludeFilter.Type); }, provider => Assert.IsType(provider), provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(XObject).FullName, excludeFilter.FullTypeName); }, provider => { - var excludeFilter = Assert.IsType(provider); + var excludeFilter = Assert.IsType(provider); Assert.Equal(typeof(XmlNode).FullName, excludeFilter.FullTypeName); }); } diff --git a/test/WebSites/FormatterWebSite/Startup.cs b/test/WebSites/FormatterWebSite/Startup.cs index 47265c7ac6..810bc98020 100644 --- a/test/WebSites/FormatterWebSite/Startup.cs +++ b/test/WebSites/FormatterWebSite/Startup.cs @@ -4,7 +4,7 @@ using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; +using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.Extensions.DependencyInjection; namespace FormatterWebSite @@ -15,8 +15,8 @@ namespace FormatterWebSite { services.AddMvc(options => { - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(Developer))); - options.ModelMetadataDetailsProviders.Add(new ValidationExcludeFilter(typeof(Supplier))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Developer))); + options.ModelMetadataDetailsProviders.Add(new SuppressChildValidationMetadataProvider(typeof(Supplier))); options.InputFormatters.Add(new StringInputFormatter()); })