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 042e0ec1e4..a6b4255009 100644 --- a/packages/http-client-java/emitter/src/code-model-builder.ts +++ b/packages/http-client-java/emitter/src/code-model-builder.ts @@ -199,13 +199,12 @@ export class CodeModelBuilder { } const service = listServices(this.program)[0]; - const serviceNamespace = service.type; - if (serviceNamespace === undefined) { - throw Error("Cannot emit yaml for a namespace that doesn't exist."); + if (!service) { + throw Error("TypeSpec for HTTP must define a service."); } - this.serviceNamespace = serviceNamespace; + this.serviceNamespace = service.type; - this.namespace = getNamespaceFullName(serviceNamespace) || "Azure.Client"; + this.namespace = getNamespaceFullName(this.serviceNamespace) || "Azure.Client"; // java namespace const javaNamespace = this.getJavaNamespace(this.namespace); @@ -219,9 +218,9 @@ export class CodeModelBuilder { }; // init code model - const title = this.options["service-name"] ?? serviceNamespace.name; + const title = this.options["service-name"] ?? this.serviceNamespace.name; - const description = this.getDoc(serviceNamespace); + const description = this.getDoc(this.serviceNamespace); this.codeModel = new CodeModel(title, false, { info: { description: description, @@ -230,7 +229,7 @@ export class CodeModelBuilder { default: { name: title, description: description, - summary: this.getSummary(serviceNamespace), + summary: this.getSummary(this.serviceNamespace), namespace: this.namespace, }, java: { diff --git a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ClientMapper.java b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ClientMapper.java index ff3eb439db..55bc9fa0f5 100644 --- a/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ClientMapper.java +++ b/packages/http-client-java/generator/http-client-generator-core/src/main/java/com/microsoft/typespec/http/client/generator/core/mapper/ClientMapper.java @@ -192,9 +192,11 @@ public Client map(CodeModel codeModel) { } else { // service client ServiceClient serviceClient = Mappers.getServiceClientMapper().map(codeModel); - builder.serviceClient(serviceClient); + if (serviceClient != null) { + builder.serviceClient(serviceClient); - serviceClientsMap.put(serviceClient, codeModel); + serviceClientsMap.put(serviceClient, codeModel); + } } } 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 578af267c6..852e1de31a 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 @@ -54,9 +54,16 @@ public CodeModel transform(CodeModel codeModel) { markFlattenedSchemas(codeModel); } transformOperationGroups(codeModel.getOperationGroups(), codeModel); + if (codeModel.getGlobalParameters() != null) { + for (Parameter parameter : codeModel.getGlobalParameters()) { + if (parameter.getLanguage().getJava() == null) { + renameVariable(parameter); + } + } + } // multi-clients for TypeSpec if (codeModel.getClients() != null) { - transformClients(codeModel.getClients(), codeModel); + transformClients(codeModel.getClients()); } return codeModel; } @@ -108,7 +115,7 @@ private void transformSchemas(Schemas schemas) { } } - private void transformClients(List clients, CodeModel codeModel) { + private void transformClients(List clients) { for (Client client : clients) { renameClient(client); @@ -138,6 +145,14 @@ private void transformClients(List clients, CodeModel codeModel) { } } } + + if (client.getGlobalParameters() != null) { + for (Parameter parameter : client.getGlobalParameters()) { + if (parameter.getLanguage().getJava() == null) { + renameVariable(parameter); + } + } + } } } diff --git a/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecClientMapper.java b/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecClientMapper.java index ffaf9f1559..60591302d9 100644 --- a/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecClientMapper.java +++ b/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecClientMapper.java @@ -35,7 +35,10 @@ protected Map processClients(List clients, CodeMo Map serviceClientsMap = new LinkedHashMap<>(); TypeSpecServiceClientMapper mapper = new TypeSpecServiceClientMapper(); for (Client client : clients) { - serviceClientsMap.put(mapper.map(client, codeModel), client); + ServiceClient serviceClient = mapper.map(client, codeModel); + if (serviceClient != null) { + serviceClientsMap.put(serviceClient, client); + } } return serviceClientsMap; } diff --git a/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecServiceClientMapper.java b/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecServiceClientMapper.java index eeecda393a..989ebc2be8 100644 --- a/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecServiceClientMapper.java +++ b/packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/mapper/TypeSpecServiceClientMapper.java @@ -55,6 +55,11 @@ public ServiceClient map(Client client, CodeModel codeModel) { .forEach(og -> methodGroupClients.add(Mappers.getMethodGroupMapper().map(og, properties))); builder.methodGroupClients(methodGroupClients); + if (proxy == null && CoreUtils.isNullOrEmpty(methodGroupClients)) { + // No operation in this client, and no operation group as well. Abort the processing. + return null; + } + if (proxy == null) { proxy = methodGroupClients.iterator().next().getProxy(); }