From 7441f3d937a69a5fc7cb3371228c129e77675d25 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 15:22:36 +0800 Subject: [PATCH 1/8] set java.name when isExactName --- .../emitter/src/code-model-builder.ts | 72 ++++++++++++------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index cad773176b4..22f381dda34 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -400,6 +400,9 @@ export class CodeModelBuilder { }, clientDefaultValue: arg.clientDefaultValue, }); + if (arg.isExactName && parameter.language.java) { + parameter.language.java.name = arg.name; + } } hostParameters.push(this.codeModel.addGlobalParameter(parameter)); }); @@ -1558,6 +1561,9 @@ export class CodeModelBuilder { }, extensions: extensions, }); + if (param.isExactName && parameter.language.java) { + parameter.language.java.name = param.name; + } op.addParameter(parameter); if (parameterOnClient) { @@ -2221,26 +2227,28 @@ export class CodeModelBuilder { !existBodyProperty.readOnly && !(existBodyProperty.schema instanceof ConstantSchema) ) { - request.parameters.push( - new VirtualParameter( - existBodyProperty.language.default.name, - existBodyProperty.language.default.description, - existBodyProperty.schema, - { - originalParameter: originalParameter, - targetProperty: existBodyProperty, - language: { - default: { - serializedName: existBodyProperty.serializedName, - }, + const virtualParameter = new VirtualParameter( + existBodyProperty.language.default.name, + existBodyProperty.language.default.description, + existBodyProperty.schema, + { + originalParameter: originalParameter, + targetProperty: existBodyProperty, + language: { + default: { + serializedName: existBodyProperty.serializedName, }, - summary: existBodyProperty.summary, - implementation: ImplementationLocation.Method, - required: existBodyProperty.required, - nullable: existBodyProperty.nullable, }, - ), + summary: existBodyProperty.summary, + implementation: ImplementationLocation.Method, + required: existBodyProperty.required, + nullable: existBodyProperty.nullable, + }, ); + if (existBodyProperty.language?.java?.name) { + virtualParameter.language.java = virtualParameter.language.java; + } + request.parameters.push(virtualParameter); } } } @@ -2274,16 +2282,19 @@ export class CodeModelBuilder { break; } - headers.push( - new HttpHeader(header.serializedName, schema, { - language: { - default: { - name: header.name, - description: header.summary ?? header.doc, - }, + const codeModelHeader = new HttpHeader(header.serializedName, schema, { + language: { + default: { + name: header.name, + description: header.summary ?? header.doc, }, - }), - ); + }, + }); + if (header.isExactName) { + codeModelHeader.language.java = new Language(); + codeModelHeader.language.java.name = header.name; + } + headers.push(codeModelHeader); } } @@ -2716,6 +2727,9 @@ export class CodeModelBuilder { }, }, }); + if (type.isExactName && schema.language.java) { + schema.language.java.name = type.name; + } if (type.external) { // java name schema.language.java = schema.language.java ?? new Language(); @@ -2832,6 +2846,9 @@ export class CodeModelBuilder { }, }, }); + if (type.isExactName && objectSchema.language.java) { + objectSchema.language.java.name = type.name; + } objectSchema.language.default.crossLanguageDefinitionId = type.crossLanguageDefinitionId; if (type.external) { @@ -3054,6 +3071,9 @@ export class CodeModelBuilder { }, }, }); + if (type.isExactName && objectSchema.language.java) { + objectSchema.language.java.name = type.name; + } const variantSchema = this.processSchema(it, variantName); objectSchema.addProperty( From bcfba9c72d6bbf767e9640854918e3bc0c4515e1 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 15:26:10 +0800 Subject: [PATCH 2/8] when java.name already provided, do not overwrite --- .../preprocessor/tranformer/Transformer.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/preprocessor/tranformer/Transformer.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/preprocessor/tranformer/Transformer.java index 446f05a4524..f28ed6f3630 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/preprocessor/tranformer/Transformer.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/preprocessor/tranformer/Transformer.java @@ -588,7 +588,10 @@ private void renameType(Metadata schema) { private void renameProperty(Property property) { Language language = property.getLanguage().getDefault(); Language java = addJavaLanguage(property); - java.setName(CodeNamer.getPropertyName(language.getName())); + if (property.getLanguage().getJava().getName() == null + || property.getLanguage().getJava().getName().isEmpty()) { + java.setName(CodeNamer.getPropertyName(language.getName())); + } java.setSerializedName(language.getSerializedName()); java.setDescription(language.getDescription()); property.getLanguage().setJava(java); @@ -606,7 +609,9 @@ private void renameCodeModel(CodeModel codeModel) { private void renameClient(Metadata client) { Language language = client.getLanguage().getDefault(); Language java = addJavaLanguage(client); - java.setName(CodeNamer.getClientName(language.getName())); + if (client.getLanguage().getJava().getName() == null || client.getLanguage().getJava().getName().isEmpty()) { + java.setName(CodeNamer.getClientName(language.getName())); + } java.setDescription(language.getDescription()); client.getLanguage().setJava(java); } @@ -614,7 +619,9 @@ private void renameClient(Metadata client) { private void renameVariable(Metadata schema) { Language language = schema.getLanguage().getDefault(); Language java = addJavaLanguage(schema); - java.setName(CodeNamer.getParameterName(language.getName())); + if (schema.getLanguage().getJava().getName() == null || schema.getLanguage().getJava().getName().isEmpty()) { + java.setName(CodeNamer.getParameterName(language.getName())); + } java.setSerializedName(language.getSerializedName()); java.setDescription(language.getDescription()); schema.getLanguage().setJava(java); @@ -623,7 +630,9 @@ private void renameVariable(Metadata schema) { private void renameMethodGroup(Metadata schema) { Language language = schema.getLanguage().getDefault(); Language java = addJavaLanguage(schema); - java.setName(CodeNamer.getMethodGroupName(language.getName())); + if (schema.getLanguage().getJava().getName() == null || schema.getLanguage().getJava().getName().isEmpty()) { + java.setName(CodeNamer.getMethodGroupName(language.getName())); + } java.setSerializedName(language.getSerializedName()); java.setDescription(language.getDescription()); schema.getLanguage().setJava(java); @@ -632,7 +641,9 @@ private void renameMethodGroup(Metadata schema) { private void renameMethod(Metadata schema) { Language language = schema.getLanguage().getDefault(); Language java = addJavaLanguage(schema); - java.setName(CodeNamer.getMethodName(language.getName())); + if (schema.getLanguage().getJava().getName() == null || schema.getLanguage().getJava().getName().isEmpty()) { + java.setName(CodeNamer.getMethodName(language.getName())); + } java.setSerializedName(language.getSerializedName()); java.setDescription(language.getDescription()); } From d15bcd7941ed5def4404ad028e19ea9904090924 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 15:41:03 +0800 Subject: [PATCH 3/8] nit --- .../http-client-java/emitter/src/code-model-builder.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index 22f381dda34..4c7f788ac92 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -999,7 +999,7 @@ export class CodeModelBuilder { codeModelOperation.convenienceApi = new ConvenienceApi(convenienceApiName); } if (diagnostic) { - codeModelOperation.language.java = new Language(); + codeModelOperation.language.java = codeModelOperation.language.java ?? new Language(); codeModelOperation.language.java.comment = diagnostic.message; } @@ -2282,7 +2282,7 @@ export class CodeModelBuilder { break; } - const codeModelHeader = new HttpHeader(header.serializedName, schema, { + const httpHeader = new HttpHeader(header.serializedName, schema, { language: { default: { name: header.name, @@ -2291,10 +2291,10 @@ export class CodeModelBuilder { }, }); if (header.isExactName) { - codeModelHeader.language.java = new Language(); - codeModelHeader.language.java.name = header.name; + httpHeader.language.java = httpHeader.language.java ?? new Language(); + httpHeader.language.java.name = header.name; } - headers.push(codeModelHeader); + headers.push(httpHeader); } } From c568ef4aa08432ebaae47d63d0fe441deb4342b5 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 17:04:02 +0800 Subject: [PATCH 4/8] fix --- packages/http-client-java/emitter/src/code-model-builder.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index 4c7f788ac92..3bb70caa9d2 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -3014,6 +3014,10 @@ export class CodeModelBuilder { serializedName: getPropertySerializedName(modelProperty), extensions: extensions, }); + if (modelProperty.isExactName) { + codeModelProperty.language.java = codeModelProperty.language.java ?? new Language(); + codeModelProperty.language.java.name = modelProperty.name; + } if (modelProperty.encode) { if (schema instanceof ArraySchema) { // ArrayEncoding From 9edc734a1a93d33699a6bc4a434a0fb3ab22fe85 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 17:10:55 +0800 Subject: [PATCH 5/8] http-client-java, support exact clientName --- .../http-client-java_support-exact-2026-4-21-17-10-37.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .chronus/changes/http-client-java_support-exact-2026-4-21-17-10-37.md diff --git a/.chronus/changes/http-client-java_support-exact-2026-4-21-17-10-37.md b/.chronus/changes/http-client-java_support-exact-2026-4-21-17-10-37.md new file mode 100644 index 00000000000..510a1fc14d5 --- /dev/null +++ b/.chronus/changes/http-client-java_support-exact-2026-4-21-17-10-37.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@typespec/http-client-java" +--- + +Support exact name from TCGC. \ No newline at end of file From 5c2abc3333854cc93b06f8fc496d2097d519bf5d Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Thu, 21 May 2026 17:33:26 +0800 Subject: [PATCH 6/8] fix --- packages/http-client-java/emitter/src/code-model-builder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index 3bb70caa9d2..4420bc58470 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -2246,7 +2246,7 @@ export class CodeModelBuilder { }, ); if (existBodyProperty.language?.java?.name) { - virtualParameter.language.java = virtualParameter.language.java; + virtualParameter.language.java = existBodyProperty.language.java; } request.parameters.push(virtualParameter); } From d2c8f274fc19fd0c624c18e360501d4b24805d02 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 22 May 2026 09:56:17 +0800 Subject: [PATCH 7/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- packages/http-client-java/emitter/src/code-model-builder.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index 4420bc58470..1af5ae9d9eb 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -1561,7 +1561,8 @@ export class CodeModelBuilder { }, extensions: extensions, }); - if (param.isExactName && parameter.language.java) { + if (param.isExactName) { + parameter.language.java = parameter.language.java ?? {}; parameter.language.java.name = param.name; } op.addParameter(parameter); From 1496b3c26911f66af2d96167b0a1a157e47904d3 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 22 May 2026 09:59:50 +0800 Subject: [PATCH 8/8] unify code pattern --- .../emitter/src/code-model-builder.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/http-client-java/emitter/src/code-model-builder.ts b/packages/http-client-java/emitter/src/code-model-builder.ts index 1af5ae9d9eb..064374097c8 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -400,7 +400,8 @@ export class CodeModelBuilder { }, clientDefaultValue: arg.clientDefaultValue, }); - if (arg.isExactName && parameter.language.java) { + if (arg.isExactName) { + parameter.language.java = parameter.language.java ?? new Language(); parameter.language.java.name = arg.name; } } @@ -1562,7 +1563,7 @@ export class CodeModelBuilder { extensions: extensions, }); if (param.isExactName) { - parameter.language.java = parameter.language.java ?? {}; + parameter.language.java = parameter.language.java ?? new Language(); parameter.language.java.name = param.name; } op.addParameter(parameter); @@ -2728,7 +2729,8 @@ export class CodeModelBuilder { }, }, }); - if (type.isExactName && schema.language.java) { + if (type.isExactName) { + schema.language.java = schema.language.java ?? new Language(); schema.language.java.name = type.name; } if (type.external) { @@ -2847,7 +2849,8 @@ export class CodeModelBuilder { }, }, }); - if (type.isExactName && objectSchema.language.java) { + if (type.isExactName) { + objectSchema.language.java = objectSchema.language.java ?? new Language(); objectSchema.language.java.name = type.name; } objectSchema.language.default.crossLanguageDefinitionId = type.crossLanguageDefinitionId; @@ -3076,7 +3079,8 @@ export class CodeModelBuilder { }, }, }); - if (type.isExactName && objectSchema.language.java) { + if (type.isExactName) { + objectSchema.language.java = objectSchema.language.java ?? new Language(); objectSchema.language.java.name = type.name; }