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));
}
///