Skip to content

Commit f128b32

Browse files
Version-neutral APIs should be deprecated if they have an effective policy
1 parent 3ef8233 commit f128b32

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

src/AspNet/OData/src/Asp.Versioning.WebApi.OData.ApiExplorer/ApiExplorer/ODataApiExplorer.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,17 @@ private void PopulateActionDescriptions(
548548
var supportedMethods = GetHttpMethodsSupportedByAction( route, actionDescriptor );
549549
var metadata = actionDescriptor.ApiVersionMetadata;
550550
var model = metadata.Map( ApiVersionMapping.Explicit );
551-
var deprecated = !model.IsApiVersionNeutral && model.DeprecatedApiVersions.Contains( apiVersion );
551+
var deprecationPolicy = DeprecationPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion );
552+
bool deprecated;
553+
554+
if ( model.IsApiVersionNeutral )
555+
{
556+
deprecated = deprecationPolicy != null && deprecationPolicy.IsEffective( DateTimeOffset.Now );
557+
}
558+
else
559+
{
560+
deprecated = model.DeprecatedApiVersions.Contains( apiVersion );
561+
}
552562

553563
PopulateMediaTypeFormatters( actionDescriptor, routeBuilderContext.ParameterDescriptions, route, responseType, requestFormatters, responseFormatters );
554564

@@ -566,7 +576,7 @@ private void PopulateActionDescriptions(
566576
ApiVersion = apiVersion,
567577
IsDeprecated = deprecated,
568578
SunsetPolicy = SunsetPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion ),
569-
DeprecationPolicy = DeprecationPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion ),
579+
DeprecationPolicy = deprecationPolicy,
570580
Properties = { [typeof( IEdmModel )] = routeBuilderContext.EdmModel },
571581
};
572582

src/AspNet/WebApi/src/Asp.Versioning.WebApi.ApiExplorer/ApiExplorer/VersionedApiExplorer.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -876,7 +876,17 @@ private void PopulateActionDescriptions(
876876
var supportedMethods = GetHttpMethodsSupportedByAction( route, actionDescriptor );
877877
var metadata = actionDescriptor.ApiVersionMetadata;
878878
var model = metadata.Map( Explicit );
879-
var deprecated = !model.IsApiVersionNeutral && model.DeprecatedApiVersions.Contains( apiVersion );
879+
var deprecationPolicy = DeprecationPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion );
880+
bool deprecated;
881+
882+
if ( model.IsApiVersionNeutral )
883+
{
884+
deprecated = deprecationPolicy != null && deprecationPolicy.IsEffective( DateTimeOffset.Now );
885+
}
886+
else
887+
{
888+
deprecated = model.DeprecatedApiVersions.Contains( apiVersion );
889+
}
880890

881891
for ( var i = 0; i < supportedMethods.Count; i++ )
882892
{
@@ -891,7 +901,7 @@ private void PopulateActionDescriptions(
891901
ApiVersion = apiVersion,
892902
IsDeprecated = deprecated,
893903
SunsetPolicy = SunsetPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion ),
894-
DeprecationPolicy = DeprecationPolicyManager.ResolvePolicyOrDefault( metadata.Name, apiVersion ),
904+
DeprecationPolicy = deprecationPolicy,
895905
};
896906

897907
foreach ( var supportedResponseFormatter in supportedResponseFormatters )

0 commit comments

Comments
 (0)