Skip to content

Commit 2f73451

Browse files
authored
fix: Null example values generated for enum properties (#18623)
* Fix null example values being generated for enum properties * Update examples * PRFB: use isEnumSchema
1 parent edbb021 commit 2f73451

File tree

6 files changed

+91
-4
lines changed

6 files changed

+91
-4
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/examples/ExampleGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ private Object resolveModelToExample(String name, String mediaType, Schema schem
377377
return null;
378378
}
379379
return resolvePropertyToExample(name, mediaType, found.get(), processedModels);
380-
} else if (ModelUtils.isArraySchema(schema)) {
380+
} else if (ModelUtils.isArraySchema(schema) || ModelUtils.isEnumSchema(schema)) {
381381
return resolvePropertyToExample(schema.getName(), mediaType, schema, processedModels);
382382
} else {
383383
// TODO log an error message as the model does not have any properties

modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.fasterxml.jackson.databind.JsonNode;
2121
import com.fasterxml.jackson.databind.ObjectMapper;
2222
import io.swagger.v3.core.util.AnnotationsUtils;
23-
import io.swagger.v3.core.util.Json;
2423
import io.swagger.v3.oas.models.OpenAPI;
2524
import io.swagger.v3.oas.models.Operation;
2625
import io.swagger.v3.oas.models.PathItem;

modules/openapi-generator/src/test/java/org/openapitools/codegen/yaml/YamlGeneratorTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import java.io.File;
3030
import java.nio.file.Files;
31+
import java.nio.file.Path;
3132
import java.util.HashMap;
3233
import java.util.List;
3334
import java.util.Map;
@@ -121,4 +122,31 @@ public void testIssue9086() throws Exception {
121122
Assert.assertEquals(actual.getPaths().get("/foo/bar").getPost().getResponses().get("200").getContent().get("*/*").getSchema().getAdditionalProperties(),
122123
expected.getComponents().getSchemas().get("_foo_bar_post_200_response").getAdditionalProperties());
123124
}
125+
126+
@Test
127+
public void testIssue18622() throws Exception {
128+
Map<String, Object> properties = new HashMap<>();
129+
properties.put(OpenAPIYamlGenerator.OUTPUT_NAME, "issue_18622.yaml");
130+
131+
File output = Files.createTempDirectory("issue_18622").toFile();
132+
output.deleteOnExit();
133+
134+
final CodegenConfigurator configurator = new CodegenConfigurator()
135+
.setGeneratorName("openapi-yaml")
136+
.setAdditionalProperties(properties)
137+
.setInputSpec("src/test/resources/2_0/issue_18622.yaml")
138+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
139+
140+
final ClientOptInput clientOptInput = configurator.toClientOptInput();
141+
DefaultGenerator generator = new DefaultGenerator();
142+
List<File> files = generator.opts(clientOptInput).generate();
143+
Assert.assertEquals(files.size(), 5);
144+
TestUtils.ensureContainsFile(files, output, "issue_18622.yaml");
145+
146+
OpenAPI expected = TestUtils.parseSpec("src/test/resources/2_0/issue_18622_expected.yaml");
147+
OpenAPI actual = TestUtils.parseSpec(Path.of(output.getAbsolutePath(), "issue_18622.yaml").toString());
148+
149+
Assert.assertEquals(actual.getComponents().getSchemas().get("myresponse").getExample(),
150+
expected.getComponents().getSchemas().get("myresponse").getExample());
151+
}
124152
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
swagger: '2.0'
2+
info:
3+
title: 'Buggy Api'
4+
version: '1.0'
5+
consumes:
6+
- application/json
7+
paths:
8+
/foo/bar:
9+
post:
10+
responses:
11+
'200':
12+
description: ok
13+
schema:
14+
$ref: "#/definitions/myresponse"
15+
definitions:
16+
myresponse:
17+
type: object
18+
additionalProperties: false
19+
properties:
20+
x:
21+
$ref: "#/definitions/myenum"
22+
myenum:
23+
type: string
24+
enum:
25+
- A
26+
- B
27+
- C
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
openapi: 3.0.1
2+
info:
3+
title: Buggy Api
4+
version: "1.0"
5+
servers:
6+
- url: /
7+
paths:
8+
/foo/bar:
9+
post:
10+
responses:
11+
"200":
12+
content:
13+
'*/*':
14+
schema:
15+
$ref: '#/components/schemas/myresponse'
16+
description: ok
17+
components:
18+
schemas:
19+
myresponse:
20+
additionalProperties: false
21+
example:
22+
x: A
23+
properties:
24+
x:
25+
$ref: '#/components/schemas/myenum'
26+
type: object
27+
myenum:
28+
enum:
29+
- A
30+
- B
31+
- C
32+
type: string
33+
x-original-swagger-version: "2.0"

samples/client/petstore/csharp/generichost/net8/FormModels/api/openapi.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,7 +1276,7 @@ components:
12761276
id: 0
12771277
shipDate: 2020-02-02T20:20:20.000222Z
12781278
complete: false
1279-
status: null
1279+
status: placed
12801280
properties:
12811281
id:
12821282
format: int64
@@ -1400,7 +1400,7 @@ components:
14001400
id: 1
14011401
- name: name
14021402
id: 1
1403-
status: null
1403+
status: available
14041404
properties:
14051405
id:
14061406
format: int64

0 commit comments

Comments
 (0)