Skip to content

Commit 90d2b1d

Browse files
http-client-java, fix duplicate generated sample on advanced versioning (#11014)
from Azure/azure-sdk-for-java#49541 --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent fedfbc9 commit 90d2b1d

9 files changed

Lines changed: 203 additions & 143 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
changeKind: fix
3+
packages:
4+
- "@typespec/http-client-java"
5+
---
6+
7+
Fix duplicate method in generated samples, when advanced-versioning=true
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
changeKind: dependencies
3+
packages:
4+
- "@typespec/http-client-java"
5+
---
6+
7+
Update Node.js dependencies: @azure-tools/typespec-autorest 0.69.1, @azure-tools/typespec-azure-resource-manager 0.69.1, @azure-tools/typespec-azure-rulesets 0.69.1, @microsoft/api-extractor 7.58.9, @types/node 25.9.3, @vitest/coverage-v8 4.1.9, @vitest/ui 4.1.9, vitest 4.1.9

packages/http-client-java/generator/http-client-generator-clientcore-test/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
"@typespec/streams": "0.83.0",
3232
"@azure-tools/typespec-azure-core": "0.69.0",
3333
"@azure-tools/typespec-client-generator-core": "0.69.0",
34-
"@azure-tools/typespec-azure-resource-manager": "0.69.0",
35-
"@azure-tools/typespec-autorest": "0.69.0"
34+
"@azure-tools/typespec-azure-resource-manager": "0.69.1",
35+
"@azure-tools/typespec-autorest": "0.69.1"
3636
},
3737
"private": true
3838
}

packages/http-client-java/generator/http-client-generator-mgmt/src/main/java/com/microsoft/typespec/http/client/generator/mgmt/template/FluentExampleTemplate.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.microsoft.typespec.http.client.generator.mgmt.model.clientmodel.examplemodel.ParameterExample;
2020
import io.clientcore.core.utils.CoreUtils;
2121
import java.util.ArrayList;
22+
import java.util.HashSet;
2223
import java.util.List;
2324
import java.util.Set;
2425
import java.util.stream.Collectors;
@@ -47,7 +48,16 @@ public final void write(com.microsoft.typespec.http.client.generator.mgmt.model.
4748
javaFile.javadocComment(commentBlock -> commentBlock
4849
.description(String.format("Samples for %1$s %2$s", example.getGroupName(), example.getMethodName())));
4950
javaFile.publicFinalClass(className, classBlock -> {
51+
Set<String> methodSignatureWritten = new HashSet<>();
5052
for (ExampleMethod exampleMethod : exampleMethods) {
53+
String methodSignature = exampleMethod.getMethodSignature();
54+
if (methodSignatureWritten.contains(methodSignature)) {
55+
// skip this method, as it duplicate with method already written to the class
56+
// this usually happen on "advanced-versioning: true", where we have overload on the SDK method
57+
continue;
58+
}
59+
methodSignatureWritten.add(methodSignature);
60+
5161
if (!CoreUtils.isNullOrEmpty(exampleMethod.getExample().getOriginalFileName())) {
5262
classBlock.blockComment(getExampleTag(exampleMethod.getExample()));
5363
}
@@ -57,7 +67,6 @@ public final void write(com.microsoft.typespec.http.client.generator.mgmt.model.
5767
commentBlock.param(exampleMethod.getExample().getEntryName(),
5868
exampleMethod.getExample().getEntryDescription());
5969
});
60-
String methodSignature = exampleMethod.getMethodSignature();
6170
if (exampleMethod.getHelperFeatures().contains(ExampleHelperFeature.ThrowsIOException)) {
6271
methodSignature += " throws IOException";
6372
}

packages/http-client-java/generator/http-client-generator-test/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
"@typespec/streams": "0.83.0",
3232
"@azure-tools/typespec-azure-core": "0.69.0",
3333
"@azure-tools/typespec-client-generator-core": "0.69.0",
34-
"@azure-tools/typespec-azure-resource-manager": "0.69.0",
35-
"@azure-tools/typespec-autorest": "0.69.0"
34+
"@azure-tools/typespec-azure-resource-manager": "0.69.1",
35+
"@azure-tools/typespec-autorest": "0.69.1"
3636
},
3737
"private": true
3838
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
// Code generated by Microsoft (R) TypeSpec Code Generator.
4+
5+
package tsptest.armversioned.generated;
6+
7+
/**
8+
* Samples for TopLevelArmResources GetByResourceGroup.
9+
*/
10+
public final class TopLevelArmResourcesGetByResourceGroupSamples {
11+
/*
12+
* x-ms-original-file: 2024-12-01/TopLevelArmResources_Get.json
13+
*/
14+
/**
15+
* Sample code: TopLevelArmResources Get.
16+
*
17+
* @param manager Entry point to ArmVersionedManager.
18+
*/
19+
public static void topLevelArmResourcesGet(tsptest.armversioned.ArmVersionedManager manager) {
20+
manager.topLevelArmResources()
21+
.getByResourceGroupWithResponse("resource-group-name", "resource-name", "parameter-value",
22+
"new-parameter-value", com.azure.core.util.Context.NONE);
23+
}
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"operationId": "TopLevelArmResources_Get",
3+
"title": "TopLevelArmResources Get",
4+
"parameters": {
5+
"resourceGroupName": "resource-group-name",
6+
"topLevelArmResourcePropertiesName": "resource-name",
7+
"api-version": "2024-12-01",
8+
"parameter": "parameter-value",
9+
"newParameter": "new-parameter-value"
10+
},
11+
"responses": {
12+
"200": {
13+
"body": {
14+
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-name/providers/TspTest.ArmVersioned/topLevelArmResources/resource-name",
15+
"name": "resource-name",
16+
"type": "TspTest.ArmVersioned/topLevelArmResources",
17+
"location": "eastus",
18+
"properties": {
19+
"provisioningState": "Succeeded"
20+
}
21+
}
22+
}
23+
}
24+
}

0 commit comments

Comments
 (0)