diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java index e7d3d648d5b..61606198a8c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RubyClientCodegen.java @@ -14,6 +14,7 @@ import org.openapitools.codegen.SupportingFile; import java.io.File; import java.util.Arrays; import java.util.Iterator; +import java.util.List; import java.util.Map; import io.swagger.v3.oas.models.OpenAPI; @@ -260,35 +261,41 @@ public class RubyClientCodegen extends DefaultCodegen implements CodegenConfig { // not including base object test as the moment as not all API has model //writeOptional(outputFolder, new SupportingFile("base_object_spec.mustache", specFolder, "base_object_spec.rb")); } - + @Override - public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, Map schemas, OpenAPI openAPI) { - CodegenOperation op = super.fromOperation(path, httpMethod, operation, schemas, openAPI); - // Set vendor-extension to be used in template: - // x-codegen-hasMoreRequired - // x-codegen-hasMoreOptional - // x-codegen-hasRequiredParams - CodegenParameter lastRequired = null; - CodegenParameter lastOptional = null; - for (CodegenParameter p : op.allParams) { - if (p.required) { - lastRequired = p; - } else { - lastOptional = p; + public Map postProcessOperations(Map objs) { + Map operations = (Map) objs.get("operations"); + List operationList = (List) operations.get("operation"); + for (CodegenOperation op : operationList) { + // Set vendor-extension to be used in template: + // x-codegen-hasMoreRequired + // x-codegen-hasMoreOptional + // x-codegen-hasRequiredParams + CodegenParameter lastRequired = null; + CodegenParameter lastOptional = null; + for (CodegenParameter p : op.allParams) { + if (p.required) { + lastRequired = p; + } else { + lastOptional = p; + } } - } - for (CodegenParameter p : op.allParams) { - if (p == lastRequired) { - p.vendorExtensions.put("x-codegen-hasMoreRequired", false); - } else if (p == lastOptional) { - p.vendorExtensions.put("x-codegen-hasMoreOptional", false); - } else { - p.vendorExtensions.put("x-codegen-hasMoreRequired", true); - p.vendorExtensions.put("x-codegen-hasMoreOptional", true); + + for (CodegenParameter p : op.allParams) { + if (p == lastRequired) { + p.vendorExtensions.put("x-codegen-hasMoreRequired", false); + } else if (p == lastOptional) { + p.vendorExtensions.put("x-codegen-hasMoreOptional", false); + } else { + p.vendorExtensions.put("x-codegen-hasMoreRequired", true); + p.vendorExtensions.put("x-codegen-hasMoreOptional", true); + } } + op.vendorExtensions.put("x-codegen-hasRequiredParams", lastRequired != null); + } - op.vendorExtensions.put("x-codegen-hasRequiredParams", lastRequired != null); - return op; + + return objs; } @Override