diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index f0906626eea7..f5401737e587 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1837,7 +1837,13 @@ public String toAnyOfName(List names, ComposedSchema composedSchema) { } /** - * Return the name of the oneOf schema + * Return the name of the oneOf schema. + * + * This name is used to set the value of CodegenProperty.openApiType. + * + * If the 'x-one-of-name' extension is specified in the OAS document, return that value. + * Otherwise, a name is constructed by creating a comma-separated list of all the names + * of the oneOf schemas. * * @param names List of names * @param composedSchema composed schema @@ -1846,8 +1852,8 @@ public String toAnyOfName(List names, ComposedSchema composedSchema) { @SuppressWarnings("static-method") public String toOneOfName(List names, ComposedSchema composedSchema) { Map exts = composedSchema.getExtensions(); - if (exts != null && exts.containsKey("x-oneOf-name")) { - return (String) exts.get("x-oneOf-name"); + if (exts != null && exts.containsKey("x-one-of-name")) { + return (String) exts.get("x-one-of-name"); } return "oneOf<" + String.join(",", names) + ">"; } @@ -5788,14 +5794,14 @@ public void setRemoveEnumValuePrefix(final boolean removeEnumValuePrefix) { //// Following methods are related to the "useOneOfInterfaces" feature /** - * Add "x-oneOf-name" extension to a given oneOf schema (assuming it has at least 1 oneOf elements) + * Add "x-one-of-name" extension to a given oneOf schema (assuming it has at least 1 oneOf elements) * * @param s schema to add the extension to * @param name name of the parent oneOf schema */ public void addOneOfNameExtension(ComposedSchema s, String name) { if (s.getOneOf() != null && s.getOneOf().size() > 0) { - s.addExtension("x-oneOf-name", name); + s.addExtension("x-one-of-name", name); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index d43f7062e230..93ddc121dfa7 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -1401,7 +1401,7 @@ public void testUseOneOfInterfaces() { .get("application/json") .getSchema() .getExtensions() - .get("x-oneOf-name"), + .get("x-one-of-name"), "CreateState" ); Assert.assertEquals( @@ -1414,11 +1414,11 @@ public void testUseOneOfInterfaces() { .get("application/json") .getSchema() .getExtensions() - .get("x-oneOf-name"), + .get("x-one-of-name"), "GetState200" ); // for the array schema, assert that a oneOf interface was added to schema map Schema items = ((ArraySchema) openAPI.getComponents().getSchemas().get("CustomOneOfArraySchema")).getItems(); - Assert.assertEquals(items.getExtensions().get("x-oneOf-name"), "CustomOneOfArraySchemaOneOf"); + Assert.assertEquals(items.getExtensions().get("x-one-of-name"), "CustomOneOfArraySchemaOneOf"); } } diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml b/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml index e44571cb5f14..8f1a907787d2 100644 --- a/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml +++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml @@ -1919,7 +1919,7 @@ components: properties: color: type: string - x-oneOf-name: Fruit + x-one-of-name: Fruit apple: properties: cultivar: @@ -1939,7 +1939,7 @@ components: oneOf: - $ref: '#/components/schemas/whale' - $ref: '#/components/schemas/zebra' - x-oneOf-name: Mammal + x-one-of-name: Mammal whale: properties: hasBaleen: @@ -1975,7 +1975,7 @@ components: oneOf: - $ref: '#/components/schemas/appleReq' - $ref: '#/components/schemas/bananaReq' - x-oneOf-name: FruitReq + x-one-of-name: FruitReq appleReq: properties: cultivar: