diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1d78a5057a..81e0dbe606 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,14 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
-### Changed
-- Implemented partial class model declarations. [4894](https://github.com/microsoft/kiota/issues/4894)
-- Fixed a bug where the Go file names were too long
-
### Added
### Changed
+- Implemented partial class model declarations. [4894](https://github.com/microsoft/kiota/issues/4894)
+- Fixed a bug where the Go file names were too long
- Fixes bug with model names in Go generated from camel case namespace. [https://github.com/microsoftgraph/msgraph-sdk-go/issues/721]
- Plugins OpenAPI extensions are only added when generating plugins to reduce the risk of parsing errors. [#4834](https://github.com/microsoft/kiota/issues/4834)
- TypeScript imports are now using ES6 imports with the .js extension.
@@ -22,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Ensures descriptions are not empty in sliced OpenApi file when generating a plugin.
- Plugins do not emit parameters anymore. [#4841](https://github.com/microsoft/kiota/issues/4841)
- References to C# types generated by kiota are prefixed with `global::` to avoid name collisions. [#4796](https://github.com/microsoft/kiota/issues/4796)
+- Ensures HashSet properties in `KiotaLock` maintain IgnoreCase comparer across runs [#4916](https://github.com/microsoft/kiota/issues/4916)
+- Dropped `client base url set to` message when generating plugins. [#4905](https://github.com/microsoft/kiota/issues/4905)
## [1.15.0] - 2024-06-06
diff --git a/src/Kiota.Builder/KiotaBuilder.cs b/src/Kiota.Builder/KiotaBuilder.cs
index 226e831e78..f3535b3cf0 100644
--- a/src/Kiota.Builder/KiotaBuilder.cs
+++ b/src/Kiota.Builder/KiotaBuilder.cs
@@ -432,7 +432,10 @@ internal void SetApiRootUrl()
if (openApiDocument is not null && openApiDocument.GetAPIRootUrl(config.OpenAPIFilePath) is string candidateUrl)
{
config.ApiRootUrl = candidateUrl;
- logger.LogInformation("Client root URL set to {ApiRootUrl}", candidateUrl);
+ if (!config.IsPluginConfiguration)
+ {
+ logger.LogInformation("Client root URL set to {ApiRootUrl}", candidateUrl);
+ }
}
else
logger.LogWarning("No server url found in the OpenAPI document. The base url will need to be set when using the client.");
diff --git a/src/Kiota.Builder/Lock/KiotaLock.cs b/src/Kiota.Builder/Lock/KiotaLock.cs
index 433861a2fa..a5d38c2fc4 100644
--- a/src/Kiota.Builder/Lock/KiotaLock.cs
+++ b/src/Kiota.Builder/Lock/KiotaLock.cs
@@ -70,11 +70,11 @@ public bool DisableSSLValidation
///
/// The serializers used for this client.
///
- public HashSet Serializers { get; set; } = new();
+ public HashSet Serializers { get; set; } = new(StringComparer.OrdinalIgnoreCase);
///
/// The deserializers used for this client.
///
- public HashSet Deserializers { get; set; } = new();
+ public HashSet Deserializers { get; set; } = new(StringComparer.OrdinalIgnoreCase);
///
/// The structured mime types used for this client.
///
@@ -84,15 +84,15 @@ public bool DisableSSLValidation
///
/// The path patterns for API endpoints to include for this client.
///
- public HashSet IncludePatterns { get; set; } = new();
+ public HashSet IncludePatterns { get; set; } = new(StringComparer.OrdinalIgnoreCase);
///
/// The path patterns for API endpoints to exclude for this client.
///
- public HashSet ExcludePatterns { get; set; } = new();
+ public HashSet ExcludePatterns { get; set; } = new(StringComparer.OrdinalIgnoreCase);
///
/// The OpenAPI validation rules to disable during the generation.
///
- public HashSet DisabledValidationRules { get; set; } = new();
+ public HashSet DisabledValidationRules { get; set; } = new(StringComparer.OrdinalIgnoreCase);
#pragma warning restore CA2227
///
/// Updates the passed configuration with the values from the lock file.
@@ -108,13 +108,13 @@ public void UpdateGenerationConfigurationFromLock(GenerationConfiguration config
config.UsesBackingStore = UsesBackingStore;
config.ExcludeBackwardCompatible = ExcludeBackwardCompatible;
config.IncludeAdditionalData = IncludeAdditionalData;
- config.Serializers = Serializers;
- config.Deserializers = Deserializers;
+ config.Serializers = Serializers.ToHashSet(StringComparer.OrdinalIgnoreCase);
+ config.Deserializers = Deserializers.ToHashSet(StringComparer.OrdinalIgnoreCase);
config.StructuredMimeTypes = new(StructuredMimeTypes);
- config.IncludePatterns = IncludePatterns;
- config.ExcludePatterns = ExcludePatterns;
+ config.IncludePatterns = IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
+ config.ExcludePatterns = ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
config.OpenAPIFilePath = DescriptionLocation;
- config.DisabledValidationRules = DisabledValidationRules;
+ config.DisabledValidationRules = DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase);
config.DisableSSLValidation = DisableSSLValidation;
}
///
@@ -136,13 +136,13 @@ public KiotaLock(GenerationConfiguration config)
UsesBackingStore = config.UsesBackingStore;
ExcludeBackwardCompatible = config.ExcludeBackwardCompatible;
IncludeAdditionalData = config.IncludeAdditionalData;
- Serializers = config.Serializers;
- Deserializers = config.Deserializers;
+ Serializers = config.Serializers.ToHashSet(StringComparer.OrdinalIgnoreCase);
+ Deserializers = config.Deserializers.ToHashSet(StringComparer.OrdinalIgnoreCase);
StructuredMimeTypes = config.StructuredMimeTypes.ToList();
- IncludePatterns = config.IncludePatterns;
- ExcludePatterns = config.ExcludePatterns;
+ IncludePatterns = config.IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
+ ExcludePatterns = config.ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
DescriptionLocation = config.OpenAPIFilePath;
- DisabledValidationRules = config.DisabledValidationRules;
+ DisabledValidationRules = config.DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase);
DisableSSLValidation = config.DisableSSLValidation;
}
}
diff --git a/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs
index ede1bb7db7..a8441571fd 100644
--- a/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs
+++ b/src/Kiota.Builder/WorkspaceManagement/ApiClientConfiguration.cs
@@ -48,7 +48,7 @@ public bool ExcludeBackwardCompatible
///
/// The OpenAPI validation rules to disable during the generation.
///
- public HashSet DisabledValidationRules { get; set; } = new();
+ public HashSet DisabledValidationRules { get; set; } = new(StringComparer.OrdinalIgnoreCase);
///
/// Initializes a new instance of the class.
///
@@ -69,7 +69,7 @@ public ApiClientConfiguration(GenerationConfiguration config) : base(config)
ExcludeBackwardCompatible = config.ExcludeBackwardCompatible;
IncludeAdditionalData = config.IncludeAdditionalData;
StructuredMimeTypes = config.StructuredMimeTypes.ToList();
- DisabledValidationRules = config.DisabledValidationRules;
+ DisabledValidationRules = config.DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase);
}
///
/// Updates the passed configuration with the values from the config file.
@@ -88,7 +88,7 @@ public void UpdateGenerationConfigurationFromApiClientConfiguration(GenerationCo
config.ExcludeBackwardCompatible = ExcludeBackwardCompatible;
config.IncludeAdditionalData = IncludeAdditionalData;
config.StructuredMimeTypes = new(StructuredMimeTypes);
- config.DisabledValidationRules = DisabledValidationRules;
+ config.DisabledValidationRules = DisabledValidationRules.ToHashSet(StringComparer.OrdinalIgnoreCase);
UpdateGenerationConfigurationFromBase(config, clientName, requests);
}
diff --git a/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs
index 5e690e8f64..2999501447 100644
--- a/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs
+++ b/src/Kiota.Builder/WorkspaceManagement/ApiPluginConfiguration.cs
@@ -23,7 +23,7 @@ public ApiPluginConfiguration() : base()
public ApiPluginConfiguration(GenerationConfiguration config) : base(config)
{
ArgumentNullException.ThrowIfNull(config);
- Types = config.PluginTypes.Select(x => x.ToString()).ToHashSet();
+ Types = config.PluginTypes.Select(x => x.ToString()).ToHashSet(StringComparer.OrdinalIgnoreCase);
}
public HashSet Types { get; set; } = new(StringComparer.OrdinalIgnoreCase);
public object Clone()
@@ -45,7 +45,7 @@ public void UpdateGenerationConfigurationFromApiPluginConfiguration(GenerationCo
{
ArgumentNullException.ThrowIfNull(config);
ArgumentException.ThrowIfNullOrEmpty(pluginName);
- config.PluginTypes = Types.Select(x => Enum.TryParse(x, out var result) ? result : (PluginType?)null).OfType().ToHashSet();
+ config.PluginTypes = Types.Select(x => Enum.TryParse(x, true, out var result) ? result : (PluginType?)null).OfType().ToHashSet();
UpdateGenerationConfigurationFromBase(config, pluginName, requests);
}
}
diff --git a/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs b/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs
index fa0e320a9c..5bdbf36388 100644
--- a/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs
+++ b/src/Kiota.Builder/WorkspaceManagement/BaseApiConsumerConfiguration.cs
@@ -18,8 +18,8 @@ private protected BaseApiConsumerConfiguration(GenerationConfiguration config)
{
ArgumentNullException.ThrowIfNull(config);
DescriptionLocation = config.OpenAPIFilePath;
- IncludePatterns = new HashSet(config.IncludePatterns);
- ExcludePatterns = new HashSet(config.ExcludePatterns);
+ IncludePatterns = new HashSet(config.IncludePatterns, StringComparer.OrdinalIgnoreCase);
+ ExcludePatterns = new HashSet(config.ExcludePatterns, StringComparer.OrdinalIgnoreCase);
OutputPath = config.OutputPath;
}
///
@@ -60,8 +60,8 @@ protected void UpdateGenerationConfigurationFromBase(GenerationConfiguration con
{
ArgumentNullException.ThrowIfNull(config);
ArgumentException.ThrowIfNullOrEmpty(clientName);
- config.IncludePatterns = IncludePatterns;
- config.ExcludePatterns = ExcludePatterns;
+ config.IncludePatterns = IncludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
+ config.ExcludePatterns = ExcludePatterns.ToHashSet(StringComparer.OrdinalIgnoreCase);
config.OpenAPIFilePath = DescriptionLocation;
config.OutputPath = OutputPath;
config.ClientClassName = clientName;
diff --git a/src/kiota/Handlers/BaseKiotaCommandHandler.cs b/src/kiota/Handlers/BaseKiotaCommandHandler.cs
index 5cf3f62755..e6649c01c9 100644
--- a/src/kiota/Handlers/BaseKiotaCommandHandler.cs
+++ b/src/kiota/Handlers/BaseKiotaCommandHandler.cs
@@ -310,8 +310,8 @@ private static string GetSourceArg(string path, string manifest)
}
protected void DisplayUrlInformation(string? apiRootUrl, bool isPlugin = false)
{
- if (!string.IsNullOrEmpty(apiRootUrl))
- DisplayInfo($"{(isPlugin ? "Plugin" : "Client")} base url set to {apiRootUrl}");
+ if (!string.IsNullOrEmpty(apiRootUrl) && !isPlugin)
+ DisplayInfo($"Client base url set to {apiRootUrl}");
}
protected void DisplayGenerateCommandHint()
{
diff --git a/src/kiota/Handlers/Plugin/AddHandler.cs b/src/kiota/Handlers/Plugin/AddHandler.cs
index bb31d1a269..e6bfc11e91 100644
--- a/src/kiota/Handlers/Plugin/AddHandler.cs
+++ b/src/kiota/Handlers/Plugin/AddHandler.cs
@@ -75,7 +75,7 @@ public override async Task InvokeAsync(InvocationContext context)
if (result)
{
DisplaySuccess("Generation completed successfully");
- DisplayUrlInformation(Configuration.Generation.ApiRootUrl);
+ DisplayUrlInformation(Configuration.Generation.ApiRootUrl, true);
}
else if (skipGeneration)
{
diff --git a/src/kiota/Handlers/Plugin/EditHandler.cs b/src/kiota/Handlers/Plugin/EditHandler.cs
index a005fed5d1..895c48504d 100644
--- a/src/kiota/Handlers/Plugin/EditHandler.cs
+++ b/src/kiota/Handlers/Plugin/EditHandler.cs
@@ -92,7 +92,7 @@ public override async Task InvokeAsync(InvocationContext context)
if (result)
{
DisplaySuccess("Generation completed successfully");
- DisplayUrlInformation(Configuration.Generation.ApiRootUrl);
+ DisplayUrlInformation(Configuration.Generation.ApiRootUrl, true);
}
else if (skipGeneration)
{