diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java index b0e57a3cabb..de67d097b7d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/OCamlClientCodegen.java @@ -727,6 +727,12 @@ public class OCamlClientCodegen extends DefaultCodegen implements CodegenConfig if ("Yojson.Safe.t".equals(operation.returnBaseType)) { operation.vendorExtensions.put("x-return-free-form-object", true); } + + if (operation.returnType != null && operation.returnType.startsWith("Enums.")) { + String returnTypeEnum = operation.returnType.replaceAll(" list$", ""); + operation.vendorExtensions.put("x-returntype-enum", returnTypeEnum); + operation.vendorExtensions.put("x-returntype-is-enum", true); + } } for (Map.Entry e : enumUniqNames.entrySet()) { diff --git a/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache b/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache index be01eeafa4c..75803a743bb 100644 --- a/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache +++ b/modules/openapi-generator/src/main/resources/ocaml/of_json.mustache @@ -1 +1 @@ -{{#isEnum}}JsonSupport.unwrap Enums.{{{datatypeWithEnum}}}_of_yojson{{/isEnum}}{{^isEnum}}{{#returnType}}{{#returnTypeIsPrimitive}}JsonSupport.to_{{{returnBaseType}}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#vendorExtensions.x-model-module}}JsonSupport.unwrap {{{vendorExtensions.x-model-module}}}.of_yojson{{/vendorExtensions.x-model-module}}{{^vendorExtensions.x-model-module}}JsonSupport.unwrap {{{returnBaseType}}}.of_yojson{{/vendorExtensions.x-model-module}}{{/returnTypeIsPrimitive}}{{/returnType}}{{/isEnum}} \ No newline at end of file +{{#vendorExtensions.x-returntype-is-enum}}JsonSupport.unwrap {{{vendorExtensions.x-returntype-enum}}}_of_yojson{{/vendorExtensions.x-returntype-is-enum}}{{^vendorExtensions.x-returntype-is-enum}}{{#returnType}}{{#returnTypeIsPrimitive}}JsonSupport.to_{{{returnBaseType}}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}{{#vendorExtensions.x-model-module}}JsonSupport.unwrap {{{vendorExtensions.x-model-module}}}.of_yojson{{/vendorExtensions.x-model-module}}{{^vendorExtensions.x-model-module}}JsonSupport.unwrap {{{returnBaseType}}}.of_yojson{{/vendorExtensions.x-model-module}}{{/returnTypeIsPrimitive}}{{/returnType}}{{/vendorExtensions.x-returntype-is-enum}} \ No newline at end of file diff --git a/samples/client/petstore/ocaml/.openapi-generator/FILES b/samples/client/petstore/ocaml/.openapi-generator/FILES new file mode 100644 index 00000000000..8d7df53d9a0 --- /dev/null +++ b/samples/client/petstore/ocaml/.openapi-generator/FILES @@ -0,0 +1,19 @@ +README.md +dune +dune-project +petstore_client.opam +src/apis/pet_api.ml +src/apis/pet_api.mli +src/apis/store_api.ml +src/apis/store_api.mli +src/apis/user_api.ml +src/apis/user_api.mli +src/models/api_response.ml +src/models/category.ml +src/models/order.ml +src/models/pet.ml +src/models/tag.ml +src/models/user.ml +src/support/enums.ml +src/support/jsonSupport.ml +src/support/request.ml diff --git a/samples/client/petstore/ocaml/.openapi-generator/VERSION b/samples/client/petstore/ocaml/.openapi-generator/VERSION index d99e7162d01..3fa3b389a57 100644 --- a/samples/client/petstore/ocaml/.openapi-generator/VERSION +++ b/samples/client/petstore/ocaml/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +5.0.1-SNAPSHOT \ No newline at end of file