Skip to content

Commit b206183

Browse files
Support remove-model in TypeSpec Java emitter (#11658)
## Summary - expose `remove-model` as a string-array Java emitter option - forward configured model names to Fluent management generation - add emitter schema and Java option parsing coverage ## Validation - `npm run build` - `npm run format` - `npm run test:emitter` - targeted `EmitterOptionsTests` --------- Copilot-Session: eb21d30c-f82f-43a1-8cc3-cb2701293679
1 parent d3fd1a9 commit b206183

4 files changed

Lines changed: 29 additions & 0 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
changeKind: feature
3+
packages:
4+
- "@typespec/http-client-java"
5+
---
6+
7+
Support removing models from management clients with the `remove-model` emitter option.
8+
```

packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/fluent/TypeSpecFluentPlugin.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ public TypeSpecFluentPlugin(EmitterOptions options, boolean sdkIntegration) {
8686
if (options.getRemoveInner() != null) {
8787
SETTINGS_MAP.put("remove-inner", options.getRemoveInner());
8888
}
89+
if (options.getRemoveModel() != null) {
90+
SETTINGS_MAP.put("remove-model", options.getRemoveModel());
91+
}
8992
if (options.getPreserveModel() != null) {
9093
SETTINGS_MAP.put("preserve-model", options.getPreserveModel());
9194
}

packages/http-client-java/generator/http-client-generator/src/main/java/com/microsoft/typespec/http/client/generator/model/EmitterOptions.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public class EmitterOptions implements JsonSerializable<EmitterOptions> {
4949
private String renameModel;
5050
private String addInner;
5151
private String removeInner;
52+
private String removeModel;
5253
private String preserveModel;
5354
private Boolean generateAsyncMethods;
5455
private String propertyIncludeAlways;
@@ -190,6 +191,10 @@ public String getRemoveInner() {
190191
return removeInner;
191192
}
192193

194+
public String getRemoveModel() {
195+
return removeModel;
196+
}
197+
193198
public String getPreserveModel() {
194199
return preserveModel;
195200
}
@@ -278,6 +283,8 @@ public static EmitterOptions fromJson(JsonReader jsonReader) throws IOException
278283
options.addInner = reader.getNullable(EmitterOptions::getStringOrList);
279284
} else if ("remove-inner".equals(fieldName)) {
280285
options.removeInner = reader.getNullable(EmitterOptions::getStringOrList);
286+
} else if ("remove-model".equals(fieldName)) {
287+
options.removeModel = reader.getNullable(EmitterOptions::getStringOrList);
281288
} else if ("preserve-model".equals(fieldName)) {
282289
options.preserveModel = reader.getNullable(EmitterOptions::getStringOrList);
283290
} else if ("generate-async-methods".equals(fieldName)) {

packages/http-client-java/generator/http-client-generator/src/test/java/com/microsoft/typespec/http/client/generator/model/EmitterOptionsTests.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,15 @@ public void testRemoveInner(String json) throws IOException {
4141
Assertions.assertEquals(1, options.getRemoveInner().split(",").length);
4242
Assertions.assertEquals("NginxConfigurationResponse", options.getRemoveInner());
4343
}
44+
45+
@ParameterizedTest
46+
@ValueSource(
47+
strings = {
48+
"{\"remove-model\":[\"VirtualMachineExtensionImage\",\"VirtualMachineImage\"]}",
49+
"{\"remove-model\":\"VirtualMachineExtensionImage,VirtualMachineImage\"}" })
50+
public void testRemoveModel(String json) throws IOException {
51+
EmitterOptions options = EmitterOptions.fromJson(JsonReader.fromString(json));
52+
Assertions.assertEquals(2, options.getRemoveModel().split(",").length);
53+
Assertions.assertEquals("VirtualMachineExtensionImage,VirtualMachineImage", options.getRemoveModel());
54+
}
4455
}

0 commit comments

Comments
 (0)