@azure-tools/typespec-java 0.27.0 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,6 @@ export declare class CodeModelBuilder {
15
15
  private codeModel;
16
16
  private emitterContext;
17
17
  private serviceNamespace;
18
- private loggingEnabled;
19
18
  readonly schemaCache: ProcessingCache<SdkType, Schema>;
20
19
  readonly typeUnionRefCache: Map<Type, Union | null | undefined>;
21
20
  private apiVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { getSegment } from "@typespec/rest";
7
7
  import { getAddedOnVersions } from "@typespec/versioning";
8
8
  import { fail } from "assert";
9
9
  import pkg from "lodash";
10
- import { Client as CodeModelClient, } from "./common/client.js";
10
+ import { Client as CodeModelClient } from "./common/client.js";
11
11
  import { CodeModel } from "./common/code-model.js";
12
12
  import { LongRunningMetadata } from "./common/long-running-metadata.js";
13
13
  import { Operation as CodeModelOperation, ConvenienceApi, Request } from "./common/operation.js";
@@ -25,24 +25,20 @@ const { isEqual } = pkg;
25
25
  export class CodeModelBuilder {
26
26
  constructor(program1, context) {
27
27
  var _a, _b;
28
- this.loggingEnabled = false;
29
28
  this.schemaCache = new ProcessingCache((type, name) => this.processSchemaImpl(type, name));
30
29
  this.typeUnionRefCache = new Map(); // Union means it ref a Union type, null means it does not ref any Union, undefined means type visited but not completed
31
30
  this.options = context.options;
32
31
  this.program = program1;
33
32
  this.emitterContext = context;
34
- if ((_a = this.options["dev-options"]) === null || _a === void 0 ? void 0 : _a.loglevel) {
35
- this.loggingEnabled = true;
36
- }
37
33
  if (this.options["skip-special-headers"]) {
38
34
  this.options["skip-special-headers"].forEach((it) => SPECIAL_HEADER_NAMES.add(it.toLowerCase()));
39
35
  }
40
36
  const service = listServices(this.program)[0];
41
37
  if (!service) {
42
- this.logError("TypeSpec for HTTP must define a service.");
38
+ this.logWarning("TypeSpec for HTTP client should define a service.");
43
39
  }
44
- this.serviceNamespace = service.type;
45
- this.namespace = getNamespaceFullName(this.serviceNamespace) || "Azure.Client";
40
+ this.serviceNamespace = (_a = service === null || service === void 0 ? void 0 : service.type) !== null && _a !== void 0 ? _a : this.program.getGlobalNamespaceType();
41
+ this.namespace = getNamespaceFullName(this.serviceNamespace) || "Client";
46
42
  const namespace1 = this.namespace;
47
43
  this.typeNameOptions = {
48
44
  // shorten type names by removing TypeSpec and service namespace
@@ -70,6 +66,9 @@ export class CodeModelBuilder {
70
66
  });
71
67
  }
72
68
  async build() {
69
+ if (this.program.hasError()) {
70
+ return this.codeModel;
71
+ }
73
72
  this.sdkContext = await createSdkContext(this.emitterContext, "@azure-tools/typespec-java", {
74
73
  versioning: { previewStringRegex: /$/ },
75
74
  }); // include all versions and do the filter by ourselves
@@ -87,9 +86,8 @@ export class CodeModelBuilder {
87
86
  this.baseJavaNamespace = this.getBaseJavaNamespace();
88
87
  }
89
88
  this.codeModel.language.java.namespace = this.baseJavaNamespace;
90
- // TODO: reportDiagnostics from TCGC temporary disabled
91
- // issue https://github.com/Azure/typespec-azure/issues/1675
92
- // this.program.reportDiagnostics(this.sdkContext.diagnostics);
89
+ // potential problem https://github.com/Azure/typespec-azure/issues/1675
90
+ this.program.reportDiagnostics(this.sdkContext.diagnostics);
93
91
  // auth
94
92
  // TODO: it is not very likely, but different client could have different auth
95
93
  const auth = getAuthentication(this.program, this.serviceNamespace);
@@ -150,11 +148,22 @@ export class CodeModelBuilder {
150
148
  switch (scheme.type) {
151
149
  case "oauth2":
152
150
  {
153
- const oauth2Scheme = new OAuth2SecurityScheme({
154
- scopes: [],
155
- });
156
- scheme.flows.forEach((it) => oauth2Scheme.scopes.push(...it.scopes.map((it) => it.value)));
157
- securitySchemes.push(oauth2Scheme);
151
+ if (this.isBranded()) {
152
+ const oauth2Scheme = new OAuth2SecurityScheme({
153
+ scopes: [],
154
+ });
155
+ scheme.flows.forEach((it) => oauth2Scheme.scopes.push(...it.scopes.map((it) => it.value)));
156
+ securitySchemes.push(oauth2Scheme);
157
+ }
158
+ else {
159
+ // there is no TokenCredential in clientcore, hence use Bearer Authentication directly
160
+ this.logWarning(`OAuth2 auth scheme is generated as KeyCredential.`);
161
+ const keyScheme = new KeySecurityScheme({
162
+ name: "authorization",
163
+ });
164
+ keyScheme.prefix = "Bearer";
165
+ securitySchemes.push(keyScheme);
166
+ }
158
167
  }
159
168
  break;
160
169
  case "apiKey":
@@ -339,7 +348,7 @@ export class CodeModelBuilder {
339
348
  // at present, use global security definition
340
349
  security: this.codeModel.security,
341
350
  });
342
- codeModelClient.crossLanguageDefinitionId = client.crossLanguageDefinitionId;
351
+ codeModelClient.language.default.crossLanguageDefinitionId = client.crossLanguageDefinitionId;
343
352
  // versioning
344
353
  const versions = client.apiVersions;
345
354
  if (versions && versions.length > 0) {
@@ -376,7 +385,7 @@ export class CodeModelBuilder {
376
385
  }
377
386
  }
378
387
  else if (initializationProperty.type.variantTypes.length > 2) {
379
- this.logError("Multiple server url defined for one client is not supported yet.");
388
+ this.logError("Multiple server URL defined for one client is not supported yet.");
380
389
  }
381
390
  }
382
391
  else if (initializationProperty.type.kind === "endpoint") {
@@ -393,6 +402,7 @@ export class CodeModelBuilder {
393
402
  // operations without operation group
394
403
  const serviceMethodsWithoutSubClient = this.listServiceMethodsUnderClient(client);
395
404
  let codeModelGroup = new OperationGroup("");
405
+ codeModelGroup.language.default.crossLanguageDefinitionId = client.crossLanguageDefinitionId;
396
406
  for (const serviceMethod of serviceMethodsWithoutSubClient) {
397
407
  if (!this.needToSkipProcessingOperation(serviceMethod.__raw, clientContext)) {
398
408
  codeModelGroup.addOperation(this.processOperation(serviceMethod, clientContext, ""));
@@ -416,6 +426,8 @@ export class CodeModelBuilder {
416
426
  // operation group with no operation is skipped
417
427
  if (serviceMethods.length > 0) {
418
428
  codeModelGroup = new OperationGroup(subClient.name);
429
+ codeModelGroup.language.default.crossLanguageDefinitionId =
430
+ subClient.crossLanguageDefinitionId;
419
431
  for (const serviceMethod of serviceMethods) {
420
432
  if (!this.needToSkipProcessingOperation(serviceMethod.__raw, clientContext)) {
421
433
  codeModelGroup.addOperation(this.processOperation(serviceMethod, clientContext, subClient.name));
@@ -558,8 +570,8 @@ export class CodeModelBuilder {
558
570
  "x-ms-examples": operationExamples,
559
571
  },
560
572
  });
561
- codeModelOperation.crossLanguageDefinitionId =
562
- sdkMethod.crossLanguageDefintionId;
573
+ codeModelOperation.language.default.crossLanguageDefinitionId =
574
+ sdkMethod.crossLanguageDefinitionId;
563
575
  codeModelOperation.internalApi = sdkMethod.access === "internal";
564
576
  const convenienceApiName = this.getConvenienceApiName(sdkMethod);
565
577
  let generateConvenienceApi = sdkMethod.generateConvenient;
@@ -670,24 +682,45 @@ export class CodeModelBuilder {
670
682
  for (const response of responses) {
671
683
  const bodyType = response.type;
672
684
  if (bodyType && bodyType.kind === "model") {
673
- const itemName = sdkMethod.response.resultPath;
674
- const nextLinkName = sdkMethod.nextLinkPath;
675
- op.extensions = (_a = op.extensions) !== null && _a !== void 0 ? _a : {};
676
- op.extensions["x-ms-pageable"] = {
677
- itemName: itemName,
678
- nextLinkName: nextLinkName,
679
- };
680
- (_b = op.responses) === null || _b === void 0 ? void 0 : _b.forEach((r) => {
685
+ const itemClientName = sdkMethod.response.resultPath;
686
+ const nextLinkClientName = sdkMethod.nextLinkPath;
687
+ let itemSerializedName = undefined;
688
+ let nextLinkSerializedName = undefined;
689
+ (_a = op.responses) === null || _a === void 0 ? void 0 : _a.forEach((r) => {
690
+ var _a;
681
691
  if (r instanceof SchemaResponse) {
682
692
  this.trackSchemaUsage(r.schema, { usage: [SchemaContext.Paged] });
693
+ // find serializedName for items and nextLink
694
+ if (r.schema instanceof ObjectSchema) {
695
+ (_a = r.schema.properties) === null || _a === void 0 ? void 0 : _a.forEach((p) => {
696
+ if (itemClientName &&
697
+ !itemSerializedName &&
698
+ p.serializedName &&
699
+ p.language.default.name === itemClientName) {
700
+ itemSerializedName = p.serializedName;
701
+ }
702
+ if (nextLinkClientName &&
703
+ !nextLinkSerializedName &&
704
+ p.serializedName &&
705
+ p.language.default.name === nextLinkClientName) {
706
+ nextLinkSerializedName = p.serializedName;
707
+ }
708
+ });
709
+ }
683
710
  }
684
711
  });
712
+ op.extensions = (_b = op.extensions) !== null && _b !== void 0 ? _b : {};
713
+ op.extensions["x-ms-pageable"] = {
714
+ itemName: itemSerializedName,
715
+ nextLinkName: nextLinkSerializedName,
716
+ };
685
717
  break;
686
718
  }
687
719
  }
688
720
  }
689
721
  }
690
722
  processLroMetadata(op, sdkMethod) {
723
+ var _a;
691
724
  const trackConvenienceApi = Boolean(op.convenienceApi);
692
725
  const lroMetadata = sdkMethod.lroMetadata;
693
726
  if (lroMetadata && lroMetadata.pollingStep) {
@@ -732,8 +765,19 @@ export class CodeModelBuilder {
732
765
  lroMetadata.finalStep &&
733
766
  lroMetadata.finalStep.kind === "pollingSuccessProperty" &&
734
767
  lroMetadata.finalResponse.resultPath) {
735
- // final result is the value in lroMetadata.finalStep.target
736
- finalResultPropertySerializedName = lroMetadata.finalResponse.resultPath;
768
+ const finalResultPropertyClientName = lroMetadata.finalResponse.resultPath;
769
+ // find serializedName for lro result
770
+ if (finalResultPropertyClientName) {
771
+ (_a = lroMetadata.finalResponse.envelopeResult.properties) === null || _a === void 0 ? void 0 : _a.forEach((p) => {
772
+ var _a;
773
+ // TODO: "p.__raw?.name" should be "p.name", after TCGC fix https://github.com/Azure/typespec-azure/issues/2072
774
+ if (p.kind === "property" &&
775
+ p.serializedName &&
776
+ ((_a = p.__raw) === null || _a === void 0 ? void 0 : _a.name) === finalResultPropertyClientName) {
777
+ finalResultPropertySerializedName = p.serializedName;
778
+ }
779
+ });
780
+ }
737
781
  }
738
782
  }
739
783
  // track usage
@@ -1497,7 +1541,7 @@ export class CodeModelBuilder {
1497
1541
  },
1498
1542
  },
1499
1543
  });
1500
- schema.crossLanguageDefinitionId = type.crossLanguageDefinitionId;
1544
+ schema.language.default.crossLanguageDefinitionId = type.crossLanguageDefinitionId;
1501
1545
  return this.codeModel.schemas.add(schema);
1502
1546
  }
1503
1547
  processConstantSchema(type, name) {
@@ -1571,8 +1615,7 @@ export class CodeModelBuilder {
1571
1615
  },
1572
1616
  },
1573
1617
  });
1574
- objectSchema.crossLanguageDefinitionId =
1575
- type.crossLanguageDefinitionId;
1618
+ objectSchema.language.default.crossLanguageDefinitionId = type.crossLanguageDefinitionId;
1576
1619
  this.codeModel.schemas.add(objectSchema);
1577
1620
  // cache this now before we accidentally recurse on this type.
1578
1621
  if (!this.schemaCache.has(type)) {
@@ -1754,7 +1797,7 @@ export class CodeModelBuilder {
1754
1797
  getUnionVariantName(type, option) {
1755
1798
  var _a, _b;
1756
1799
  if (type === undefined) {
1757
- this.logError("type is undefined.");
1800
+ this.logWarning("Union variant type is undefined.");
1758
1801
  return "UnionVariant";
1759
1802
  }
1760
1803
  switch (type.kind) {
@@ -1812,7 +1855,7 @@ export class CodeModelBuilder {
1812
1855
  case "UnionVariant":
1813
1856
  return (_b = (typeof type.name === "string" ? type.name : undefined)) !== null && _b !== void 0 ? _b : "UnionVariant";
1814
1857
  default:
1815
- this.logError(`Unrecognized type for union variable: '${type.kind}'.`);
1858
+ this.logWarning(`Unrecognized type for union variable: '${type.kind}'.`);
1816
1859
  return "UnionVariant";
1817
1860
  }
1818
1861
  }
@@ -1943,26 +1986,40 @@ export class CodeModelBuilder {
1943
1986
  getJavaNamespace(type = undefined) {
1944
1987
  // clientNamespace from TCGC
1945
1988
  const clientNamespace = type === null || type === void 0 ? void 0 : type.clientNamespace;
1946
- if (this.isBranded() && type) {
1947
- // special handling for namespace of model that cannot be mapped to azure-core
1948
- if (type.crossLanguageDefinitionId === "TypeSpec.Http.File") {
1949
- // TypeSpec.Http.File
1950
- return this.baseJavaNamespace;
1951
- }
1952
- else if (type.crossLanguageDefinitionId === "Azure.Core.Foundations.OperationState") {
1953
- // Azure.Core.OperationState
1954
- return this.baseJavaNamespace;
1955
- }
1956
- else if (type.crossLanguageDefinitionId === "Azure.Core.ResourceOperationStatus" ||
1957
- type.crossLanguageDefinitionId === "Azure.Core.Foundations.OperationStatus") {
1958
- // Azure.Core.ResourceOperationStatus<>
1959
- // Azure.Core.Foundations.OperationStatus<>
1960
- // usually this model will not be generated, but javadoc of protocol method requires it be in SDK namespace
1961
- return this.baseJavaNamespace;
1989
+ if (type) {
1990
+ const crossLanguageDefinitionId = type.crossLanguageDefinitionId;
1991
+ if (this.isBranded()) {
1992
+ // special handling for namespace of model that cannot be mapped to azure-core
1993
+ if (crossLanguageDefinitionId === "TypeSpec.Http.File") {
1994
+ // TypeSpec.Http.File
1995
+ return this.baseJavaNamespace;
1996
+ }
1997
+ else if (crossLanguageDefinitionId === "Azure.Core.Foundations.OperationState") {
1998
+ // Azure.Core.OperationState
1999
+ return this.baseJavaNamespace;
2000
+ }
2001
+ else if (crossLanguageDefinitionId === "Azure.Core.ResourceOperationStatus" ||
2002
+ crossLanguageDefinitionId === "Azure.Core.Foundations.OperationStatus") {
2003
+ // Azure.Core.ResourceOperationStatus<>
2004
+ // Azure.Core.Foundations.OperationStatus<>
2005
+ // usually this model will not be generated, but javadoc of protocol method requires it be in SDK namespace
2006
+ return this.baseJavaNamespace;
2007
+ }
2008
+ else if (type.crossLanguageDefinitionId.startsWith("Azure.ResourceManager.")) {
2009
+ // models in Azure.ResourceManager
2010
+ return this.baseJavaNamespace;
2011
+ }
1962
2012
  }
1963
- else if (type.crossLanguageDefinitionId.startsWith("Azure.ResourceManager.")) {
1964
- // models in Azure.ResourceManager
1965
- return this.baseJavaNamespace;
2013
+ else {
2014
+ // special handling for namespace of model in TypeSpec
2015
+ if (crossLanguageDefinitionId === "TypeSpec.Http.File") {
2016
+ // TypeSpec.Http.File
2017
+ return this.baseJavaNamespace;
2018
+ }
2019
+ else if (crossLanguageDefinitionId.startsWith("TypeSpec.Rest.Resource.")) {
2020
+ // models in TypeSpec.Rest.Resource
2021
+ return this.baseJavaNamespace;
2022
+ }
1966
2023
  }
1967
2024
  }
1968
2025
  if (this.legacyJavaNamespace || !clientNamespace) {
@@ -1976,9 +2033,7 @@ export class CodeModelBuilder {
1976
2033
  logError(this.program, msg);
1977
2034
  }
1978
2035
  logWarning(msg) {
1979
- if (this.loggingEnabled) {
1980
- logWarning(this.program, msg);
1981
- }
2036
+ logWarning(this.program, msg);
1982
2037
  }
1983
2038
  trace(msg) {
1984
2039
  trace(this.program, msg);