Skip to content

Commit

Permalink
- updates factory parameter name and type
Browse files Browse the repository at this point in the history
  • Loading branch information
baywet committed Feb 10, 2022
1 parent 8a9b9f6 commit a31206c
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/Kiota.Builder/CodeDOM/CodeParameter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ public enum CodeParameterKind
/// </summary>
Cancellation,
/// <summary>
/// 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.
/// </summary>
MappingValue
ParseNode
}

public class CodeParameter : CodeTerminal, ICloneable, IDocumentedElement
Expand Down
2 changes: 1 addition & 1 deletion src/Kiota.Builder/KiotaBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
});
Expand Down
5 changes: 3 additions & 2 deletions src/Kiota.Builder/Refiners/CommonLanguageRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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 &&
Expand All @@ -603,6 +604,6 @@ type.TypeDefinition is CodeClass modelClass &&
});
}
}
CrawlTree(currentElement, x => AddDiscriminatorMappingsUsingsToParentClasses(x, addFactoryMethodImport));
CrawlTree(currentElement, x => AddDiscriminatorMappingsUsingsToParentClasses(x, parseNodeInterfaceName, addFactoryMethodImport));
}
}
3 changes: 2 additions & 1 deletion src/Kiota.Builder/Refiners/GoRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ public override void Refine(CodeNamespace generatedCode)
);
AddDiscriminatorMappingsUsingsToParentClasses(
generatedCode,
"ParseNode",
true
);
}
Expand Down Expand Up @@ -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"),
Expand Down
5 changes: 3 additions & 2 deletions src/Kiota.Builder/Refiners/TypeScriptRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ public override void Refine(CodeNamespace generatedCode)
"@microsoft/kiota-abstractions"
);
AddDiscriminatorMappingsUsingsToParentClasses(
generatedCode
generatedCode,
"ParseNode"
);
}
private static readonly CodeUsingDeclarationNameComparer usingComparer = new();
Expand Down Expand Up @@ -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"),
Expand Down

0 comments on commit a31206c

Please sign in to comment.