From a31206c0d9f026ed82287cd61c4d0c043b86192e Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 10 Feb 2022 13:50:43 -0500 Subject: [PATCH] - updates factory parameter name and type --- src/Kiota.Builder/CodeDOM/CodeParameter.cs | 4 ++-- src/Kiota.Builder/KiotaBuilder.cs | 2 +- src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs | 5 +++-- src/Kiota.Builder/Refiners/GoRefiner.cs | 3 ++- src/Kiota.Builder/Refiners/TypeScriptRefiner.cs | 5 +++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Kiota.Builder/CodeDOM/CodeParameter.cs b/src/Kiota.Builder/CodeDOM/CodeParameter.cs index bc0cb3455e..e1cdaac6bf 100644 --- a/src/Kiota.Builder/CodeDOM/CodeParameter.cs +++ b/src/Kiota.Builder/CodeDOM/CodeParameter.cs @@ -34,9 +34,9 @@ public enum CodeParameterKind /// Cancellation, /// - /// A parameter representing the mapping value to be used for deserialization during discrimination. + /// A parameter representing the parse node to be used for deserialization during discrimination. /// - MappingValue + ParseNode } public class CodeParameter : CodeTerminal, ICloneable, IDocumentedElement diff --git a/src/Kiota.Builder/KiotaBuilder.cs b/src/Kiota.Builder/KiotaBuilder.cs index da25591c5f..4c9750e00f 100644 --- a/src/Kiota.Builder/KiotaBuilder.cs +++ b/src/Kiota.Builder/KiotaBuilder.cs @@ -844,7 +844,7 @@ private CodeClass AddModelClass(OpenApiUrlTreeNode currentNode, OpenApiSchema sc }).First(); factoryMethod.AddParameter(new CodeParameter { Name = "parseNode", - ParameterKind = CodeParameterKind.MappingValue, + ParameterKind = CodeParameterKind.ParseNode, Optional = false, Type = new CodeType { Name = ParseNodeInterface, IsExternal = true }, }); diff --git a/src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs b/src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs index 24ac7cf95a..2e18df1909 100644 --- a/src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs +++ b/src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs @@ -576,7 +576,7 @@ protected static void AddParentClassToErrorClasses(CodeElement currentElement, s } CrawlTree(currentElement, x => AddParentClassToErrorClasses(x, parentClassName, parentClassNamespace)); } - protected static void AddDiscriminatorMappingsUsingsToParentClasses(CodeElement currentElement, bool addFactoryMethodImport = false) { + protected static void AddDiscriminatorMappingsUsingsToParentClasses(CodeElement currentElement, string parseNodeInterfaceName, bool addFactoryMethodImport = false) { if(currentElement is CodeMethod currentMethod && currentMethod.Parent is CodeClass parentClass && parentClass.StartBlock is CodeClass.Declaration declaration) { @@ -589,6 +589,7 @@ currentMethod.Parent is CodeClass parentClass && TypeDefinition = codeType.TypeDefinition, } : null, }).ToArray()); + currentMethod.Parameters.OfKind(CodeParameterKind.ParseNode).Type.Name = parseNodeInterfaceName; } else if (addFactoryMethodImport && currentMethod.IsOfKind(CodeMethodKind.RequestExecutor) && currentMethod.ReturnType is CodeType type && @@ -603,6 +604,6 @@ type.TypeDefinition is CodeClass modelClass && }); } } - CrawlTree(currentElement, x => AddDiscriminatorMappingsUsingsToParentClasses(x, addFactoryMethodImport)); + CrawlTree(currentElement, x => AddDiscriminatorMappingsUsingsToParentClasses(x, parseNodeInterfaceName, addFactoryMethodImport)); } } diff --git a/src/Kiota.Builder/Refiners/GoRefiner.cs b/src/Kiota.Builder/Refiners/GoRefiner.cs index e4dc5136da..04af2a91db 100644 --- a/src/Kiota.Builder/Refiners/GoRefiner.cs +++ b/src/Kiota.Builder/Refiners/GoRefiner.cs @@ -94,6 +94,7 @@ public override void Refine(CodeNamespace generatedCode) ); AddDiscriminatorMappingsUsingsToParentClasses( generatedCode, + "ParseNode", true ); } @@ -264,7 +265,7 @@ private static void AddErrorImportForEnums(CodeElement currentElement) { "strconv", "FormatBool"), new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Serializer), "github.com/microsoft/kiota/abstractions/go/serialization", "SerializationWriter"), - new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Deserializer), + new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Deserializer, CodeMethodKind.Factory), "github.com/microsoft/kiota/abstractions/go/serialization", "ParseNode", "Parsable"), new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.RequestExecutor) && method.ErrorMappings.Any(), "github.com/microsoft/kiota/abstractions/go/serialization", "Parsable"), diff --git a/src/Kiota.Builder/Refiners/TypeScriptRefiner.cs b/src/Kiota.Builder/Refiners/TypeScriptRefiner.cs index e7ef5afa9c..e38e717b0a 100644 --- a/src/Kiota.Builder/Refiners/TypeScriptRefiner.cs +++ b/src/Kiota.Builder/Refiners/TypeScriptRefiner.cs @@ -38,7 +38,8 @@ public override void Refine(CodeNamespace generatedCode) "@microsoft/kiota-abstractions" ); AddDiscriminatorMappingsUsingsToParentClasses( - generatedCode + generatedCode, + "ParseNode" ); } private static readonly CodeUsingDeclarationNameComparer usingComparer = new(); @@ -79,7 +80,7 @@ currentClass.StartBlock is CodeClass.Declaration currentDeclaration && AbstractionsPackageName, "ResponseHandler"), new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Serializer), AbstractionsPackageName, "SerializationWriter"), - new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Deserializer), + new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Deserializer, CodeMethodKind.Factory), AbstractionsPackageName, "ParseNode"), new (x => x is CodeMethod method && method.IsOfKind(CodeMethodKind.Constructor, CodeMethodKind.ClientConstructor, CodeMethodKind.IndexerBackwardCompatibility), AbstractionsPackageName, "getPathParameters"),