();
mo.put("model", cm);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
index 12abb58094ee..5a9a70bcff68 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractAdaCodegen.java
@@ -378,7 +378,7 @@ public void postProcessParameter(CodegenParameter parameter) {
/**
* Post process the media types (produces and consumes) for Ada code generator.
*
- * For each media type, add a adaMediaType member that gives the Ada enum constant
+ * For each media type, add an adaMediaType member that gives the Ada enum constant
* for the corresponding type.
*
* @param types the list of media types.
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java
index a385c4ddabb2..4a6a827932b5 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractCSharpCodegen.java
@@ -341,7 +341,7 @@ private void addMustacheLambdas(Map objs) {
.build();
if (objs.containsKey("lambda")) {
- LOGGER.warn("An property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " +
+ LOGGER.warn("A property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " +
"You'll likely need to use a custom template, " +
"see https://github.com/swagger-api/swagger-codegen#modifying-the-client-library-format. ");
objs.put("_lambda", lambdas);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
index b377f59f1944..33d07d7455bd 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java
@@ -62,6 +62,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
public static final String SUPPORT_ASYNC = "supportAsync";
public static final String WITH_XML = "withXml";
public static final String SUPPORT_JAVA6 = "supportJava6";
+ public static final String DISABLE_HTML_ESCAPING = "disableHtmlEscaping";
protected String dateLibrary = "threetenbp";
protected boolean supportAsync = false;
@@ -93,7 +94,8 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
protected boolean serializeBigDecimalAsString = false;
protected String apiDocPath = "docs/";
protected String modelDocPath = "docs/";
- protected boolean supportJava6 = false;
+ protected boolean supportJava6= false;
+ protected boolean disableHtmlEscaping = false;
public AbstractJavaCodegen() {
super();
@@ -185,6 +187,7 @@ public AbstractJavaCodegen() {
java8Mode.setEnum(java8ModeOptions);
cliOptions.add(java8Mode);
+ cliOptions.add(CliOption.newBoolean(DISABLE_HTML_ESCAPING, "Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)"));
}
@Override
@@ -196,6 +199,10 @@ public void processOpts() {
}
additionalProperties.put(SUPPORT_JAVA6, supportJava6);
+ if (additionalProperties.containsKey(DISABLE_HTML_ESCAPING)) {
+ this.setDisableHtmlEscaping(Boolean.valueOf(additionalProperties.get(DISABLE_HTML_ESCAPING).toString()));
+ }
+ additionalProperties.put(DISABLE_HTML_ESCAPING, disableHtmlEscaping);
if (additionalProperties.containsKey(CodegenConstants.INVOKER_PACKAGE)) {
this.setInvokerPackage((String) additionalProperties.get(CodegenConstants.INVOKER_PACKAGE));
@@ -1222,6 +1229,10 @@ public void setSupportAsync(boolean enabled) {
this.supportAsync = enabled;
}
+ public void setDisableHtmlEscaping(boolean disabled) {
+ this.disableHtmlEscaping = disabled;
+ }
+
@Override
public String escapeQuotationMark(String input) {
// remove " to avoid code injection
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java
index 44268803c437..7f2801a7be39 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java
@@ -325,11 +325,10 @@ public String toDefaultValue(Schema p) {
} else if (ModelUtils.isDateTimeSchema(p)) {
return UNDEFINED_VALUE;
} else if (ModelUtils.isNumberSchema(p)) {
- NumberSchema dp = (NumberSchema) p;
- if (dp.getDefault() != null) {
- return dp.getDefault().toString();
- }
- return UNDEFINED_VALUE;
+ if (p.getDefault() != null) {
+ return p.getDefault().toString();
+ }
+ return UNDEFINED_VALUE;
} else if (ModelUtils.isIntegerSchema(p)) {
if (p.getDefault() != null) {
return p.getDefault().toString();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
index b11c02f6329c..1bbfafbce377 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java
@@ -74,7 +74,7 @@ public CppPistacheServerCodegen() {
apiTemplateFiles.put("api-impl-source.mustache", ".cpp");
apiTemplateFiles.put("main-api-server.mustache", ".cpp");
- embeddedTemplateDir = templateDir = "pistache-server";
+ embeddedTemplateDir = templateDir = "cpp-pistache-server";
cliOptions.clear();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java
index dab947d9dd7f..fa3e9ca643de 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5ClientCodegen.java
@@ -92,7 +92,7 @@ public CppQt5ClientCodegen() {
* Template Location. This is the location which templates will be read from. The generator
* will use the resource stream to attempt to read the templates.
*/
- embeddedTemplateDir = templateDir = "qt5cpp";
+ embeddedTemplateDir = templateDir = "cpp-qt5-client";
// CLI options
addOption(CPP_NAMESPACE, CPP_NAMESPACE_DESC, this.cppNamespace);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
index d8aed6bd8636..8cf9a14af6d6 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestSdkClientCodegen.java
@@ -99,7 +99,7 @@ public CppRestSdkClientCodegen() {
apiTemplateFiles.put("api-header.mustache", ".h");
apiTemplateFiles.put("api-source.mustache", ".cpp");
- embeddedTemplateDir = templateDir = "cpprest";
+ embeddedTemplateDir = templateDir = "cpp-rest-sdk-client";
cliOptions.clear();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java
index 69e0ebe17f68..fb8e289b3af4 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java
@@ -53,7 +53,7 @@ public CppRestbedServerCodegen() {
apiTemplateFiles.put("api-header.mustache", ".h");
apiTemplateFiles.put("api-source.mustache", ".cpp");
- embeddedTemplateDir = templateDir = "restbed";
+ embeddedTemplateDir = templateDir = "cpp-restbed-server";
cliOptions.clear();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java
index 2f2afe39139b..1e3f1a849f1e 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppTizenClientCodegen.java
@@ -44,7 +44,7 @@ public CppTizenClientCodegen() {
modelTemplateFiles.put("model-body.mustache", ".cpp");
apiTemplateFiles.put("api-header.mustache", ".h");
apiTemplateFiles.put("api-body.mustache", ".cpp");
- embeddedTemplateDir = templateDir = "tizen";
+ embeddedTemplateDir = templateDir = "cpp-tizen-client";
modelPackage = "";
defaultIncludes = new HashSet(
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java
index f953acd4e2f8..6e650b9ad56e 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoServerCodegen.java
@@ -110,6 +110,7 @@ public void processOpts() {
*/
supportingFiles.add(new SupportingFile("openapi.mustache", "api", "openapi.yaml"));
supportingFiles.add(new SupportingFile("main.mustache", "", "main.go"));
+ supportingFiles.add(new SupportingFile("Dockerfile.mustache", "", "Dockerfile"));
supportingFiles.add(new SupportingFile("routers.mustache", apiPath, "routers.go"));
supportingFiles.add(new SupportingFile("logger.mustache", apiPath, "logger.go"));
writeOptional(outputFolder, new SupportingFile("README.mustache", apiPath, "README.md"));
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java
index 15c39dd6a42e..198a9bff5466 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavascriptClientCodegen.java
@@ -102,6 +102,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
protected String apiTestPath = "api/";
protected String modelTestPath = "model/";
protected boolean useES6 = false; // default is ES5
+ private String modelPropertyNaming = "camelCase";
public JavascriptClientCodegen() {
super();
@@ -206,6 +207,7 @@ public JavascriptClientCodegen() {
cliOptions.add(new CliOption(USE_ES6,
"use JavaScript ES6 (ECMAScript 6) (beta). Default is ES5.")
.defaultValue(Boolean.FALSE.toString()));
+ cliOptions.add(new CliOption(CodegenConstants.MODEL_PROPERTY_NAMING, CodegenConstants.MODEL_PROPERTY_NAMING_DESC).defaultValue("camelCase"));
}
@Override
@@ -271,6 +273,9 @@ public void processOpts() {
if (additionalProperties.containsKey(EMIT_JS_DOC)) {
setEmitJSDoc(convertPropertyToBooleanAndWriteBack(EMIT_JS_DOC));
}
+ if (additionalProperties.containsKey(CodegenConstants.MODEL_PROPERTY_NAMING)) {
+ setModelPropertyNaming((String) additionalProperties.get(CodegenConstants.MODEL_PROPERTY_NAMING));
+ }
}
@Override
@@ -492,6 +497,22 @@ public String toModelTestFilename(String name) {
return toModelName(name) + ".spec";
}
+ public String getModelPropertyNaming() {
+ return this.modelPropertyNaming;
+ }
+
+ private String getNameUsingModelPropertyNaming(String name) {
+ switch (CodegenConstants.MODEL_PROPERTY_NAMING_TYPE.valueOf(getModelPropertyNaming())) {
+ case original: return name;
+ case camelCase: return camelize(name, true);
+ case PascalCase: return camelize(name);
+ case snake_case: return underscore(name);
+ default: throw new IllegalArgumentException("Invalid model property naming '" +
+ name + "'. Must be 'original', 'camelCase', " +
+ "'PascalCase' or 'snake_case'");
+ }
+ }
+
@Override
public String toVarName(String name) {
// sanitize name
@@ -508,7 +529,7 @@ public String toVarName(String name) {
// camelize (lower first character) the variable name
// pet_id => petId
- name = camelize(name, true);
+ name = getNameUsingModelPropertyNaming(name);
// for reserved word or word starting with number, append _
if (isReservedWord(name) || name.matches("^\\d.*")) {
@@ -613,6 +634,17 @@ public String toDefaultValue(Schema p) {
return null;
}
+ public void setModelPropertyNaming(String naming) {
+ if ("original".equals(naming) || "camelCase".equals(naming) ||
+ "PascalCase".equals(naming) || "snake_case".equals(naming)) {
+ this.modelPropertyNaming = naming;
+ } else {
+ throw new IllegalArgumentException("Invalid model property naming '" +
+ naming + "'. Must be 'original', 'camelCase', " +
+ "'PascalCase' or 'snake_case'");
+ }
+ }
+
@Override
public String toDefaultValueWithParam(String name, Schema p) {
String type = normalizeType(getTypeDeclaration(p));
@@ -954,6 +986,11 @@ public Map postProcessOperations(Map objs) {
}
String jsdocType = getJSDocType(operation);
operation.vendorExtensions.put("x-jsdoc-type", jsdocType);
+
+ // Format the return type correctly
+ if (operation.returnType != null) {
+ operation.vendorExtensions.put("x-return-type", normalizeType(operation.returnType));
+ }
}
}
return objs;
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java
index 54295a751438..5da9953f6364 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinServerCodegen.java
@@ -229,7 +229,7 @@ private void addMustacheLambdas(Map objs) {
.build();
if (objs.containsKey("lambda")) {
- LOGGER.warn("An property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " +
+ LOGGER.warn("A property named 'lambda' already exists. Mustache lambdas renamed from 'lambda' to '_lambda'. " +
"You'll likely need to use a custom template, " +
"see https://github.com/swagger-api/swagger-codegen#modifying-the-client-library-format. "); // TODO: update the URL
objs.put("_lambda", lambdas);
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java
index f21ea2a9bc2c..40ba1c8f2f1d 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/RustServerCodegen.java
@@ -77,6 +77,9 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
public RustServerCodegen() {
super();
+ // Show the generation timestamp by default
+ hideGenerationTimestamp = Boolean.FALSE;
+
// set the output folder here
outputFolder = "generated-code/rust-server";
@@ -529,19 +532,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
List consumes = new ArrayList();
- /* comment out the following logic as there's no consume in operation/global definition
- if (consumes != null) {
- if (!consumes.isEmpty()) {
- // use consumes defined in the operation
- consumes = operation.getConsumes();
- }
- } else if (openAPI != null && openAPI.getConsumes() != null && swagger.getConsumes().size() > 0) {
- // use consumes defined globally
- consumes = swagger.getConsumes();
- LOGGER.debug("No consumes defined in operation. Using global consumes (" + swagger.getConsumes() + ") for " + op.operationId);
- }
- */
-
boolean consumesPlainText = false;
boolean consumesXml = false;
// if "consumes" is defined (per operation or using global definition)
@@ -569,19 +559,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
List produces = new ArrayList(getProducesInfo(openAPI, operation));
- // if "consumes" is defined (per operation or using global definition)
- /*
- if (operation.getProduces() != null) {
- if (operation.getProduces().size() > 0) {
- // use produces defined in the operation
- produces = operation.getProduces();
- }
- } else if (swagger != null && swagger.getProduces() != null && swagger.getProduces().size() > 0) {
- // use produces defined globally
- produces = swagger.getProduces();
- LOGGER.debug("No produces defined in operation. Using global produces (" + swagger.getProduces() + ") for " + op.operationId);
- }
- */
boolean producesXml = false;
boolean producesPlainText = false;
@@ -604,51 +581,6 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
op.hasProduces = true;
}
-
- /* TODO move the following logic to postProcessOperations as there's no body/form parameter in OAS 3.0
- if (op.bodyParam != null) {
- if (paramHasXmlNamespace(op.bodyParam, definitions)) {
- op.bodyParam.vendorExtensions.put("has_namespace", "true");
- }
- for (String key : definitions.keySet()) {
- op.bodyParam.vendorExtensions.put("model_key", key);
- }
-
- // Default to consuming json
- op.bodyParam.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase());
- if (consumesXml) {
- op.bodyParam.vendorExtensions.put("consumesXml", true);
- } else if (consumesPlainText) {
- op.bodyParam.vendorExtensions.put("consumesPlainText", true);
- } else {
- op.bodyParam.vendorExtensions.put("consumesJson", true);
- }
-
- }
- for (CodegenParameter param : op.bodyParams) {
- processParam(param, op);
-
- if (paramHasXmlNamespace(param, definitions)) {
- param.vendorExtensions.put("has_namespace", "true");
- }
-
- param.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase());
-
- // Default to producing json if nothing else is specified
- if (consumesXml) {
- param.vendorExtensions.put("consumesXml", true);
- } else if (consumesPlainText) {
- param.vendorExtensions.put("consumesPlainText", true);
- } else {
- param.vendorExtensions.put("consumesJson", true);
- }
- }
-
- for (CodegenParameter param : op.formParams) {
- processParam(param, op);
- }
- */
-
for (CodegenParameter param : op.headerParams) {
// If a header uses UUIDs, we need to import the UUID package.
if (param.dataType.equals("uuid::Uuid")) {
@@ -714,6 +646,77 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
return op;
}
+ @Override
+ public Map postProcessOperations(Map objs) {
+ Map operations = (Map) objs.get("operations");
+ List operationList = (List) operations.get("operation");
+
+
+ for (CodegenOperation op : operationList) {
+ boolean consumesPlainText = false;
+ boolean consumesXml = false;
+
+ if (op.consumes != null) {
+ for (Map consume : op.consumes) {
+ if (consume.get("mediaType") != null) {
+ String mediaType = consume.get("mediaType");
+
+ if (isMimetypeXml(mediaType)) {
+ additionalProperties.put("usesXml", true);
+ consumesXml = true;
+ } else if (isMimetypePlainText(mediaType)) {
+ consumesPlainText = true;
+ } else if (isMimetypeWwwFormUrlEncoded(mediaType)) {
+ additionalProperties.put("usesUrlEncodedForm", true);
+ }
+ }
+ }
+ }
+
+ if (op.bodyParam != null) {
+ // Default to consuming json
+ op.bodyParam.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase());
+ if (consumesXml) {
+ op.bodyParam.vendorExtensions.put("consumesXml", true);
+ } else if (consumesPlainText) {
+ op.bodyParam.vendorExtensions.put("consumesPlainText", true);
+ } else {
+ op.bodyParam.vendorExtensions.put("consumesJson", true);
+ }
+
+ }
+ for (CodegenParameter param : op.bodyParams) {
+ processParam(param, op);
+
+ param.vendorExtensions.put("uppercase_operation_id", underscore(op.operationId).toUpperCase());
+
+ // Default to producing json if nothing else is specified
+ if (consumesXml) {
+ param.vendorExtensions.put("consumesXml", true);
+ } else if (consumesPlainText) {
+ param.vendorExtensions.put("consumesPlainText", true);
+ } else {
+ param.vendorExtensions.put("consumesJson", true);
+ }
+ }
+
+ for (CodegenParameter param : op.formParams) {
+ processParam(param, op);
+ }
+
+ for (CodegenProperty header : op.responseHeaders) {
+ if (header.dataType.equals("uuid::Uuid")) {
+ additionalProperties.put("apiUsesUuid", true);
+ }
+ header.nameInCamelCase = toModelName(header.baseName);
+ }
+
+ additionalProperties.put("apiHasFile", true);
+ }
+
+ return objs;
+ }
+
@Override
public boolean isDataTypeFile(final String dataType) {
return dataType != null && dataType.equals(typeMapping.get("File").toString());
@@ -726,26 +729,22 @@ public String getTypeDeclaration(Schema p) {
Schema inner = ap.getItems();
String innerType = getTypeDeclaration(inner);
StringBuilder typeDeclaration = new StringBuilder(typeMapping.get("array")).append("<");
- if (!StringUtils.isEmpty(inner.get$ref())) {
- typeDeclaration.append("models::");
- }
typeDeclaration.append(innerType).append(">");
return typeDeclaration.toString();
} else if (ModelUtils.isMapSchema(p)) {
Schema inner = (Schema) p.getAdditionalProperties();
String innerType = getTypeDeclaration(inner);
StringBuilder typeDeclaration = new StringBuilder(typeMapping.get("map")).append("<").append(typeMapping.get("string")).append(", ");
- if (!StringUtils.isEmpty(inner.get$ref())) {
- typeDeclaration.append("models::");
- }
typeDeclaration.append(innerType).append(">");
return typeDeclaration.toString();
} else if (!StringUtils.isEmpty(p.get$ref())) {
String datatype;
try {
datatype = p.get$ref();
- if (datatype.indexOf("#/definitions/") == 0) {
- datatype = toModelName(datatype.substring("#/definitions/".length()));
+
+ if (datatype.indexOf("#/components/schemas/") == 0) {
+ datatype = toModelName(datatype.substring("#/components/schemas/".length()));
+ datatype = "models::" + datatype;
}
} catch (Exception e) {
LOGGER.warn("Error obtaining the datatype from schema (model):" + p + ". Datatype default to Object");
@@ -756,50 +755,41 @@ public String getTypeDeclaration(Schema p) {
} else if (p instanceof FileSchema) {
return typeMapping.get("File").toString();
}
+
return super.getTypeDeclaration(p);
}
@Override
public CodegenParameter fromParameter(Parameter param, Set imports) {
CodegenParameter parameter = super.fromParameter(param, imports);
- /* TODO need ot revise the logic below as there's no body parameter
- if (param instanceof BodyParameter) {
- BodyParameter bp = (BodyParameter) param;
- Model model = bp.getSchema();
- if (model instanceof RefModel) {
- String name = ((RefModel) model).getSimpleRef();
- name = toModelName(name);
- // We need to be able to look up the model in the model definitions later.
- parameter.vendorExtensions.put("uppercase_data_type", name.toUpperCase());
-
- name = "models::" + getTypeDeclaration(name);
- parameter.baseType = name;
- parameter.dataType = name;
-
- String refName = ((RefModel) model).get$ref();
- if (refName.indexOf("#/definitions/") == 0) {
- refName = refName.substring("#/definitions/".length());
- }
- parameter.vendorExtensions.put("refName", refName);
-
- } else if (model instanceof ModelImpl) {
- parameter.vendorExtensions.put("refName", ((ModelImpl) model).getName());
- }
+ if (!parameter.isString && !parameter.isNumeric && !parameter.isByteArray &&
+ !parameter.isBinary && !parameter.isFile && !parameter.isBoolean &&
+ !parameter.isDate && !parameter.isDateTime && !parameter.isUuid &&
+ !parameter.isListContainer && !parameter.isMapContainer &&
+ !languageSpecificPrimitives.contains(parameter.dataType)) {
+
+ String name = "models::" + getTypeDeclaration(parameter.dataType);
+ parameter.dataType = name;
+ parameter.baseType = name;
}
- */
+
return parameter;
}
@Override
- public CodegenProperty fromProperty(String name, Schema p) {
- CodegenProperty property = super.fromProperty(name, p);
-
- /* need to revise the logic below. Is this for alias?
- if (p instanceof RefProperty) {
- property.datatype = "models::" + property.datatype;
+ public void postProcessParameter(CodegenParameter parameter) {
+ // If this parameter is not a primitive type, prefix it with "models::"
+ // to ensure it's namespaced correctly in the Rust code.
+ if (!parameter.isString && !parameter.isNumeric && !parameter.isByteArray &&
+ !parameter.isBinary && !parameter.isFile && !parameter.isBoolean &&
+ !parameter.isDate && !parameter.isDateTime && !parameter.isUuid &&
+ !parameter.isListContainer && !parameter.isMapContainer &&
+ !languageSpecificPrimitives.contains(parameter.dataType)) {
+
+ String name = "models::" + getTypeDeclaration(parameter.dataType);
+ parameter.dataType = name;
+ parameter.baseType = name;
}
- */
- return property;
}
@Override
@@ -1037,6 +1027,24 @@ static String matchingIntType(boolean unsigned, Long inclusiveMin, Long inclusiv
@Override
public Map postProcessModels(Map objs) {
+ List