Skip to content

Commit

Permalink
- additional code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
baywet committed Sep 1, 2022
1 parent 0f73cc0 commit 75949b0
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 31 deletions.
13 changes: 6 additions & 7 deletions src/Kiota.Builder/Writers/CSharp/CodeMethodWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,8 @@ private void WriteFactoryMethodBodyForIntersectionModel(CodeMethod codeElement,
writer.WriteLine("else {");
writer.IncreaseIndent();
}
foreach(var property in complexProperties) {
var mappedType = parentClass.DiscriminatorInformation.DiscriminatorMappings.FirstOrDefault(x => x.Value.Name.Equals(property.Item2.Name, StringComparison.OrdinalIgnoreCase));
foreach(var property in complexProperties)
writer.WriteLine($"{ResultVarName}.{property.Item1.Name.ToFirstCharacterUpperCase()} = new {conventions.GetTypeString(property.Item2, codeElement)}();");
}
if(includeElse) {
writer.CloseBlock();
}
Expand Down Expand Up @@ -265,15 +263,16 @@ private void WriteDeserializerBody(bool shouldHide, CodeMethod codeElement, Code
private void WriteDeserializerBodyForUnionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer)
{
var includeElse = false;
foreach (var otherProp in parentClass
foreach (var otherPropName in parentClass
.Properties
.Where(static x => !x.ExistsInBaseType && x.IsOfKind(CodePropertyKind.Custom))
.Where(static x => x.Type is CodeType propertyType && !propertyType.IsCollection && propertyType.TypeDefinition is CodeClass)
.OrderBy(static x => x, CodePropertyTypeForwardComparer)
.ThenBy(static x => x.Name))
.ThenBy(static x => x.Name)
.Select(static x => x.Name.ToFirstCharacterUpperCase()))
{
writer.StartBlock($"{(includeElse? "else " : string.Empty)}if({otherProp.Name.ToFirstCharacterUpperCase()} != null) {{");
writer.WriteLine($"return {otherProp.Name.ToFirstCharacterUpperCase()}.{method.Name.ToFirstCharacterUpperCase()}();");
writer.StartBlock($"{(includeElse? "else " : string.Empty)}if({otherPropName} != null) {{");
writer.WriteLine($"return {otherPropName}.{method.Name.ToFirstCharacterUpperCase()}();");
writer.CloseBlock();
if(!includeElse)
includeElse = true;
Expand Down
16 changes: 7 additions & 9 deletions src/Kiota.Builder/Writers/Go/CodeMethodWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ private void WriteFactoryMethodBodyForIntersectionModel(CodeMethod codeElement,
.ToArray();
foreach(var property in otherProps) {
if(property.Type is CodeType propertyType) {
var typeName = conventions.GetTypeString(propertyType, codeElement, true, false);
var valueVarName = "val";
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if {valueVarName}, err := {parseNodeParameter.Name.ToFirstCharacterLowerCase()}.{GetDeserializationMethodName(propertyType, parentClass)}; {valueVarName} != nil {{");
var propertyTypeImportName = conventions.GetTypeString(property.Type, parentClass, false, false);
Expand Down Expand Up @@ -167,10 +166,8 @@ private void WriteFactoryMethodBodyForIntersectionModel(CodeMethod codeElement,
if(complexProperties.Any()) {
if(includeElse)
writer.StartBlock("} else {");
foreach(var property in complexProperties) {
var mappedType = parentClass.DiscriminatorInformation.DiscriminatorMappings.FirstOrDefault(x => x.Value.Name.Equals(property.Item2.Name, StringComparison.OrdinalIgnoreCase));
foreach(var property in complexProperties)
writer.WriteLine($"{ResultVarName}.{property.Item1.Setter.Name.ToFirstCharacterUpperCase()}({conventions.GetImportedStaticMethodName(property.Item2, codeElement)}())");
}
if(includeElse)
writer.CloseBlock();
} else if (otherProps.Any())
Expand Down Expand Up @@ -501,22 +498,23 @@ private void WriteDeserializerBody(CodeMethod codeElement, CodeClass parentClass
private static void WriteDeserializerBodyForUnionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer)
{
var includeElse = false;
var otherProps = parentClass
var otherPropGetters = parentClass
.Properties
.Where(static x => !x.ExistsInBaseType && x.IsOfKind(CodePropertyKind.Custom))
.Where(static x => x.Type is CodeType propertyType && !propertyType.IsCollection && propertyType.TypeDefinition is CodeClass)
.OrderBy(static x => x, CodePropertyTypeForwardComparer)
.ThenBy(static x => x.Name)
.Select(static x => x.Getter.Name.ToFirstCharacterUpperCase())
.ToArray();
foreach (var otherProp in otherProps)
foreach (var otherPropGetter in otherPropGetters)
{
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if m.{otherProp.Getter.Name.ToFirstCharacterUpperCase()}() != nil {{");
writer.WriteLine($"return m.{otherProp.Getter.Name.ToFirstCharacterUpperCase()}().{method.Name.ToFirstCharacterUpperCase()}()");
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if m.{otherPropGetter}() != nil {{");
writer.WriteLine($"return m.{otherPropGetter}().{method.Name.ToFirstCharacterUpperCase()}()");
writer.DecreaseIndent();
if(!includeElse)
includeElse = true;
}
if(otherProps.Any())
if(otherPropGetters.Any())
writer.CloseBlock(decreaseIndent: false);
writer.WriteLine($"return make({method.ReturnType.Name})");
}
Expand Down
26 changes: 11 additions & 15 deletions src/Kiota.Builder/Writers/Java/CodeMethodWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public override void WriteCodeElement(CodeMethod codeElement, LanguageWriter wri
WriteSerializerBody(parentClass, codeElement, writer, inherits);
break;
case CodeMethodKind.Deserializer:
WriteDeserializerBody(codeElement, codeElement, parentClass, writer, inherits);
WriteDeserializerBody(codeElement, parentClass, writer, inherits);
break;
case CodeMethodKind.IndexerBackwardCompatibility:
WriteIndexerBody(codeElement, parentClass, writer, returnType);
Expand Down Expand Up @@ -126,10 +126,8 @@ private void WriteFactoryMethodBodyForIntersectionModel(CodeMethod codeElement,
.ToArray();
foreach(var property in otherProps) {
if(property.Type is CodeType propertyType) {
var typeName = conventions.GetTypeString(propertyType, codeElement, true);
var deserializationMethodName = $"{parseNodeParameter.Name.ToFirstCharacterLowerCase()}.{GetDeserializationMethodName(propertyType, codeElement)}";
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if ({deserializationMethodName} != null) {{");
var propertyTypeImportName = conventions.GetTypeString(property.Type, parentClass, false);
writer.WriteLine($"{ResultVarName}.{property.Setter.Name.ToFirstCharacterLowerCase()}({deserializationMethodName});");
writer.DecreaseIndent();
}
Expand All @@ -143,10 +141,8 @@ private void WriteFactoryMethodBodyForIntersectionModel(CodeMethod codeElement,
if(complexProperties.Any()) {
if(includeElse)
writer.StartBlock("} else {");
foreach(var property in complexProperties) {
var mappedType = parentClass.DiscriminatorInformation.DiscriminatorMappings.FirstOrDefault(x => x.Value.Name.Equals(property.Item2.Name, StringComparison.OrdinalIgnoreCase));
foreach(var property in complexProperties)
writer.WriteLine($"{ResultVarName}.{property.Item1.Setter.Name.ToFirstCharacterLowerCase()}(new {conventions.GetTypeString(property.Item2, codeElement, false)}());");
}
if(includeElse)
writer.CloseBlock();
} else if (otherProps.Any())
Expand Down Expand Up @@ -190,7 +186,6 @@ private void WriteFactoryMethodBodyForUnionModelForUnDiscriminatedTypes(CodeMeth
var propertyType = property.Type as CodeType;
var serializationMethodName = $"{parseNodeParameter.Name.ToFirstCharacterLowerCase()}.{GetDeserializationMethodName(propertyType, currentElement)}";
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if ({serializationMethodName} != null) {{");
var propertyTypeImportName = conventions.GetTypeString(property.Type, parentClass, false);
writer.WriteLine($"{ResultVarName}.{property.Setter.Name.ToFirstCharacterLowerCase()}({serializationMethodName});");
writer.DecreaseIndent();
if(!includeElse)
Expand Down Expand Up @@ -318,37 +313,38 @@ private void WriteIndexerBody(CodeMethod codeElement, CodeClass parentClass, Lan
(codeElement.OriginalIndexer.IndexType, codeElement.OriginalIndexer.SerializationName, "id"));
conventions.AddRequestBuilderBody(parentClass, returnType, writer, conventions.TempDictionaryVarName);
}
private void WriteDeserializerBody(CodeMethod codeElement, CodeMethod method, CodeClass parentClass, LanguageWriter writer, bool inherits) {
private void WriteDeserializerBody(CodeMethod codeElement, CodeClass parentClass, LanguageWriter writer, bool inherits) {
if (parentClass.DiscriminatorInformation.ShouldWriteDiscriminatorForUnionType)
WriteDeserializerBodyForUnionModel(codeElement, parentClass, writer);
else if (parentClass.DiscriminatorInformation.ShouldWriteDiscriminatorForIntersectionType)
WriteDeserializerBodyForIntersectionModel(codeElement, parentClass, writer);
WriteDeserializerBodyForIntersectionModel(parentClass, writer);
else
WriteDeserializerBodyForInheritedModel(codeElement, parentClass, writer, inherits);
}
private static void WriteDeserializerBodyForUnionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer)
{
var includeElse = false;
var otherProps = parentClass
var otherPropGetters = parentClass
.Properties
.Where(static x => !x.ExistsInBaseType && x.IsOfKind(CodePropertyKind.Custom))
.Where(static x => x.Type is CodeType propertyType && !propertyType.IsCollection && propertyType.TypeDefinition is CodeClass)
.OrderBy(static x => x, CodePropertyTypeForwardComparer)
.ThenBy(static x => x.Name)
.Select(static x => x.Getter.Name.ToFirstCharacterLowerCase())
.ToArray();
foreach (var otherProp in otherProps)
foreach (var otherPropGetter in otherPropGetters)
{
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if (this.{otherProp.Getter.Name.ToFirstCharacterLowerCase()}() != null) {{");
writer.WriteLine($"return this.{otherProp.Getter.Name.ToFirstCharacterLowerCase()}().{method.Name.ToFirstCharacterLowerCase()}();");
writer.StartBlock($"{(includeElse? "} else " : string.Empty)}if (this.{otherPropGetter}() != null) {{");
writer.WriteLine($"return this.{otherPropGetter}().{method.Name.ToFirstCharacterLowerCase()}();");
writer.DecreaseIndent();
if(!includeElse)
includeElse = true;
}
if(otherProps.Any())
if(otherPropGetters.Any())
writer.CloseBlock(decreaseIndent: false);
writer.WriteLine("return new HashMap<>();");
}
private static void WriteDeserializerBodyForIntersectionModel(CodeMethod method, CodeClass parentClass, LanguageWriter writer)
private static void WriteDeserializerBodyForIntersectionModel(CodeClass parentClass, LanguageWriter writer)
{
var complexProperties = parentClass.GetPropertiesOfKind(CodePropertyKind.Custom)
.Where(static x => x.Type is CodeType propType && propType.TypeDefinition is CodeClass && !x.Type.IsCollection)
Expand Down

0 comments on commit 75949b0

Please sign in to comment.