Skip to content

Commit aa58fde

Browse files
committed
Implement referenced enum merging from oneof/anyof
1 parent 2066ce6 commit aa58fde

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,9 +1367,6 @@ protected Schema simplifyComposedSchemaWithEnums(Schema schema, List<Object> sub
13671367
}
13681368

13691369
Schema subSchema = ModelUtils.getReferencedSchema(openAPI, (Schema) item);
1370-
if(subSchema.get$ref() != null) {
1371-
return schema;
1372-
}
13731370

13741371
// Check if this sub-schema has an enum (with one or more values)
13751372
if (subSchema.getEnum() == null || subSchema.getEnum().isEmpty()) {

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,13 @@ public void testSimplifyOneOfAnyOfEnum() throws Exception {
187187
assertEquals(anyOfParam.getSchema().getType(), "string");
188188
assertEquals(anyOfParam.getSchema().getEnum(), Arrays.asList("anyof 1", "anyof 2"));
189189

190+
Schema combinedRefsEnum = openAPI.getComponents().getSchemas().get("combinedRefsEnum");
191+
192+
assertEquals(anyOfParam.getSchema().getType(), "string");
193+
assertNull(combinedRefsEnum.get$ref());
194+
assertEquals(combinedRefsEnum.getEnum(), Arrays.asList("A", "B", "C", "D"));
195+
assertNull(combinedRefsEnum.getOneOf());
196+
190197
// Test with rule disabled
191198
OpenAPI openAPI2 = TestUtils.parseSpec("src/test/resources/3_0/simplifyoneOfWithEnums_test.yaml");
192199
Map<String, String> options2 = new HashMap<>();
@@ -208,6 +215,7 @@ public void testSimplifyOneOfAnyOfEnum() throws Exception {
208215
Parameter anyOfParam2 = openAPI2.getPaths().get("/test").getGet().getParameters().get(1);
209216
assertNull(anyOfParam2.getSchema().getOneOf());
210217
assertNull(anyOfParam2.getSchema().getEnum());
218+
211219
}
212220

213221
@Test

modules/openapi-generator/src/test/resources/3_0/simplifyOneOfWithEnums_test.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ components:
2020
enum: [1]
2121
- title: inactive_pending
2222
enum: [2, 3]
23+
enum1:
24+
type: string
25+
enum:
26+
- A
27+
- B
28+
enum2:
29+
type: string
30+
enum:
31+
- C
32+
- D
33+
combinedRefsEnum:
34+
oneOf:
35+
- $ref: '#/components/schemas/enum1'
36+
- $ref: '#/components/schemas/enum2'
2337
paths:
2438
/test:
2539
get:

0 commit comments

Comments
 (0)