Skip to content

Commit bcb3082

Browse files
tsp, propagate usage/access to children, only for discriminated model (#2751)
1 parent 2371806 commit bcb3082

File tree

8 files changed

+20
-15
lines changed

8 files changed

+20
-15
lines changed

typespec-extension/changelog.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Release History
22

3+
## 0.15.17 (2024-05-11)
4+
5+
Compatible with compiler 0.56.
6+
7+
- Behavior change on access/usage of non-polymorphic subclass.
8+
39
## 0.15.16 (2024-05-08)
410

511
Compatible with compiler 0.56.

typespec-extension/package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

typespec-extension/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@azure-tools/typespec-java",
3-
"version": "0.15.16",
3+
"version": "0.15.17",
44
"description": "TypeSpec library for emitting Java client from the TypeSpec REST protocol binding",
55
"keywords": [
66
"TypeSpec"

typespec-extension/src/code-model-builder.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -2874,20 +2874,17 @@ export class CodeModelBuilder {
28742874
schema.parents?.all?.forEach((p) => innerApplySchemaUsage(p, schemaUsage));
28752875
schema.parents?.immediate?.forEach((p) => innerApplySchemaUsage(p, schemaUsage));
28762876

2877-
schema.children?.all?.forEach((c) => innerApplySchemaUsage(c, schemaUsage));
2878-
schema.children?.immediate?.forEach((c) => innerApplySchemaUsage(c, schemaUsage));
2877+
if (schema.discriminator) {
2878+
// propagate access/usage to immediate children, if the schema is a discriminated model
2879+
// if the schema is not a discriminated model, its children likely not valid for the mode/API
2880+
// TODO: it does not handle the case that concrete model (kind: "type1") for the discriminated model have depth larger than 1 (e.g. kind: "type1" | "type2" in middle)
2881+
schema.children?.immediate?.forEach((c) => innerApplySchemaUsage(c, schemaUsage));
2882+
}
28792883

28802884
if (schema.discriminator?.property?.schema) {
28812885
innerApplySchemaUsage(schema.discriminator?.property?.schema, schemaUsage);
28822886
}
28832887
}
2884-
2885-
// Object.values(schema.discriminator?.all ?? {}).forEach((d) => {
2886-
// innerApplySchemaUsage(d, schemaUsage);
2887-
// });
2888-
// Object.values(schema.discriminator?.immediate ?? {}).forEach((d) => {
2889-
// innerApplySchemaUsage(d, schemaUsage);
2890-
// });
28912888
}
28922889
} else if (schema instanceof DictionarySchema) {
28932890
innerApplySchemaUsage(schema.elementType, schemaUsage);

typespec-tests/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
},
1111
"dependencies": {
1212
"@azure-tools/cadl-ranch-specs": "0.33.4",
13-
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.15.16.tgz"
13+
"@azure-tools/typespec-java": "file:/../typespec-extension/azure-tools-typespec-java-0.15.17.tgz"
1414
},
1515
"devDependencies": {
1616
"@typespec/prettier-plugin-typespec": "~0.56.0",

typespec-tests/src/main/java/com/cadl/union/models/SubResult.java renamed to typespec-tests/src/main/java/com/cadl/union/implementation/models/SubResult.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
// Licensed under the MIT License.
33
// Code generated by Microsoft (R) TypeSpec Code Generator.
44

5-
package com.cadl.union.models;
5+
package com.cadl.union.implementation.models;
66

77
import com.azure.core.annotation.Fluent;
88
import com.azure.core.annotation.Generated;
99
import com.azure.core.util.BinaryData;
1010
import com.azure.json.JsonReader;
1111
import com.azure.json.JsonToken;
1212
import com.azure.json.JsonWriter;
13+
import com.cadl.union.models.Result;
1314
import java.io.IOException;
1415

1516
/**

typespec-tests/src/test/java/com/cadl/union/UnionTests.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import com.azure.core.util.BinaryData;
77
import com.cadl.union.models.Result;
8-
import com.cadl.union.models.SubResult;
8+
import com.cadl.union.implementation.models.SubResult;
99
import com.fasterxml.jackson.databind.JsonNode;
1010
import com.fasterxml.jackson.databind.ObjectMapper;
1111
import org.junit.jupiter.api.Assertions;

typespec-tests/tsp/union.tsp

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ model Query {
7373
data?: url | bytes;
7474
}
7575

76+
@access(Access.internal)
7677
@usage(Usage.input | Usage.output)
7778
model SubResult extends Result {
7879
text?: string;

0 commit comments

Comments
 (0)