Skip to content

Commit 86fb5a6

Browse files
authored
Rename body parameter in resource methods. (#53492)
* rename body parameter in resource methods. * refine. * address review comments. * regen after rebase. * address review comments.
1 parent 78b44db commit 86fb5a6

File tree

11 files changed

+152
-44
lines changed

11 files changed

+152
-44
lines changed

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ExtensionProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private MethodProvider BuildRedirectMethod(CSharpType coreType, MethodProvider t
114114

115115
foreach (var p in methodSignature.Parameters)
116116
{
117-
var normalizedName = BodyParameterNameNormalizer.GetNormalizedParameterNameForNonResourceMethod(p);
117+
var normalizedName = BodyParameterNameNormalizer.GetNormalizedBodyParameterName(p);
118118
if (normalizedName != null)
119119
{
120120
p.Update(name: normalizedName);

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/MockableResourceProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ protected override MethodProvider[] BuildMethods()
205205
var updated = false;
206206
foreach (var p in m.Signature.Parameters)
207207
{
208-
var normalizedName = BodyParameterNameNormalizer.GetNormalizedParameterNameForNonResourceMethod(p);
208+
var normalizedName = BodyParameterNameNormalizer.GetNormalizedBodyParameterName(p);
209209
if (normalizedName != null)
210210
{
211211
p.Update(name: normalizedName);

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/BodyParameterNameNormalizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal static class BodyParameterNameNormalizer
1515
/// </summary>
1616
/// <param name="parameter">The parameter to normalize.</param>
1717
/// <returns>The normalized parameter name, or null if no normalization is needed.</returns>
18-
public static string? GetNormalizedParameterNameForNonResourceMethod(ParameterProvider parameter)
18+
public static string? GetNormalizedBodyParameterName(ParameterProvider parameter)
1919
{
2020
if (parameter.Location != ParameterLocation.Body || !parameter.Type.IsModelType())
2121
{

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/OperationMethodParameterHelper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,17 @@ public static IReadOnlyList<ParameterProvider> GetOperationMethodParameters(
5555
outputParameter.Update(name: "data");
5656
}
5757

58+
// Rename body parameters for resource/resourcecollection operations
59+
if ((enclosingTypeProvider is ResourceClientProvider or ResourceCollectionClientProvider) &&
60+
(serviceMethod.Operation.HttpMethod == "PUT" || serviceMethod.Operation.HttpMethod == "POST" || serviceMethod.Operation.HttpMethod == "PATCH"))
61+
{
62+
var normalizedName = BodyParameterNameNormalizer.GetNormalizedBodyParameterName(outputParameter);
63+
if (normalizedName != null)
64+
{
65+
outputParameter.Update(name: normalizedName);
66+
}
67+
}
68+
5869
if (parameter.IsRequired)
5970
{
6071
requiredParameters.Add(outputParameter);

eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/NameVisitor.cs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ internal class NameVisitor : ScmLibraryVisitor
4646
"PrivateLinkResourceListResult"
4747
};
4848

49-
private readonly HashSet<CSharpType> _resourceUpdateModelTypes = new();
5049
private readonly Dictionary<MrwSerializationTypeDefinition, string> _deserializationRename = new();
5150

5251
protected override EnumProvider? PreVisitEnum(InputEnumType enumType, EnumProvider? type)
@@ -90,12 +89,6 @@ internal class NameVisitor : ScmLibraryVisitor
9089
newName = $"{enclosingResourceName}Patch";
9190
UpdateSerialization(type, newName, type.Name);
9291
type.Update(name: newName);
93-
94-
_resourceUpdateModelTypes.Add(type.Type);
95-
foreach (var serializationProvider in type.SerializationProviders)
96-
{
97-
_resourceUpdateModelTypes.Add(serializationProvider.Type);
98-
}
9992
}
10093
return base.PreVisitModel(model, type);
10194
}
@@ -213,22 +206,6 @@ private void DoPreVisitPropertyNameRenaming(InputProperty property, PropertyProv
213206

214207
protected override MethodProvider? VisitMethod(MethodProvider method)
215208
{
216-
var parameterUpdated = false;
217-
foreach (var parameter in method.Signature.Parameters)
218-
{
219-
if (_resourceUpdateModelTypes.Contains(parameter.Type))
220-
{
221-
parameter.Update(name: "patch");
222-
parameterUpdated = true;
223-
}
224-
}
225-
226-
if (parameterUpdated)
227-
{
228-
// This is required as a workaround to update documentation for the method signature
229-
method.Update(signature: method.Signature);
230-
}
231-
232209
// TODO: we will remove this manual updated when https://github.com/microsoft/typespec/issues/8079 is resolved
233210
if (method.EnclosingType is MrwSerializationTypeDefinition serializationTypeDefinition && _deserializationRename.TryGetValue(serializationTypeDefinition, out var newName) && method.Signature.Name.StartsWith("Deserialize"))
234211
{

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooSettingsResource.cs

Lines changed: 42 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.cs

Lines changed: 42 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/FooSettingsPatch.Serialization.cs

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/JobResourcePatch.Serialization.cs

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Models/ZooPatch.Serialization.cs

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)