Skip to content

Commit 1cf7323

Browse files
http-client-java, add "rename-model" for templated model and anonymous model (#7434)
To rename things that cannot be renamed in typespec... Though we'd better ask service to fix the anonymous model. This could be a temporary solution (to get some release unblocked -- usually due to path longer than 222), till we found better solution.
1 parent b06b74a commit 1cf7323

File tree

14 files changed

+100
-76
lines changed

14 files changed

+100
-76
lines changed

packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/util/ClassNameUtil.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ public static String getDirectoryNameForGraalVmConfig(String groupId, String art
6868
? artifactIdSegments[2]
6969
: artifactIdSegments[artifactIdSegments.length - 1]);
7070
final int parentDirectoryLength = ("sdk/" + group + "/" + artifactId + "/").length();
71+
final int fileNameLength = "/reflect-config.json".length();
7172

72-
if (parentDirectoryLength + metaInfPath.length() > (248 - 38)) {
73+
if (parentDirectoryLength + metaInfPath.length() > (248 - 38)
74+
|| parentDirectoryLength + metaInfPath.length() + fileNameLength > (260 - 38)) {
7375
// see
7476
// https://github.com/Azure/azure-sdk-for-java/blob/main/eng/common/pipelines/templates/steps/verify-path-length.yml
7577
String shortenedArtifactId = artifactId;

packages/http-client-java/generator/http-client-generator-core/src/test/java/com/microsoft/typespec/http/client/generator/core/util/ClassNameUtilTests.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class ClassNameUtilTests {
1515
public void testTruncateClassName() {
1616
final int maxFileLength = 260 - 38;
1717

18-
// limit class name
18+
// truncate class name
1919
String name = ClassNameUtil.truncateClassName("com.azure.resourcemanager.deviceprovisioningservices",
2020
"src/samples/java", "com.azure.resourcemanager.deviceprovisioningservices.generated",
2121
"IotDpsResourceCheckProvisioningServiceNameAvailability", "Samples");
@@ -53,8 +53,14 @@ public void testTruncateClassName() {
5353

5454
@Test
5555
public void testGetDirectoryNameForGraalVmConfig() {
56+
// directory length over 210
5657
String directoryName = ClassNameUtil.getDirectoryNameForGraalVmConfig("com.azure.resourcemanager",
5758
"azure-resourcemanager-" + KUBERNETES_CONFIGURATION + "-extensiontypes");
5859
Assertions.assertFalse(directoryName.contains("azure-resourcemanager-"));
60+
61+
// directory length not over 210, but full filename length over 222
62+
directoryName = ClassNameUtil.getDirectoryNameForGraalVmConfig("com.azure.resourcemanager",
63+
"azure-resourcemanager-" + "recovery" + "services" + "data" + "replication");
64+
Assertions.assertFalse(directoryName.contains("azure-resourcemanager-"));
5965
}
6066
}

packages/http-client-java/generator/http-client-generator-test/Generate.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ $generateScript = {
7373
$tspOptions += " --option ""@typespec/http-client-java.api-version=2023-11-01"""
7474
# exclude preview from service versions
7575
$tspOptions += " --option ""@typespec/http-client-java.service-version-exclude-preview=true"""
76-
# enable sync-stack
77-
$tspOptions += " --option ""@typespec/http-client-java.enable-sync-stack=true"""
76+
# rename model
77+
$tspOptions += " --option ""@typespec/http-client-java.rename-model=TopLevelArmResourceListResult:ResourceListResult,CustomTemplateResourcePropertiesAnonymousEmptyModel:AnonymousEmptyModel"""
7878
} elseif ($tspFile -match "arm-stream-style-serialization.tsp") {
7979
# for mgmt, do not generate tests due to random mock values
8080
$tspOptions += " --option ""@typespec/http-client-java.generate-tests=false"""

packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armresourceprovider/fluent/models/CustomTemplateResourceInner.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import com.azure.json.JsonWriter;
1313
import java.io.IOException;
1414
import java.util.Map;
15-
import tsptest.armresourceprovider.models.CustomTemplateResourcePropertiesAnonymousEmptyModel;
15+
import tsptest.armresourceprovider.models.AnonymousEmptyModel;
1616
import tsptest.armresourceprovider.models.Dog;
1717
import tsptest.armresourceprovider.models.EmptyModel;
1818
import tsptest.armresourceprovider.models.ManagedServiceIdentity;
@@ -206,7 +206,7 @@ public CustomTemplateResourceInner withNamedEmptyModel(EmptyModel namedEmptyMode
206206
*
207207
* @return the anonymousEmptyModel value.
208208
*/
209-
public CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel() {
209+
public AnonymousEmptyModel anonymousEmptyModel() {
210210
return this.innerProperties() == null ? null : this.innerProperties().anonymousEmptyModel();
211211
}
212212

@@ -216,8 +216,7 @@ public CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel()
216216
* @param anonymousEmptyModel the anonymousEmptyModel value to set.
217217
* @return the CustomTemplateResourceInner object itself.
218218
*/
219-
public CustomTemplateResourceInner
220-
withAnonymousEmptyModel(CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel) {
219+
public CustomTemplateResourceInner withAnonymousEmptyModel(AnonymousEmptyModel anonymousEmptyModel) {
221220
if (this.innerProperties() == null) {
222221
this.innerProperties = new CustomTemplateResourceProperties();
223222
}

packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armresourceprovider/fluent/models/CustomTemplateResourceProperties.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import com.azure.json.JsonToken;
1212
import com.azure.json.JsonWriter;
1313
import java.io.IOException;
14-
import tsptest.armresourceprovider.models.CustomTemplateResourcePropertiesAnonymousEmptyModel;
14+
import tsptest.armresourceprovider.models.AnonymousEmptyModel;
1515
import tsptest.armresourceprovider.models.Dog;
1616
import tsptest.armresourceprovider.models.EmptyModel;
1717
import tsptest.armresourceprovider.models.PriorityModel;
@@ -40,7 +40,7 @@ public final class CustomTemplateResourceProperties implements JsonSerializable<
4040
/*
4141
* The anonymousEmptyModel property.
4242
*/
43-
private CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel;
43+
private AnonymousEmptyModel anonymousEmptyModel;
4444

4545
/*
4646
* The priority property.
@@ -107,7 +107,7 @@ public CustomTemplateResourceProperties withNamedEmptyModel(EmptyModel namedEmpt
107107
*
108108
* @return the anonymousEmptyModel value.
109109
*/
110-
public CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel() {
110+
public AnonymousEmptyModel anonymousEmptyModel() {
111111
return this.anonymousEmptyModel;
112112
}
113113

@@ -117,8 +117,7 @@ public CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel()
117117
* @param anonymousEmptyModel the anonymousEmptyModel value to set.
118118
* @return the CustomTemplateResourceProperties object itself.
119119
*/
120-
public CustomTemplateResourceProperties
121-
withAnonymousEmptyModel(CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel) {
120+
public CustomTemplateResourceProperties withAnonymousEmptyModel(AnonymousEmptyModel anonymousEmptyModel) {
122121
this.anonymousEmptyModel = anonymousEmptyModel;
123122
return this;
124123
}
@@ -215,7 +214,7 @@ public static CustomTemplateResourceProperties fromJson(JsonReader jsonReader) t
215214
deserializedCustomTemplateResourceProperties.namedEmptyModel = EmptyModel.fromJson(reader);
216215
} else if ("anonymousEmptyModel".equals(fieldName)) {
217216
deserializedCustomTemplateResourceProperties.anonymousEmptyModel
218-
= CustomTemplateResourcePropertiesAnonymousEmptyModel.fromJson(reader);
217+
= AnonymousEmptyModel.fromJson(reader);
219218
} else if ("priority".equals(fieldName)) {
220219
deserializedCustomTemplateResourceProperties.priority = PriorityModel.fromValue(reader.getInt());
221220
} else if ("provisioningState".equals(fieldName)) {

packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armresourceprovider/implementation/CustomTemplateResourceImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import java.util.Collections;
1111
import java.util.Map;
1212
import tsptest.armresourceprovider.fluent.models.CustomTemplateResourceInner;
13+
import tsptest.armresourceprovider.models.AnonymousEmptyModel;
1314
import tsptest.armresourceprovider.models.CustomTemplateResource;
1415
import tsptest.armresourceprovider.models.CustomTemplateResourcePatch;
15-
import tsptest.armresourceprovider.models.CustomTemplateResourcePropertiesAnonymousEmptyModel;
1616
import tsptest.armresourceprovider.models.Dog;
1717
import tsptest.armresourceprovider.models.EmptyModel;
1818
import tsptest.armresourceprovider.models.ManagedServiceIdentity;
@@ -70,7 +70,7 @@ public EmptyModel namedEmptyModel() {
7070
return this.innerModel().namedEmptyModel();
7171
}
7272

73-
public CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel() {
73+
public AnonymousEmptyModel anonymousEmptyModel() {
7474
return this.innerModel().anonymousEmptyModel();
7575
}
7676

@@ -200,8 +200,7 @@ public CustomTemplateResourceImpl withNamedEmptyModel(EmptyModel namedEmptyModel
200200
return this;
201201
}
202202

203-
public CustomTemplateResourceImpl
204-
withAnonymousEmptyModel(CustomTemplateResourcePropertiesAnonymousEmptyModel anonymousEmptyModel) {
203+
public CustomTemplateResourceImpl withAnonymousEmptyModel(AnonymousEmptyModel anonymousEmptyModel) {
205204
this.innerModel().withAnonymousEmptyModel(anonymousEmptyModel);
206205
return this;
207206
}

packages/http-client-java/generator/http-client-generator-test/src/main/java/tsptest/armresourceprovider/implementation/TopLevelArmResourceInterfacesClientImpl.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import tsptest.armresourceprovider.fluent.TopLevelArmResourceInterfacesClient;
4242
import tsptest.armresourceprovider.fluent.models.ResultInner;
4343
import tsptest.armresourceprovider.fluent.models.TopLevelArmResourceInner;
44-
import tsptest.armresourceprovider.implementation.models.TopLevelArmResourceListResult;
44+
import tsptest.armresourceprovider.implementation.models.ResourceListResult;
4545
import tsptest.armresourceprovider.models.TopLevelArmResourceUpdate;
4646

4747
/**
@@ -160,7 +160,7 @@ Response<BinaryData> deleteSync(@HostParam("endpoint") String endpoint,
160160
@Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/TspTest.ArmResourceProvider/topLevelArmResources")
161161
@ExpectedResponses({ 200 })
162162
@UnexpectedResponseExceptionType(ManagementException.class)
163-
Mono<Response<TopLevelArmResourceListResult>> listByResourceGroup(@HostParam("endpoint") String endpoint,
163+
Mono<Response<ResourceListResult>> listByResourceGroup(@HostParam("endpoint") String endpoint,
164164
@QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId,
165165
@PathParam("resourceGroupName") String resourceGroupName, @HeaderParam("Accept") String accept,
166166
Context context);
@@ -169,7 +169,7 @@ Mono<Response<TopLevelArmResourceListResult>> listByResourceGroup(@HostParam("en
169169
@Get("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/TspTest.ArmResourceProvider/topLevelArmResources")
170170
@ExpectedResponses({ 200 })
171171
@UnexpectedResponseExceptionType(ManagementException.class)
172-
Response<TopLevelArmResourceListResult> listByResourceGroupSync(@HostParam("endpoint") String endpoint,
172+
Response<ResourceListResult> listByResourceGroupSync(@HostParam("endpoint") String endpoint,
173173
@QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId,
174174
@PathParam("resourceGroupName") String resourceGroupName, @HeaderParam("Accept") String accept,
175175
Context context);
@@ -178,15 +178,15 @@ Response<TopLevelArmResourceListResult> listByResourceGroupSync(@HostParam("endp
178178
@Get("/subscriptions/{subscriptionId}/providers/TspTest.ArmResourceProvider/topLevelArmResources")
179179
@ExpectedResponses({ 200 })
180180
@UnexpectedResponseExceptionType(ManagementException.class)
181-
Mono<Response<TopLevelArmResourceListResult>> list(@HostParam("endpoint") String endpoint,
181+
Mono<Response<ResourceListResult>> list(@HostParam("endpoint") String endpoint,
182182
@QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId,
183183
@HeaderParam("Accept") String accept, Context context);
184184

185185
@Headers({ "Content-Type: application/json" })
186186
@Get("/subscriptions/{subscriptionId}/providers/TspTest.ArmResourceProvider/topLevelArmResources")
187187
@ExpectedResponses({ 200 })
188188
@UnexpectedResponseExceptionType(ManagementException.class)
189-
Response<TopLevelArmResourceListResult> listSync(@HostParam("endpoint") String endpoint,
189+
Response<ResourceListResult> listSync(@HostParam("endpoint") String endpoint,
190190
@QueryParam("api-version") String apiVersion, @PathParam("subscriptionId") String subscriptionId,
191191
@HeaderParam("Accept") String accept, Context context);
192192

@@ -214,31 +214,31 @@ Response<BinaryData> actionSync(@HostParam("endpoint") String endpoint,
214214
@Get("{nextLink}")
215215
@ExpectedResponses({ 200 })
216216
@UnexpectedResponseExceptionType(ManagementException.class)
217-
Mono<Response<TopLevelArmResourceListResult>> listByResourceGroupNext(
217+
Mono<Response<ResourceListResult>> listByResourceGroupNext(
218218
@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint,
219219
@HeaderParam("Accept") String accept, Context context);
220220

221221
@Headers({ "Content-Type: application/json" })
222222
@Get("{nextLink}")
223223
@ExpectedResponses({ 200 })
224224
@UnexpectedResponseExceptionType(ManagementException.class)
225-
Response<TopLevelArmResourceListResult> listByResourceGroupNextSync(
225+
Response<ResourceListResult> listByResourceGroupNextSync(
226226
@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint,
227227
@HeaderParam("Accept") String accept, Context context);
228228

229229
@Headers({ "Content-Type: application/json" })
230230
@Get("{nextLink}")
231231
@ExpectedResponses({ 200 })
232232
@UnexpectedResponseExceptionType(ManagementException.class)
233-
Mono<Response<TopLevelArmResourceListResult>> listBySubscriptionNext(
233+
Mono<Response<ResourceListResult>> listBySubscriptionNext(
234234
@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint,
235235
@HeaderParam("Accept") String accept, Context context);
236236

237237
@Headers({ "Content-Type: application/json" })
238238
@Get("{nextLink}")
239239
@ExpectedResponses({ 200 })
240240
@UnexpectedResponseExceptionType(ManagementException.class)
241-
Response<TopLevelArmResourceListResult> listBySubscriptionNextSync(
241+
Response<ResourceListResult> listBySubscriptionNextSync(
242242
@PathParam(value = "nextLink", encoded = true) String nextLink, @HostParam("endpoint") String endpoint,
243243
@HeaderParam("Accept") String accept, Context context);
244244
}
@@ -1012,7 +1012,7 @@ private PagedResponse<TopLevelArmResourceInner> listByResourceGroupSinglePage(St
10121012
.log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
10131013
}
10141014
final String accept = "application/json";
1015-
Response<TopLevelArmResourceListResult> res = service.listByResourceGroupSync(this.client.getEndpoint(),
1015+
Response<ResourceListResult> res = service.listByResourceGroupSync(this.client.getEndpoint(),
10161016
this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, accept, Context.NONE);
10171017
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
10181018
res.getValue().nextLink(), null);
@@ -1046,7 +1046,7 @@ private PagedResponse<TopLevelArmResourceInner> listByResourceGroupSinglePage(St
10461046
.log(new IllegalArgumentException("Parameter resourceGroupName is required and cannot be null."));
10471047
}
10481048
final String accept = "application/json";
1049-
Response<TopLevelArmResourceListResult> res = service.listByResourceGroupSync(this.client.getEndpoint(),
1049+
Response<ResourceListResult> res = service.listByResourceGroupSync(this.client.getEndpoint(),
10501050
this.client.getApiVersion(), this.client.getSubscriptionId(), resourceGroupName, accept, context);
10511051
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
10521052
res.getValue().nextLink(), null);
@@ -1143,8 +1143,8 @@ private PagedResponse<TopLevelArmResourceInner> listSinglePage() {
11431143
"Parameter this.client.getSubscriptionId() is required and cannot be null."));
11441144
}
11451145
final String accept = "application/json";
1146-
Response<TopLevelArmResourceListResult> res = service.listSync(this.client.getEndpoint(),
1147-
this.client.getApiVersion(), this.client.getSubscriptionId(), accept, Context.NONE);
1146+
Response<ResourceListResult> res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(),
1147+
this.client.getSubscriptionId(), accept, Context.NONE);
11481148
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
11491149
res.getValue().nextLink(), null);
11501150
}
@@ -1171,8 +1171,8 @@ private PagedResponse<TopLevelArmResourceInner> listSinglePage(Context context)
11711171
"Parameter this.client.getSubscriptionId() is required and cannot be null."));
11721172
}
11731173
final String accept = "application/json";
1174-
Response<TopLevelArmResourceListResult> res = service.listSync(this.client.getEndpoint(),
1175-
this.client.getApiVersion(), this.client.getSubscriptionId(), accept, context);
1174+
Response<ResourceListResult> res = service.listSync(this.client.getEndpoint(), this.client.getApiVersion(),
1175+
this.client.getSubscriptionId(), accept, context);
11761176
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
11771177
res.getValue().nextLink(), null);
11781178
}
@@ -1463,7 +1463,7 @@ private PagedResponse<TopLevelArmResourceInner> listByResourceGroupNextSinglePag
14631463
"Parameter this.client.getEndpoint() is required and cannot be null."));
14641464
}
14651465
final String accept = "application/json";
1466-
Response<TopLevelArmResourceListResult> res
1466+
Response<ResourceListResult> res
14671467
= service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE);
14681468
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
14691469
res.getValue().nextLink(), null);
@@ -1492,7 +1492,7 @@ private PagedResponse<TopLevelArmResourceInner> listByResourceGroupNextSinglePag
14921492
"Parameter this.client.getEndpoint() is required and cannot be null."));
14931493
}
14941494
final String accept = "application/json";
1495-
Response<TopLevelArmResourceListResult> res
1495+
Response<ResourceListResult> res
14961496
= service.listByResourceGroupNextSync(nextLink, this.client.getEndpoint(), accept, context);
14971497
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
14981498
res.getValue().nextLink(), null);
@@ -1547,7 +1547,7 @@ private PagedResponse<TopLevelArmResourceInner> listBySubscriptionNextSinglePage
15471547
"Parameter this.client.getEndpoint() is required and cannot be null."));
15481548
}
15491549
final String accept = "application/json";
1550-
Response<TopLevelArmResourceListResult> res
1550+
Response<ResourceListResult> res
15511551
= service.listBySubscriptionNextSync(nextLink, this.client.getEndpoint(), accept, Context.NONE);
15521552
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
15531553
res.getValue().nextLink(), null);
@@ -1575,7 +1575,7 @@ private PagedResponse<TopLevelArmResourceInner> listBySubscriptionNextSinglePage
15751575
"Parameter this.client.getEndpoint() is required and cannot be null."));
15761576
}
15771577
final String accept = "application/json";
1578-
Response<TopLevelArmResourceListResult> res
1578+
Response<ResourceListResult> res
15791579
= service.listBySubscriptionNextSync(nextLink, this.client.getEndpoint(), accept, context);
15801580
return new PagedResponseBase<>(res.getRequest(), res.getStatusCode(), res.getHeaders(), res.getValue().value(),
15811581
res.getValue().nextLink(), null);

0 commit comments

Comments
 (0)