From 2aa661c164ddeb5d0521ebe2489448ba7b8cbed3 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 4 May 2019 16:24:19 +0800 Subject: [PATCH 1/3] better warning message, better handling of form payload --- .../main/java/org/openapitools/codegen/DefaultCodegen.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 4c45be94b17d..e6aacf8e56f3 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 @@ -1450,7 +1450,8 @@ private static String getPrimitiveType(Schema schema) { } else if (ModelUtils.isDoubleSchema(schema)) { return SchemaTypeUtil.DOUBLE_FORMAT; } else { - LOGGER.warn("Unknown `format` detected for " + schema.getName() + ": " + schema.getFormat()); + LOGGER.warn("Unknown `format` {} detected for type `number`. Defaulting to `number`", schema.getFormat()); + return "number"; } } else if (ModelUtils.isIntegerSchema(schema)) { if (ModelUtils.isLongSchema(schema)) { @@ -2515,8 +2516,8 @@ public CodegenOperation fromOperation(String path, CodegenParameter bodyParam = null; RequestBody requestBody = operation.getRequestBody(); if (requestBody != null) { - if ("application/x-www-form-urlencoded".equalsIgnoreCase(getContentType(requestBody)) || - "multipart/form-data".equalsIgnoreCase(getContentType(requestBody))) { + if ("application/x-www-form-urlencoded".startsWith(getContentType(requestBody).toLowerCase()) || + "multipart/form-data".startsWith(getContentType(requestBody).toLowerCase())) { // process form parameters formParams = fromRequestBodyToFormParameters(requestBody, imports); for (CodegenParameter cp : formParams) { From 11af437c4ea71d096712b5dbc6937c522b8c505d Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 4 May 2019 16:33:43 +0800 Subject: [PATCH 2/3] fix form data detection --- .../java/org/openapitools/codegen/DefaultCodegen.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 e6aacf8e56f3..04a8746cd1dd 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 @@ -2516,8 +2516,8 @@ public CodegenOperation fromOperation(String path, CodegenParameter bodyParam = null; RequestBody requestBody = operation.getRequestBody(); if (requestBody != null) { - if ("application/x-www-form-urlencoded".startsWith(getContentType(requestBody).toLowerCase()) || - "multipart/form-data".startsWith(getContentType(requestBody).toLowerCase())) { + if (getContentType(requestBody).toLowerCase(Locale.ROOT).startsWith("application/x-www-form-urlencoded") || + getContentType(requestBody).toLowerCase(Locale.ROOT).startsWith("multipart/form-data")) { // process form parameters formParams = fromRequestBodyToFormParameters(requestBody, imports); for (CodegenParameter cp : formParams) { @@ -4195,7 +4195,8 @@ public void writePropertyBack(String propertyKey, boolean value) { protected String getContentType(RequestBody requestBody) { if (requestBody == null || requestBody.getContent() == null || requestBody.getContent().isEmpty()) { - return null; + LOGGER.warn("Cannot determine the content type. Default to UNKNOWN_CONTENT_TYPE."); + return "UNKNOWN_CONTENT_TYPE"; } return new ArrayList<>(requestBody.getContent().keySet()).get(0); } @@ -4276,7 +4277,9 @@ public boolean hasFormParameter(OpenAPI openAPI, Operation operation) { } for (String consume : consumesInfo) { - if ("application/x-www-form-urlencoded".equalsIgnoreCase(consume) || "multipart/form-data".equalsIgnoreCase(consume)) { + if (consume != null && + consume.toLowerCase(Locale.ROOT).startsWith("application/x-www-form-urlencoded") || + consume.toLowerCase(Locale.ROOT).startsWith("multipart/form-data")) { return true; } } From 80ba18fa3528726c17e5140ecc39f2eb576adc41 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 4 May 2019 16:34:20 +0800 Subject: [PATCH 3/3] better format --- .../java/org/openapitools/codegen/DefaultCodegen.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 04a8746cd1dd..0d608768561b 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 @@ -1286,6 +1286,7 @@ public String toDefaultValue(Schema schema) { /** * Return property value depending on property type. + * * @param schema property type * @return property value */ @@ -1892,7 +1893,7 @@ public String getterAndSetterCapitalize(String name) { */ public CodegenProperty fromProperty(String name, Schema p) { if (p == null) { - LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name); + LOGGER.error("Undefined property/schema for `{}`. Default to type:string.", name); return null; } LOGGER.debug("debugging fromProperty for " + name + " : " + p); @@ -2042,7 +2043,7 @@ public CodegenProperty fromProperty(String name, Schema p) { if (innerSchema == null) { LOGGER.error("Undefined array inner type for `{}`. Default to String.", p.getName()); innerSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to undefined type"); - ((ArraySchema)p).setItems(innerSchema); + ((ArraySchema) p).setItems(innerSchema); } } else if (ModelUtils.isMapSchema(p)) { Schema innerSchema = ModelUtils.unaliasSchema(this.openAPI, ModelUtils.getAdditionalProperties(p)); @@ -2124,7 +2125,7 @@ public CodegenProperty fromProperty(String name, Schema p) { if (innerSchema == null) { LOGGER.error("Undefined array inner type for `{}`. Default to String.", p.getName()); innerSchema = new StringSchema().description("//TODO automatically added by openapi-generator due to undefined type"); - ((ArraySchema)p).setItems(innerSchema); + ((ArraySchema) p).setItems(innerSchema); } CodegenProperty cp = fromProperty(itemName, innerSchema); updatePropertyForArray(property, cp); @@ -4853,7 +4854,7 @@ public List fromServerVariables(Map