Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
changeKind: feature
packages:
- "@typespec/http-client-java"
---

Support exact name from TCGC.
83 changes: 56 additions & 27 deletions packages/http-client-java/emitter/src/code-model-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,10 @@ export class CodeModelBuilder {
},
clientDefaultValue: arg.clientDefaultValue,
});
if (arg.isExactName) {
parameter.language.java = parameter.language.java ?? new Language();
parameter.language.java.name = arg.name;
}
}
hostParameters.push(this.codeModel.addGlobalParameter(parameter));
});
Expand Down Expand Up @@ -996,7 +1000,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;
}

Expand Down Expand Up @@ -1558,6 +1562,10 @@ export class CodeModelBuilder {
},
extensions: extensions,
});
if (param.isExactName) {
parameter.language.java = parameter.language.java ?? new Language();
parameter.language.java.name = param.name;
}
op.addParameter(parameter);

if (parameterOnClient) {
Expand Down Expand Up @@ -2221,26 +2229,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 = existBodyProperty.language.java;
}
request.parameters.push(virtualParameter);
}
}
}
Expand Down Expand Up @@ -2274,16 +2284,19 @@ export class CodeModelBuilder {
break;
}

headers.push(
new HttpHeader(header.serializedName, schema, {
language: {
default: {
name: header.name,
description: header.summary ?? header.doc,
},
const httpHeader = new HttpHeader(header.serializedName, schema, {
language: {
default: {
name: header.name,
description: header.summary ?? header.doc,
},
}),
);
},
});
if (header.isExactName) {
httpHeader.language.java = httpHeader.language.java ?? new Language();
httpHeader.language.java.name = header.name;
}
headers.push(httpHeader);
}
}

Expand Down Expand Up @@ -2716,6 +2729,10 @@ export class CodeModelBuilder {
},
},
});
if (type.isExactName) {
schema.language.java = schema.language.java ?? new Language();
schema.language.java.name = type.name;
}
if (type.external) {
// java name
schema.language.java = schema.language.java ?? new Language();
Expand Down Expand Up @@ -2832,6 +2849,10 @@ export class CodeModelBuilder {
},
},
});
if (type.isExactName) {
objectSchema.language.java = objectSchema.language.java ?? new Language();
objectSchema.language.java.name = type.name;
}
objectSchema.language.default.crossLanguageDefinitionId = type.crossLanguageDefinitionId;

if (type.external) {
Expand Down Expand Up @@ -2997,6 +3018,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
Expand Down Expand Up @@ -3054,6 +3079,10 @@ export class CodeModelBuilder {
},
},
});
if (type.isExactName) {
objectSchema.language.java = objectSchema.language.java ?? new Language();
objectSchema.language.java.name = type.name;
}

const variantSchema = this.processSchema(it, variantName);
objectSchema.addProperty(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -606,15 +609,19 @@ 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);
}

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);
Expand All @@ -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);
Expand All @@ -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());
}
Expand Down
Loading