diff --git a/src/NuGet.Core/NuGet.Protocol/Model/PackageVulnerabilityMetadata.cs b/src/NuGet.Core/NuGet.Protocol/Model/PackageVulnerabilityMetadata.cs
index c2b3f9e00e4..fcaa46f4d51 100644
--- a/src/NuGet.Core/NuGet.Protocol/Model/PackageVulnerabilityMetadata.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Model/PackageVulnerabilityMetadata.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System;
using System.Text.Json.Serialization;
using Newtonsoft.Json;
@@ -11,10 +9,14 @@ namespace NuGet.Protocol
{
public class PackageVulnerabilityMetadata
{
+ ///
+ /// NULL_INC: The advisory URL for this vulnerability.
+ /// Guaranteed non-null by the protocol: https://learn.microsoft.com/en-us/nuget/api/registration-base-url-resource#vulnerabilities
+ ///
[JsonProperty(PropertyName = JsonProperties.AdvisoryUrl, ItemConverterType = typeof(SafeUriConverter))]
[JsonPropertyName(JsonProperties.AdvisoryUrl)]
[JsonInclude]
- public Uri AdvisoryUrl { get; internal set; }
+ public Uri AdvisoryUrl { get; internal set; } = null!;
[JsonProperty(PropertyName = JsonProperties.Severity)]
[JsonPropertyName(JsonProperties.Severity)]
@@ -24,10 +26,11 @@ public class PackageVulnerabilityMetadata
public PackageVulnerabilityMetadata(Uri advisoryUrl, int severity)
{
- AdvisoryUrl = advisoryUrl;
+ AdvisoryUrl = advisoryUrl ?? throw new ArgumentNullException(nameof(advisoryUrl));
Severity = severity;
}
+ // Parameterless constructor for JSON deserialization.
public PackageVulnerabilityMetadata()
{
}
diff --git a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationIndex.cs b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationIndex.cs
index e8efbdc8d4c..530a6e5aafd 100644
--- a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationIndex.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationIndex.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System.Collections.Generic;
using System.Text.Json.Serialization;
using Newtonsoft.Json;
@@ -16,6 +14,6 @@ internal class RegistrationIndex
{
[JsonProperty("items")]
[JsonPropertyName("items")]
- public List Items { get; set; }
+ public List? Items { get; set; }
}
}
diff --git a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationLeafItem.cs b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationLeafItem.cs
index d8f8c12fdb0..e2b7c1bc16e 100644
--- a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationLeafItem.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationLeafItem.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System;
using System.Text.Json.Serialization;
using Newtonsoft.Json;
@@ -16,10 +14,10 @@ internal class RegistrationLeafItem
{
[JsonProperty("catalogEntry")]
[JsonPropertyName("catalogEntry")]
- public PackageSearchMetadataRegistration CatalogEntry { get; set; }
+ public PackageSearchMetadataRegistration? CatalogEntry { get; set; }
[JsonProperty(PropertyName = JsonProperties.PackageContent)]
[JsonPropertyName(JsonProperties.PackageContent)]
- public Uri PackageContent { get; set; }
+ public Uri? PackageContent { get; set; }
}
}
diff --git a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationPage.cs b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationPage.cs
index 4be45fe1ba4..b0b813d03b2 100644
--- a/src/NuGet.Core/NuGet.Protocol/Model/RegistrationPage.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Model/RegistrationPage.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System.Collections.Generic;
using System.Text.Json.Serialization;
using Newtonsoft.Json;
@@ -16,9 +14,11 @@ namespace NuGet.Protocol.Model
///
internal class RegistrationPage
{
+ // NULL_INC: Annotated as non-null per protocol spec (link above). JSON deserialization may leave these
+ // as null if the server sends malformed data, but existing code assumes non-null without checks.
[JsonProperty("@id")]
[JsonPropertyName("@id")]
- public string Url { get; set; }
+ public string Url { get; set; } = null!;
///
/// This property can be null when this model is used as an item in when
@@ -27,14 +27,18 @@ internal class RegistrationPage
///
[JsonProperty("items")]
[JsonPropertyName("items")]
- public List Items { get; set; }
+ public List? Items { get; set; }
+ // NULL_INC: Annotated as non-null per protocol spec (link above). JSON deserialization may leave these
+ // as null if the server sends malformed data, but existing code assumes non-null without checks.
[JsonProperty("lower")]
[JsonPropertyName("lower")]
- public string Lower { get; set; }
+ public string Lower { get; set; } = null!;
+ // NULL_INC: Annotated as non-null per protocol spec (link above). JSON deserialization may leave these
+ // as null if the server sends malformed data, but existing code assumes non-null without checks.
[JsonProperty("upper")]
[JsonPropertyName("upper")]
- public string Upper { get; set; }
+ public string Upper { get; set; } = null!;
}
}
diff --git a/src/NuGet.Core/NuGet.Protocol/Providers/RepositorySignatureResourceProvider.cs b/src/NuGet.Core/NuGet.Protocol/Providers/RepositorySignatureResourceProvider.cs
index 4c561560eea..6e945e07f88 100644
--- a/src/NuGet.Core/NuGet.Protocol/Providers/RepositorySignatureResourceProvider.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Providers/RepositorySignatureResourceProvider.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System;
using System.Globalization;
using System.Linq;
@@ -18,11 +16,11 @@ namespace NuGet.Protocol
{
public class RepositorySignatureResourceProvider : ResourceProvider
{
- private readonly IEnvironmentVariableReader _environmentVariableReader;
+ private readonly IEnvironmentVariableReader? _environmentVariableReader;
public RepositorySignatureResourceProvider() : this(null) { }
- internal RepositorySignatureResourceProvider(IEnvironmentVariableReader environmentVariableReader)
+ internal RepositorySignatureResourceProvider(IEnvironmentVariableReader? environmentVariableReader)
: base(typeof(RepositorySignatureResource),
nameof(RepositorySignatureResource),
NuGetResourceProviderPositions.Last)
@@ -30,9 +28,9 @@ internal RepositorySignatureResourceProvider(IEnvironmentVariableReader environm
_environmentVariableReader = environmentVariableReader;
}
- public override async Task> TryCreate(SourceRepository source, CancellationToken token)
+ public override async Task> TryCreate(SourceRepository source, CancellationToken token)
{
- RepositorySignatureResource resource = null;
+ RepositorySignatureResource? resource = null;
var serviceIndex = await source.GetResourceAsync(token);
if (serviceIndex != null)
{
@@ -44,10 +42,10 @@ public override async Task> TryCreate(SourceReposito
}
}
- return new Tuple(resource != null, resource);
+ return new Tuple(resource != null, resource);
}
- private async Task GetRepositorySignatureResourceAsync(
+ private async Task GetRepositorySignatureResourceAsync(
SourceRepository source,
ServiceIndexEntry serviceEntry,
ILogger log,
@@ -62,7 +60,8 @@ private async Task GetRepositorySignatureResourceAs
throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture, Strings.RepositorySignaturesResourceMustBeHttps, source.PackageSource.Source));
}
- var httpSourceResource = await source.GetResourceAsync(token);
+ var httpSourceResource = await source.GetResourceAsync(token)
+ ?? throw new InvalidOperationException($"The source '{source.PackageSource.Source}' does not provide {nameof(HttpSourceResource)}.");
var client = httpSourceResource.HttpSource;
var cacheKey = GenerateCacheKey(serviceEntry);
@@ -91,9 +90,10 @@ private async Task GetRepositorySignatureResourceAs
async httpSourceResult =>
{
var model = await JsonSerializer.DeserializeAsync(
- httpSourceResult.Stream,
+ httpSourceResult.Stream!,
RepositorySignatureJsonContext.Default.RepositorySignatureModel,
- token);
+ token)
+ ?? throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture, Strings.Log_FailedToReadRepositorySignature, repositorySignaturesResourceUri.AbsoluteUri));
return new RepositorySignatureResource(model, source);
},
log,
@@ -117,14 +117,15 @@ private async Task GetRepositorySignatureResourceAs
if (NuGetFeatureFlags.IsSystemTextJsonDeserializationEnabledByEnvironment(_environmentVariableReader))
{
var model = await JsonSerializer.DeserializeAsync(
- httpSourceResult.Stream,
+ httpSourceResult.Stream!,
RepositorySignatureJsonContext.Default.RepositorySignatureModel,
- token);
+ token)
+ ?? throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture, Strings.Log_FailedToReadRepositorySignature, repositorySignaturesResourceUri.AbsoluteUri));
return new RepositorySignatureResource(model, source);
}
else
{
- var json = await httpSourceResult.Stream.AsJObjectAsync(token);
+ var json = (await httpSourceResult.Stream!.AsJObjectAsync(token))!;
#pragma warning disable IL2026, IL3050 // Legacy Newtonsoft.Json code path is unreachable when feature switch is true; ILC trims this branch in AOT
return new RepositorySignatureResource(json, source);
#pragma warning restore IL2026, IL3050
diff --git a/src/NuGet.Core/NuGet.Protocol/Providers/ServiceIndexResourceV3Provider.cs b/src/NuGet.Core/NuGet.Protocol/Providers/ServiceIndexResourceV3Provider.cs
index 80959914426..57f971cfe07 100644
--- a/src/NuGet.Core/NuGet.Protocol/Providers/ServiceIndexResourceV3Provider.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Providers/ServiceIndexResourceV3Provider.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System;
using System.Collections.Concurrent;
using System.Globalization;
@@ -31,7 +29,7 @@ public class ServiceIndexResourceV3Provider : ResourceProvider
private readonly ConcurrentDictionary _cache;
private readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1);
private readonly EnhancedHttpRetryHelper _enhancedHttpRetryHelper;
- private readonly IEnvironmentVariableReader _environmentVariableReader;
+ private readonly IEnvironmentVariableReader? _environmentVariableReader;
///
/// Maximum amount of time to store index.json
@@ -40,7 +38,7 @@ public class ServiceIndexResourceV3Provider : ResourceProvider
public ServiceIndexResourceV3Provider() : this(environmentVariableReader: null) { }
- internal ServiceIndexResourceV3Provider(IEnvironmentVariableReader environmentVariableReader)
+ internal ServiceIndexResourceV3Provider(IEnvironmentVariableReader? environmentVariableReader)
: base(typeof(ServiceIndexResourceV3),
nameof(ServiceIndexResourceV3Provider),
NuGetResourceProviderPositions.Last)
@@ -51,10 +49,10 @@ internal ServiceIndexResourceV3Provider(IEnvironmentVariableReader environmentVa
_enhancedHttpRetryHelper = new EnhancedHttpRetryHelper(environmentVariableReader ?? EnvironmentVariableWrapper.Instance);
}
- public override async Task> TryCreate(SourceRepository source, CancellationToken token)
+ public override async Task> TryCreate(SourceRepository source, CancellationToken token)
{
- ServiceIndexResourceV3 index = null;
- ServiceIndexCacheInfo cacheInfo = null;
+ ServiceIndexResourceV3? index = null;
+ ServiceIndexCacheInfo? cacheInfo = null;
var url = source.PackageSource.Source;
// the file type can easily rule out if we need to request the url
@@ -102,7 +100,7 @@ public override async Task> TryCreate(SourceReposito
index = cacheInfo.Index;
}
- return new Tuple(index != null, index);
+ return new Tuple(index != null, index);
}
///
@@ -116,14 +114,15 @@ public override async Task> TryCreate(SourceReposito
/// Logged to any provided as LogMinimal prior to throwing.
/// Encapsulates all other exceptions.
///
- private async Task GetServiceIndexResourceV3(
+ private async Task GetServiceIndexResourceV3(
SourceRepository source,
DateTime utcNow,
ILogger log,
CancellationToken token)
{
var url = source.PackageSource.Source;
- var httpSourceResource = await source.GetResourceAsync(token);
+ var httpSourceResource = await source.GetResourceAsync(token)
+ ?? throw new InvalidOperationException($"The source '{source.PackageSource.Source}' does not provide {nameof(HttpSourceResource)}.");
var client = httpSourceResource.HttpSource;
int maxRetries = _enhancedHttpRetryHelper.RetryCountOrDefault;
@@ -149,7 +148,7 @@ private async Task GetServiceIndexResourceV3(
},
async httpSourceResult =>
{
- var result = await ConsumeServiceIndexStreamAsync(httpSourceResult.Stream, utcNow, source.PackageSource, token);
+ var result = await ConsumeServiceIndexStreamAsync(httpSourceResult.Stream!, utcNow, source.PackageSource, token);
return result;
},
@@ -211,7 +210,7 @@ private async Task ConsumeServiceIndexStreamAsync(Stream
private static async Task ConsumeServiceIndexStreamStjAsync(Stream stream, DateTime utcNow, PackageSource source, CancellationToken token)
{
- ServiceIndexModel index;
+ ServiceIndexModel? index;
try
{
index = await JsonSerializer.DeserializeAsync(stream, JsonContext.Default.ServiceIndexModel, token);
@@ -233,7 +232,7 @@ private static async Task ConsumeServiceIndexStreamStjAs
}
// Use SemVer instead of NuGetVersion; the service index should always be in strict SemVer format.
- if (!SemanticVersion.TryParse(index.Version, out SemanticVersion version) || version.Major != 3)
+ if (!SemanticVersion.TryParse(index.Version, out SemanticVersion? version) || version.Major != 3)
{
throw new InvalidDataException(string.Format(
CultureInfo.CurrentCulture,
@@ -247,16 +246,16 @@ private static async Task ConsumeServiceIndexStreamStjAs
private static async Task ConsumeServiceIndexStreamNsjAsync(Stream stream, DateTime utcNow, PackageSource source, CancellationToken token)
{
// Parse the JSON
- JObject json = await stream.AsJObjectAsync(token);
+ JObject json = (await stream.AsJObjectAsync(token))!;
// Use SemVer instead of NuGetVersion, the service index should always be
// in strict SemVer format
- JToken versionToken;
+ JToken? versionToken;
if (json.TryGetValue("version", out versionToken) &&
versionToken.Type == JTokenType.String)
{
- SemanticVersion version;
- if (SemanticVersion.TryParse((string)versionToken, out version) &&
+ SemanticVersion? version;
+ if (SemanticVersion.TryParse((string)versionToken!, out version) &&
version.Major == 3)
{
#pragma warning disable IL2026, IL3050 // Legacy Newtonsoft.Json code path is unreachable when feature switch is true; ILC trims this branch in AOT
@@ -268,7 +267,7 @@ private static async Task ConsumeServiceIndexStreamNsjAs
string errorMessage = string.Format(
CultureInfo.CurrentCulture,
Strings.Protocol_UnsupportedVersion,
- (string)versionToken);
+ (string?)versionToken);
throw new InvalidDataException(errorMessage);
}
}
@@ -280,7 +279,7 @@ private static async Task ConsumeServiceIndexStreamNsjAs
protected class ServiceIndexCacheInfo
{
- public ServiceIndexResourceV3 Index { get; set; }
+ public ServiceIndexResourceV3? Index { get; set; }
public DateTime CachedTime { get; set; }
}
diff --git a/src/NuGet.Core/NuGet.Protocol/PublicAPI/net472/PublicAPI.Shipped.txt b/src/NuGet.Core/NuGet.Protocol/PublicAPI/net472/PublicAPI.Shipped.txt
index fb6555a4e3c..ee4975bb628 100644
--- a/src/NuGet.Core/NuGet.Protocol/PublicAPI/net472/PublicAPI.Shipped.txt
+++ b/src/NuGet.Core/NuGet.Protocol/PublicAPI/net472/PublicAPI.Shipped.txt
@@ -832,9 +832,9 @@ NuGet.Protocol.PackageUpdateResourceV2Provider.PackageUpdateResourceV2Provider()
NuGet.Protocol.PackageUpdateResourceV3Provider
NuGet.Protocol.PackageUpdateResourceV3Provider.PackageUpdateResourceV3Provider() -> void
NuGet.Protocol.PackageVulnerabilityMetadata
-~NuGet.Protocol.PackageVulnerabilityMetadata.AdvisoryUrl.get -> System.Uri
+NuGet.Protocol.PackageVulnerabilityMetadata.AdvisoryUrl.get -> System.Uri!
NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata() -> void
-~NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata(System.Uri advisoryUrl, int severity) -> void
+NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata(System.Uri! advisoryUrl, int severity) -> void
NuGet.Protocol.PackageVulnerabilityMetadata.Severity.get -> int
NuGet.Protocol.PackageVulnerabilitySeverity
NuGet.Protocol.PackageVulnerabilitySeverity.Critical = 3 -> NuGet.Protocol.PackageVulnerabilitySeverity
@@ -1391,10 +1391,10 @@ NuGet.Protocol.RepositoryCertificateInfo.RepositoryCertificateInfo() -> void
NuGet.Protocol.RepositoryCertificateInfo.Subject.get -> string!
NuGet.Protocol.RepositorySignatureResource
NuGet.Protocol.RepositorySignatureResource.AllRepositorySigned.get -> bool
-~NuGet.Protocol.RepositorySignatureResource.RepositoryCertificateInfos.get -> System.Collections.Generic.IEnumerable
-~NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(Newtonsoft.Json.Linq.JObject repoSignInformationContent, NuGet.Protocol.Core.Types.SourceRepository source) -> void
-~NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(bool allRepositorySigned, System.Collections.Generic.IEnumerable repositoryCertInfos) -> void
-~NuGet.Protocol.RepositorySignatureResource.Source.get -> string
+NuGet.Protocol.RepositorySignatureResource.RepositoryCertificateInfos.get -> System.Collections.Generic.IEnumerable!
+NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(Newtonsoft.Json.Linq.JObject! repoSignInformationContent, NuGet.Protocol.Core.Types.SourceRepository! source) -> void
+NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(bool allRepositorySigned, System.Collections.Generic.IEnumerable! repositoryCertInfos) -> void
+NuGet.Protocol.RepositorySignatureResource.Source.get -> string!
NuGet.Protocol.RepositorySignatureResource.UpdateRepositorySignatureInfo() -> void
NuGet.Protocol.RepositorySignatureResourceProvider
NuGet.Protocol.RepositorySignatureResourceProvider.RepositorySignatureResourceProvider() -> void
@@ -1423,15 +1423,15 @@ NuGet.Protocol.ServiceIndexEntry.ServiceIndexEntry(System.Uri! serviceUri, strin
NuGet.Protocol.ServiceIndexEntry.Type.get -> string!
NuGet.Protocol.ServiceIndexEntry.Uri.get -> System.Uri!
NuGet.Protocol.ServiceIndexResourceV3
-~NuGet.Protocol.ServiceIndexResourceV3.ServiceIndexResourceV3(Newtonsoft.Json.Linq.JObject index, System.DateTime requestTime) -> void
+NuGet.Protocol.ServiceIndexResourceV3.ServiceIndexResourceV3(Newtonsoft.Json.Linq.JObject! index, System.DateTime requestTime) -> void
NuGet.Protocol.ServiceIndexResourceV3Provider
NuGet.Protocol.ServiceIndexResourceV3Provider.MaxCacheDuration.get -> System.TimeSpan
NuGet.Protocol.ServiceIndexResourceV3Provider.MaxCacheDuration.set -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.CachedTime.get -> System.DateTime
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.CachedTime.set -> void
-~NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.get -> NuGet.Protocol.ServiceIndexResourceV3
-~NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.set -> void
+NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.get -> NuGet.Protocol.ServiceIndexResourceV3?
+NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.set -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.ServiceIndexCacheInfo() -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexResourceV3Provider() -> void
NuGet.Protocol.ServiceTypes
@@ -1859,7 +1859,7 @@ override NuGet.Protocol.ProxyAuthenticationHandler.SendAsync(System.Net.Http.Htt
~override NuGet.Protocol.RemoteV3FindPackageByIdResource.GetPackageDownloaderAsync(NuGet.Packaging.Core.PackageIdentity packageIdentity, NuGet.Protocol.Core.Types.SourceCacheContext cacheContext, NuGet.Common.ILogger logger, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
~override NuGet.Protocol.RemoteV3FindPackageByIdResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository sourceRepository, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
~override NuGet.Protocol.ReportAbuseResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
-~override NuGet.Protocol.RepositorySignatureResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
+override NuGet.Protocol.RepositorySignatureResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository! source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task!>!
override NuGet.Protocol.SafeBoolConverter.CanConvert(System.Type! objectType) -> bool
override NuGet.Protocol.SafeBoolConverter.CanRead.get -> bool
override NuGet.Protocol.SafeBoolConverter.CanWrite.get -> bool
@@ -1874,7 +1874,7 @@ override NuGet.Protocol.SemanticVersionConverter.CanConvert(System.Type! objectT
override NuGet.Protocol.SemanticVersionConverter.ReadJson(Newtonsoft.Json.JsonReader! reader, System.Type! objectType, object? existingValue, Newtonsoft.Json.JsonSerializer! serializer) -> object?
override NuGet.Protocol.SemanticVersionConverter.WriteJson(Newtonsoft.Json.JsonWriter! writer, object? value, Newtonsoft.Json.JsonSerializer! serializer) -> void
override NuGet.Protocol.ServerWarningLogHandler.SendAsync(System.Net.Http.HttpRequestMessage! request, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
-~override NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
+override NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository! source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task!>!
override NuGet.Protocol.StsAuthenticationHandler.SendAsync(System.Net.Http.HttpRequestMessage! request, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
~override NuGet.Protocol.SymbolPackageUpdateResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
~override NuGet.Protocol.V2FeedListResource.ListAsync(string searchTerm, bool prerelease, bool allVersions, bool includeDelisted, NuGet.Common.ILogger logger, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
@@ -2128,11 +2128,11 @@ virtual NuGet.Protocol.Plugins.Receiver.Close() -> void
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(NuGet.Packaging.Core.PackageIdentity package) -> System.Uri
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(string id, NuGet.Versioning.NuGetVersion version) -> System.Uri
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(string packageId) -> System.Uri
-~virtual NuGet.Protocol.ServiceIndexResourceV3.Entries.get -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(NuGet.Versioning.NuGetVersion clientVersion, params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUri(params string[] orderedTypes) -> System.Uri
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(NuGet.Versioning.NuGetVersion clientVersion, params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.Json.get -> string
+virtual NuGet.Protocol.ServiceIndexResourceV3.Entries.get -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(NuGet.Versioning.NuGetVersion! clientVersion, params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUri(params string![]! orderedTypes) -> System.Uri?
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(NuGet.Versioning.NuGetVersion! clientVersion, params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.Json.get -> string!
virtual NuGet.Protocol.ServiceIndexResourceV3.RequestTime.get -> System.DateTime
diff --git a/src/NuGet.Core/NuGet.Protocol/PublicAPI/net8.0/PublicAPI.Shipped.txt b/src/NuGet.Core/NuGet.Protocol/PublicAPI/net8.0/PublicAPI.Shipped.txt
index ac16caf446e..82405e42c24 100644
--- a/src/NuGet.Core/NuGet.Protocol/PublicAPI/net8.0/PublicAPI.Shipped.txt
+++ b/src/NuGet.Core/NuGet.Protocol/PublicAPI/net8.0/PublicAPI.Shipped.txt
@@ -832,9 +832,9 @@ NuGet.Protocol.PackageUpdateResourceV2Provider.PackageUpdateResourceV2Provider()
NuGet.Protocol.PackageUpdateResourceV3Provider
NuGet.Protocol.PackageUpdateResourceV3Provider.PackageUpdateResourceV3Provider() -> void
NuGet.Protocol.PackageVulnerabilityMetadata
-~NuGet.Protocol.PackageVulnerabilityMetadata.AdvisoryUrl.get -> System.Uri
+NuGet.Protocol.PackageVulnerabilityMetadata.AdvisoryUrl.get -> System.Uri!
NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata() -> void
-~NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata(System.Uri advisoryUrl, int severity) -> void
+NuGet.Protocol.PackageVulnerabilityMetadata.PackageVulnerabilityMetadata(System.Uri! advisoryUrl, int severity) -> void
NuGet.Protocol.PackageVulnerabilityMetadata.Severity.get -> int
NuGet.Protocol.PackageVulnerabilitySeverity
NuGet.Protocol.PackageVulnerabilitySeverity.Critical = 3 -> NuGet.Protocol.PackageVulnerabilitySeverity
@@ -1391,10 +1391,10 @@ NuGet.Protocol.RepositoryCertificateInfo.RepositoryCertificateInfo() -> void
NuGet.Protocol.RepositoryCertificateInfo.Subject.get -> string!
NuGet.Protocol.RepositorySignatureResource
NuGet.Protocol.RepositorySignatureResource.AllRepositorySigned.get -> bool
-~NuGet.Protocol.RepositorySignatureResource.RepositoryCertificateInfos.get -> System.Collections.Generic.IEnumerable
-~NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(Newtonsoft.Json.Linq.JObject repoSignInformationContent, NuGet.Protocol.Core.Types.SourceRepository source) -> void
-~NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(bool allRepositorySigned, System.Collections.Generic.IEnumerable repositoryCertInfos) -> void
-~NuGet.Protocol.RepositorySignatureResource.Source.get -> string
+NuGet.Protocol.RepositorySignatureResource.RepositoryCertificateInfos.get -> System.Collections.Generic.IEnumerable!
+NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(Newtonsoft.Json.Linq.JObject! repoSignInformationContent, NuGet.Protocol.Core.Types.SourceRepository! source) -> void
+NuGet.Protocol.RepositorySignatureResource.RepositorySignatureResource(bool allRepositorySigned, System.Collections.Generic.IEnumerable! repositoryCertInfos) -> void
+NuGet.Protocol.RepositorySignatureResource.Source.get -> string!
NuGet.Protocol.RepositorySignatureResource.UpdateRepositorySignatureInfo() -> void
NuGet.Protocol.RepositorySignatureResourceProvider
NuGet.Protocol.RepositorySignatureResourceProvider.RepositorySignatureResourceProvider() -> void
@@ -1423,15 +1423,15 @@ NuGet.Protocol.ServiceIndexEntry.ServiceIndexEntry(System.Uri! serviceUri, strin
NuGet.Protocol.ServiceIndexEntry.Type.get -> string!
NuGet.Protocol.ServiceIndexEntry.Uri.get -> System.Uri!
NuGet.Protocol.ServiceIndexResourceV3
-~NuGet.Protocol.ServiceIndexResourceV3.ServiceIndexResourceV3(Newtonsoft.Json.Linq.JObject index, System.DateTime requestTime) -> void
+NuGet.Protocol.ServiceIndexResourceV3.ServiceIndexResourceV3(Newtonsoft.Json.Linq.JObject! index, System.DateTime requestTime) -> void
NuGet.Protocol.ServiceIndexResourceV3Provider
NuGet.Protocol.ServiceIndexResourceV3Provider.MaxCacheDuration.get -> System.TimeSpan
NuGet.Protocol.ServiceIndexResourceV3Provider.MaxCacheDuration.set -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.CachedTime.get -> System.DateTime
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.CachedTime.set -> void
-~NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.get -> NuGet.Protocol.ServiceIndexResourceV3
-~NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.set -> void
+NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.get -> NuGet.Protocol.ServiceIndexResourceV3?
+NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.Index.set -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexCacheInfo.ServiceIndexCacheInfo() -> void
NuGet.Protocol.ServiceIndexResourceV3Provider.ServiceIndexResourceV3Provider() -> void
NuGet.Protocol.ServiceTypes
@@ -1850,7 +1850,7 @@ override NuGet.Protocol.ProxyAuthenticationHandler.SendAsync(System.Net.Http.Htt
~override NuGet.Protocol.RemoteV3FindPackageByIdResource.GetPackageDownloaderAsync(NuGet.Packaging.Core.PackageIdentity packageIdentity, NuGet.Protocol.Core.Types.SourceCacheContext cacheContext, NuGet.Common.ILogger logger, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task
~override NuGet.Protocol.RemoteV3FindPackageByIdResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository sourceRepository, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
~override NuGet.Protocol.ReportAbuseResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
-~override NuGet.Protocol.RepositorySignatureResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
+override NuGet.Protocol.RepositorySignatureResourceProvider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository! source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task!>!
override NuGet.Protocol.SafeBoolConverter.CanConvert(System.Type! objectType) -> bool
override NuGet.Protocol.SafeBoolConverter.CanRead.get -> bool
override NuGet.Protocol.SafeBoolConverter.CanWrite.get -> bool
@@ -1865,7 +1865,7 @@ override NuGet.Protocol.SemanticVersionConverter.CanConvert(System.Type! objectT
override NuGet.Protocol.SemanticVersionConverter.ReadJson(Newtonsoft.Json.JsonReader! reader, System.Type! objectType, object? existingValue, Newtonsoft.Json.JsonSerializer! serializer) -> object?
override NuGet.Protocol.SemanticVersionConverter.WriteJson(Newtonsoft.Json.JsonWriter! writer, object? value, Newtonsoft.Json.JsonSerializer! serializer) -> void
override NuGet.Protocol.ServerWarningLogHandler.SendAsync(System.Net.Http.HttpRequestMessage! request, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task!
-~override NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
+override NuGet.Protocol.ServiceIndexResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository! source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task!>!
~override NuGet.Protocol.SymbolPackageUpdateResourceV3Provider.TryCreate(NuGet.Protocol.Core.Types.SourceRepository source, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
~override NuGet.Protocol.V2FeedListResource.ListAsync(string searchTerm, bool prerelease, bool allVersions, bool includeDelisted, NuGet.Common.ILogger logger, System.Threading.CancellationToken token) -> System.Threading.Tasks.Task>
~override NuGet.Protocol.V2FeedListResource.Source.get -> string
@@ -2116,11 +2116,11 @@ virtual NuGet.Protocol.Plugins.Receiver.Close() -> void
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(NuGet.Packaging.Core.PackageIdentity package) -> System.Uri
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(string id, NuGet.Versioning.NuGetVersion version) -> System.Uri
~virtual NuGet.Protocol.RegistrationResourceV3.GetUri(string packageId) -> System.Uri
-~virtual NuGet.Protocol.ServiceIndexResourceV3.Entries.get -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(NuGet.Versioning.NuGetVersion clientVersion, params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUri(params string[] orderedTypes) -> System.Uri
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(NuGet.Versioning.NuGetVersion clientVersion, params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(params string[] orderedTypes) -> System.Collections.Generic.IReadOnlyList
-~virtual NuGet.Protocol.ServiceIndexResourceV3.Json.get -> string
+virtual NuGet.Protocol.ServiceIndexResourceV3.Entries.get -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(NuGet.Versioning.NuGetVersion! clientVersion, params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntries(params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUri(params string![]! orderedTypes) -> System.Uri?
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(NuGet.Versioning.NuGetVersion! clientVersion, params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.GetServiceEntryUris(params string![]! orderedTypes) -> System.Collections.Generic.IReadOnlyList!
+virtual NuGet.Protocol.ServiceIndexResourceV3.Json.get -> string!
virtual NuGet.Protocol.ServiceIndexResourceV3.RequestTime.get -> System.DateTime
diff --git a/src/NuGet.Core/NuGet.Protocol/Resources/RepositorySignatureResource.cs b/src/NuGet.Core/NuGet.Protocol/Resources/RepositorySignatureResource.cs
index a5dd23120b9..9b0ae76970d 100644
--- a/src/NuGet.Core/NuGet.Protocol/Resources/RepositorySignatureResource.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Resources/RepositorySignatureResource.cs
@@ -1,8 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
-#nullable disable
-
using System;
using System.Collections.Generic;
#if NET5_0_OR_GREATER
@@ -38,12 +36,12 @@ public RepositorySignatureResource(JObject repoSignInformationContent, SourceRep
throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture, Strings.Log_FailedToParseRepoSignInfor, JsonProperties.SigningCertificates, source.PackageSource.Source));
AllRepositorySigned = allRepositorySigned;
- RepositoryCertificateInfos = data.OfType().Select(p => p.FromJToken());
+ RepositoryCertificateInfos = data.OfType().Select(p => p.FromJToken()!);
foreach (var repositoryCertificateInfo in RepositoryCertificateInfos)
{
- var validUri = Uri.TryCreate(repositoryCertificateInfo.ContentUrl, UriKind.Absolute, out var repositoryContentUrl);
- if (!validUri || !string.Equals(repositoryContentUrl.Scheme, "https", StringComparison.OrdinalIgnoreCase))
+ if (!Uri.TryCreate(repositoryCertificateInfo.ContentUrl, UriKind.Absolute, out Uri? repositoryContentUrl)
+ || !string.Equals(repositoryContentUrl.Scheme, "https", StringComparison.OrdinalIgnoreCase))
{
throw new FatalProtocolException(Strings.RepositoryContentUrlMustBeHttps);
}
@@ -54,6 +52,9 @@ public RepositorySignatureResource(JObject repoSignInformationContent, SourceRep
internal RepositorySignatureResource(RepositorySignatureModel model, SourceRepository source)
{
+ _ = model ?? throw new ArgumentNullException(nameof(model));
+ _ = source ?? throw new ArgumentNullException(nameof(source));
+
AllRepositorySigned = model.AllRepositorySigned ??
throw new FatalProtocolException(string.Format(CultureInfo.CurrentCulture, Strings.Log_FailedToParseRepoSignInfor, JsonProperties.AllRepositorySigned, source.PackageSource.Source));
@@ -62,7 +63,7 @@ internal RepositorySignatureResource(RepositorySignatureModel model, SourceRepos
foreach (RepositoryCertificateInfo cert in certs)
{
- if (!Uri.TryCreate(cert.ContentUrl, UriKind.Absolute, out Uri contentUrl)
+ if (!Uri.TryCreate(cert.ContentUrl, UriKind.Absolute, out Uri? contentUrl)
|| !string.Equals(contentUrl.Scheme, "https", StringComparison.OrdinalIgnoreCase))
{
throw new FatalProtocolException(Strings.RepositoryContentUrlMustBeHttps);
@@ -78,6 +79,7 @@ public RepositorySignatureResource(bool allRepositorySigned, IEnumerable
public class ServiceIndexResourceV3 : INuGetResource
{
- private string _json;
- private readonly ServiceIndexModel _model;
+ private string? _json;
+ private readonly ServiceIndexModel? _model;
private readonly IDictionary> _index;
private readonly DateTime _requestTime;
private static readonly IReadOnlyList _emptyEntries = new List();
@@ -37,8 +35,9 @@ public class ServiceIndexResourceV3 : INuGetResource
[RequiresUnreferencedCode("Uses Newtonsoft.Json reflection-based deserialization.")]
[RequiresDynamicCode("Uses Newtonsoft.Json reflection-based deserialization.")]
#endif
- internal ServiceIndexResourceV3(JObject index, DateTime requestTime, PackageSource packageSource)
+ internal ServiceIndexResourceV3(JObject index, DateTime requestTime, PackageSource? packageSource)
{
+ _ = index ?? throw new ArgumentNullException(nameof(index));
_json = index.ToString();
_index = MakeLookup(index, packageSource);
_requestTime = requestTime;
@@ -48,10 +47,11 @@ internal ServiceIndexResourceV3(JObject index, DateTime requestTime, PackageSour
[RequiresUnreferencedCode("Uses Newtonsoft.Json reflection-based deserialization.")]
[RequiresDynamicCode("Uses Newtonsoft.Json reflection-based deserialization.")]
#endif
- public ServiceIndexResourceV3(JObject index, DateTime requestTime) : this(index, requestTime, null) { }
+ public ServiceIndexResourceV3(JObject index, DateTime requestTime) : this(index, requestTime, packageSource: null) { }
- internal ServiceIndexResourceV3(ServiceIndexModel model, DateTime requestTime, PackageSource packageSource)
+ internal ServiceIndexResourceV3(ServiceIndexModel model, DateTime requestTime, PackageSource? packageSource)
{
+ _ = model ?? throw new ArgumentNullException(nameof(model));
_model = model;
_index = MakeLookup(model, packageSource);
_requestTime = requestTime;
@@ -78,7 +78,7 @@ public virtual IReadOnlyList Entries
public virtual string Json
{
- get { return _json ??= JsonSerializer.Serialize(_model, JsonContext.Default.ServiceIndexModel); }
+ get { return _json ??= JsonSerializer.Serialize(_model!, JsonContext.Default.ServiceIndexModel); }
}
///
@@ -103,7 +103,7 @@ public virtual IReadOnlyList GetServiceEntries(NuGetVersion c
foreach (var type in orderedTypes)
{
- List entries;
+ List? entries;
if (_index.TryGetValue(type, out entries))
{
var compatible = GetBestVersionMatchForType(clientVersion, entries);
@@ -137,7 +137,7 @@ private IReadOnlyList GetBestVersionMatchForType(NuGetVersion
///
/// Get the best match service URI.
///
- public virtual Uri GetServiceEntryUri(params string[] orderedTypes)
+ public virtual Uri? GetServiceEntryUri(params string[] orderedTypes)
{
var clientVersion = MinClientVersionUtility.GetNuGetClientVersion();
@@ -167,8 +167,7 @@ public virtual IReadOnlyList GetServiceEntryUris(NuGetVersion clientVersion
return GetServiceEntries(clientVersion, orderedTypes).Select(e => e.Uri).ToList();
}
-#nullable enable
- private static IDictionary> MakeLookup(ServiceIndexModel index, PackageSource packageSource)
+ private static IDictionary> MakeLookup(ServiceIndexModel index, PackageSource? packageSource)
{
var result = new Dictionary>(StringComparer.Ordinal);
@@ -233,20 +232,18 @@ private static IDictionary> MakeLookup(ServiceIn
return result;
}
-#nullable disable
-
- private static IDictionary> MakeLookup(JObject index, PackageSource packageSource)
+ private static IDictionary> MakeLookup(JObject index, PackageSource? packageSource)
{
var result = new Dictionary>(StringComparer.Ordinal);
- JToken resources;
+ JToken? resources;
if (index.TryGetValue("resources", out resources))
{
foreach (var resource in resources)
{
var id = GetValues(resource["@id"]).SingleOrDefault();
- Uri uri;
+ Uri? uri;
if (string.IsNullOrEmpty(id) || !Uri.TryCreate(id, UriKind.Absolute, out uri))
{
// Skip invalid or missing @ids
@@ -274,7 +271,7 @@ private static IDictionary> MakeLookup(JObject i
// Parse supported versions
foreach (var versionString in GetValues(clientVersionToken))
{
- SemanticVersion version;
+ SemanticVersion? version;
if (SemanticVersion.TryParse(versionString, out version))
{
clientVersions.Add(version);
@@ -287,7 +284,7 @@ private static IDictionary> MakeLookup(JObject i
{
foreach (var version in clientVersions)
{
- List entries;
+ List? entries;
if (!result.TryGetValue(type, out entries))
{
entries = new List();
@@ -317,7 +314,7 @@ private static IDictionary> MakeLookup(JObject i
[UnconditionalSuppressMessage("AOT", "IL2026", Justification = "Only called from JObject constructor which is annotated with [RUC]/[RDC].")]
[UnconditionalSuppressMessage("AOT", "IL3050", Justification = "Only called from JObject constructor which is annotated with [RUC]/[RDC].")]
#endif
- private static IEnumerable GetValues(JToken token)
+ private static IEnumerable GetValues(JToken? token)
{
if (token?.Type == JTokenType.Array)
{
@@ -325,13 +322,13 @@ private static IEnumerable GetValues(JToken token)
{
if (entry.Type == JTokenType.String)
{
- yield return entry.ToObject();
+ yield return entry.ToObject()!;
}
}
}
else if (token?.Type == JTokenType.String)
{
- yield return token.ToObject();
+ yield return token.ToObject()!;
}
}
}
diff --git a/src/NuGet.Core/NuGet.Protocol/Resources/VulnerabilityInfoResourceV3.cs b/src/NuGet.Core/NuGet.Protocol/Resources/VulnerabilityInfoResourceV3.cs
index b9d27f80ca2..76760514b6c 100644
--- a/src/NuGet.Core/NuGet.Protocol/Resources/VulnerabilityInfoResourceV3.cs
+++ b/src/NuGet.Core/NuGet.Protocol/Resources/VulnerabilityInfoResourceV3.cs
@@ -73,7 +73,8 @@ async Task GetIndexUrlAsync(CancellationToken cancellationToken)
{
ServiceIndexResourceV3 serviceIndex = await _sourceRepository.GetResourceAsync(cancellationToken)
?? throw new InvalidOperationException($"The source '{_sourceRepository.PackageSource.Source}' does not provide {nameof(ServiceIndexResourceV3)}.");
- return serviceIndex.GetServiceEntryUri(ServiceTypes.VulnerabilityInfo);
+ return serviceIndex.GetServiceEntryUri(ServiceTypes.VulnerabilityInfo)
+ ?? throw new InvalidOperationException($"The source '{_sourceRepository.PackageSource.Source}' does not provide {nameof(ServiceTypes.VulnerabilityInfo)}.");
}
}
diff --git a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/MockServiceIndexResourceV3Provider.cs b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/MockServiceIndexResourceV3Provider.cs
index 011c5b12617..247c2fef383 100644
--- a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/MockServiceIndexResourceV3Provider.cs
+++ b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/MockServiceIndexResourceV3Provider.cs
@@ -41,7 +41,7 @@ public static ServiceIndexResourceV3Provider Create(params ServiceIndexEntry[] e
new JProperty("comment", "http://www.w3.org/2000/01/rdf-schema#comment")));
var serviceIndexResource = new ServiceIndexResourceV3(index, DateTime.UtcNow);
- var tryCreateResult = new Tuple(true, serviceIndexResource);
+ var tryCreateResult = new Tuple(true, serviceIndexResource);
provider.Setup(x => x.TryCreate(It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(tryCreateResult));
diff --git a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/PackageDetailsUriResourceV3ProviderTests.cs b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/PackageDetailsUriResourceV3ProviderTests.cs
index 4a177f442a5..1bfa1d9ead9 100644
--- a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/PackageDetailsUriResourceV3ProviderTests.cs
+++ b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/PackageDetailsUriResourceV3ProviderTests.cs
@@ -117,7 +117,7 @@ private static ServiceIndexResourceV3Provider CreateServiceIndexResourceV3Provid
new JProperty("comment", "http://www.w3.org/2000/01/rdf-schema#comment")));
var serviceIndexResource = new ServiceIndexResourceV3(index, DateTime.UtcNow);
- var tryCreateResult = new Tuple(true, serviceIndexResource);
+ var tryCreateResult = new Tuple(true, serviceIndexResource);
provider.Setup(x => x.TryCreate(It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(tryCreateResult));
diff --git a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/ReportAbuseResourceV3ProviderTests.cs b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/ReportAbuseResourceV3ProviderTests.cs
index 3840a99c42b..d1cc0afcf27 100644
--- a/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/ReportAbuseResourceV3ProviderTests.cs
+++ b/test/NuGet.Core.Tests/NuGet.Protocol.Tests/Providers/ReportAbuseResourceV3ProviderTests.cs
@@ -118,7 +118,7 @@ private static ServiceIndexResourceV3Provider CreateServiceIndexResourceV3Provid
new JProperty("comment", "http://www.w3.org/2000/01/rdf-schema#comment")));
var serviceIndexResource = new ServiceIndexResourceV3(index, DateTime.UtcNow);
- var tryCreateResult = new Tuple(true, serviceIndexResource);
+ var tryCreateResult = new Tuple(true, serviceIndexResource);
provider.Setup(x => x.TryCreate(It.IsAny(), It.IsAny()))
.Returns(Task.FromResult(tryCreateResult));