replace fromOperation with postProcessOperations

This commit is contained in:
wing328 2018-04-09 01:27:28 +08:00
parent 9d1ae0dd29
commit adbde2fb61

View File

@ -14,6 +14,7 @@ import org.openapitools.codegen.SupportingFile;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import io.swagger.v3.oas.models.OpenAPI; 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 // 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")); //writeOptional(outputFolder, new SupportingFile("base_object_spec.mustache", specFolder, "base_object_spec.rb"));
} }
@Override @Override
public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, Map<String, Schema> schemas, OpenAPI openAPI) { public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
CodegenOperation op = super.fromOperation(path, httpMethod, operation, schemas, openAPI); Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
// Set vendor-extension to be used in template: List<CodegenOperation> operationList = (List<CodegenOperation>) operations.get("operation");
// x-codegen-hasMoreRequired for (CodegenOperation op : operationList) {
// x-codegen-hasMoreOptional // Set vendor-extension to be used in template:
// x-codegen-hasRequiredParams // x-codegen-hasMoreRequired
CodegenParameter lastRequired = null; // x-codegen-hasMoreOptional
CodegenParameter lastOptional = null; // x-codegen-hasRequiredParams
for (CodegenParameter p : op.allParams) { CodegenParameter lastRequired = null;
if (p.required) { CodegenParameter lastOptional = null;
lastRequired = p; for (CodegenParameter p : op.allParams) {
} else { if (p.required) {
lastOptional = p; lastRequired = p;
} else {
lastOptional = p;
}
} }
}
for (CodegenParameter p : op.allParams) { for (CodegenParameter p : op.allParams) {
if (p == lastRequired) { if (p == lastRequired) {
p.vendorExtensions.put("x-codegen-hasMoreRequired", false); p.vendorExtensions.put("x-codegen-hasMoreRequired", false);
} else if (p == lastOptional) { } else if (p == lastOptional) {
p.vendorExtensions.put("x-codegen-hasMoreOptional", false); p.vendorExtensions.put("x-codegen-hasMoreOptional", false);
} else { } else {
p.vendorExtensions.put("x-codegen-hasMoreRequired", true); p.vendorExtensions.put("x-codegen-hasMoreRequired", true);
p.vendorExtensions.put("x-codegen-hasMoreOptional", 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 @Override