diff --git a/src/Cli.Tests/TestHelper.cs b/src/Cli.Tests/TestHelper.cs index 6e1e7aefe5..9ecf02cc64 100644 --- a/src/Cli.Tests/TestHelper.cs +++ b/src/Cli.Tests/TestHelper.cs @@ -1247,7 +1247,7 @@ public static Process ExecuteDabCommand(string command, string flags) /// public static string GenerateConfigWithGivenDepthLimit(string? depthLimitJson = null) { - string depthLimitSection = depthLimitJson.IsNullOrEmpty() ? string.Empty : ("," + depthLimitJson); + string depthLimitSection = string.IsNullOrEmpty(depthLimitJson) ? string.Empty : ("," + depthLimitJson); string runtimeSection = $@" ""runtime"": {{ diff --git a/src/Cli/CollectionUtilities.cs b/src/Cli/CollectionUtilities.cs deleted file mode 100644 index 9f1eb62097..0000000000 --- a/src/Cli/CollectionUtilities.cs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -namespace Cli; - -/// -/// A class which contains useful methods for processing collections. -/// Pulled from Microsoft.IdentityModel.JsonWebTokens which changed the -/// helper to be internal. -/// -/// -internal static class CollectionUtilities -{ - /// - /// Checks whether is null or empty. - /// - /// The type of the . - /// The to be checked. - /// True if is null or empty, false otherwise. - public static bool IsNullOrEmpty(this IEnumerable? enumerable) - { - return enumerable == null || !enumerable.Any(); - } -} diff --git a/src/Cli/ConfigGenerator.cs b/src/Cli/ConfigGenerator.cs index 6d230753dc..3782001a0a 100644 --- a/src/Cli/ConfigGenerator.cs +++ b/src/Cli/ConfigGenerator.cs @@ -8,6 +8,7 @@ using Azure.DataApiBuilder.Config.Converters; using Azure.DataApiBuilder.Config.NamingPolicies; using Azure.DataApiBuilder.Config.ObjectModel; +using Azure.DataApiBuilder.Core; using Azure.DataApiBuilder.Core.Configurations; using Azure.DataApiBuilder.Service; using Cli.Commands; @@ -609,7 +610,7 @@ private static bool TryUpdateConfiguredDataSourceOptions( dbOptions.Add(namingPolicy.ConvertName(nameof(MsSqlOptions.SetSessionContext)), options.DataSourceOptionsSetSessionContext.Value); } - dbOptions = dbOptions.IsNullOrEmpty() ? null : dbOptions; + dbOptions = EnumerableUtilities.IsNullOrEmpty(dbOptions) ? null : dbOptions; DataSource dataSource = new(dbType, dataSourceConnectionString, dbOptions); runtimeConfig = runtimeConfig with { DataSource = dataSource }; diff --git a/src/Core/CollectionUtilities.cs b/src/Core/EnumerableUtilities.cs similarity index 70% rename from src/Core/CollectionUtilities.cs rename to src/Core/EnumerableUtilities.cs index 3d94df33c9..0c85d71ef3 100644 --- a/src/Core/CollectionUtilities.cs +++ b/src/Core/EnumerableUtilities.cs @@ -5,11 +5,8 @@ namespace Azure.DataApiBuilder.Core; /// /// A class which contains useful methods for processing collections. -/// Pulled from Microsoft.IdentityModel.JsonWebTokens which changed the -/// helper to be internal. /// -/// -internal static class CollectionUtilities +public static class EnumerableUtilities { /// /// Checks whether is null or empty. diff --git a/src/Core/Resolvers/MsSqlQueryBuilder.cs b/src/Core/Resolvers/MsSqlQueryBuilder.cs index 93662e7d2b..fe695e37a0 100644 --- a/src/Core/Resolvers/MsSqlQueryBuilder.cs +++ b/src/Core/Resolvers/MsSqlQueryBuilder.cs @@ -421,7 +421,7 @@ private string MakeOutputColumns(List columns, string columnPref /// private string Build(LabelledColumn column, string columnPrefix) { - if (columnPrefix.IsNullOrEmpty()) + if (string.IsNullOrEmpty(columnPrefix)) { return $"{QuoteIdentifier(column.ColumnName)} AS {QuoteIdentifier(column.Label)}"; } diff --git a/src/Core/Resolvers/SqlMutationEngine.cs b/src/Core/Resolvers/SqlMutationEngine.cs index 388b980ebf..100e8d2a03 100644 --- a/src/Core/Resolvers/SqlMutationEngine.cs +++ b/src/Core/Resolvers/SqlMutationEngine.cs @@ -1423,7 +1423,7 @@ private void ProcessMultipleCreateInputField( queryParameters, queryExecutor.ExtractResultSetFromDbDataReader, GetHttpContext(), - exposedColumnNames.IsNullOrEmpty() ? sourceDefinition.Columns.Keys.ToList() : exposedColumnNames, + EnumerableUtilities.IsNullOrEmpty(exposedColumnNames) ? sourceDefinition.Columns.Keys.ToList() : exposedColumnNames, dataSourceName); dbResultSetRow = dbResultSet is not null ? (dbResultSet.Rows.FirstOrDefault() ?? new DbResultSetRow()) : null; diff --git a/src/Service.Tests/Configuration/ConfigurationTests.cs b/src/Service.Tests/Configuration/ConfigurationTests.cs index 94cb8a3fbf..adccf22b0b 100644 --- a/src/Service.Tests/Configuration/ConfigurationTests.cs +++ b/src/Service.Tests/Configuration/ConfigurationTests.cs @@ -1389,7 +1389,7 @@ public async Task TestSqlMetadataForValidConfigEntities() configValidator.ValidateRelationshipConfigCorrectness(configProvider.GetConfig()); await configValidator.ValidateEntitiesMetadata(configProvider.GetConfig(), mockLoggerFactory); - Assert.IsTrue(configValidator.ConfigValidationExceptions.IsNullOrEmpty()); + Assert.IsTrue(EnumerableUtilities.IsNullOrEmpty(configValidator.ConfigValidationExceptions)); } /// @@ -1574,7 +1574,7 @@ public async Task TestConfigSchemaIsValid() JsonSchemaValidationResult result = await jsonSchemaValidator.ValidateJsonConfigWithSchemaAsync(jsonSchema, jsonData); Assert.IsTrue(result.IsValid); - Assert.IsTrue(result.ValidationErrors.IsNullOrEmpty()); + Assert.IsTrue(EnumerableUtilities.IsNullOrEmpty(result.ValidationErrors)); schemaValidatorLogger.Verify( x => x.Log( LogLevel.Information, diff --git a/src/Service.Tests/Configuration/TelemetryTests.cs b/src/Service.Tests/Configuration/TelemetryTests.cs index fd1a8f3571..3b49ddae5d 100644 --- a/src/Service.Tests/Configuration/TelemetryTests.cs +++ b/src/Service.Tests/Configuration/TelemetryTests.cs @@ -168,7 +168,7 @@ public async Task TestNoTelemetryItemsSentWhenDisabled_NonHostedScenario(bool is List telemetryItems = ((CustomTelemetryChannel)telemetryChannel).GetTelemetryItems(); // Assert that we are not sending any Traces/Requests/Exceptions to Telemetry - Assert.IsTrue(telemetryItems.IsNullOrEmpty()); + Assert.IsTrue(EnumerableUtilities.IsNullOrEmpty(telemetryItems)); } ///