forked from loafle/openapi-generator-original
[Core] Does not recognize the type "ByteArray" as "String" (#10749)
* Does not recognize the type "ByteArray" as "String" * Change in default codegen * Removes redundant updateRequestBodyForString * Adds testByteArrayTypeInSchemas Co-authored-by: Justin Black <justin.a.black@gmail.com>
This commit is contained in:
parent
7559b53370
commit
fe90d9c426
@ -3336,6 +3336,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
|
|
||||||
protected void updatePropertyForString(CodegenProperty property, Schema p) {
|
protected void updatePropertyForString(CodegenProperty property, Schema p) {
|
||||||
if (ModelUtils.isByteArraySchema(p)) {
|
if (ModelUtils.isByteArraySchema(p)) {
|
||||||
|
property.setIsString(false);
|
||||||
property.isByteArray = true;
|
property.isByteArray = true;
|
||||||
} else if (ModelUtils.isBinarySchema(p)) {
|
} else if (ModelUtils.isBinarySchema(p)) {
|
||||||
property.isBinary = true;
|
property.isBinary = true;
|
||||||
@ -4277,6 +4278,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
} else if (ModelUtils.isUUIDSchema(responseSchema)) {
|
} else if (ModelUtils.isUUIDSchema(responseSchema)) {
|
||||||
r.isUuid = true;
|
r.isUuid = true;
|
||||||
} else if (ModelUtils.isByteArraySchema(responseSchema)) {
|
} else if (ModelUtils.isByteArraySchema(responseSchema)) {
|
||||||
|
r.setIsString(false);
|
||||||
r.isByteArray = true;
|
r.isByteArray = true;
|
||||||
} else if (ModelUtils.isBinarySchema(responseSchema)) {
|
} else if (ModelUtils.isBinarySchema(responseSchema)) {
|
||||||
r.isFile = true; // file = binary in OAS3
|
r.isFile = true; // file = binary in OAS3
|
||||||
@ -6529,6 +6531,7 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
protected void updateRequestBodyForString(CodegenParameter codegenParameter, Schema schema, Set<String> imports, String bodyParameterName) {
|
protected void updateRequestBodyForString(CodegenParameter codegenParameter, Schema schema, Set<String> imports, String bodyParameterName) {
|
||||||
updateRequestBodyForPrimitiveType(codegenParameter, schema, bodyParameterName, imports);
|
updateRequestBodyForPrimitiveType(codegenParameter, schema, bodyParameterName, imports);
|
||||||
if (ModelUtils.isByteArraySchema(schema)) {
|
if (ModelUtils.isByteArraySchema(schema)) {
|
||||||
|
codegenParameter.setIsString(false);
|
||||||
codegenParameter.isByteArray = true;
|
codegenParameter.isByteArray = true;
|
||||||
} else if (ModelUtils.isBinarySchema(schema)) {
|
} else if (ModelUtils.isBinarySchema(schema)) {
|
||||||
codegenParameter.isBinary = true;
|
codegenParameter.isBinary = true;
|
||||||
|
@ -1686,38 +1686,6 @@ public class RustServerCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void updateRequestBodyForString(CodegenParameter codegenParameter, Schema schema, Set<String> imports, String bodyParameterName) {
|
|
||||||
/**
|
|
||||||
* we have a custom version of this function to set isString to false for isByteArray
|
|
||||||
*/
|
|
||||||
updateRequestBodyForPrimitiveType(codegenParameter, schema, bodyParameterName, imports);
|
|
||||||
if (ModelUtils.isByteArraySchema(schema)) {
|
|
||||||
codegenParameter.isByteArray = true;
|
|
||||||
// custom code
|
|
||||||
codegenParameter.setIsString(false);
|
|
||||||
} else if (ModelUtils.isBinarySchema(schema)) {
|
|
||||||
codegenParameter.isBinary = true;
|
|
||||||
codegenParameter.isFile = true; // file = binary in OAS3
|
|
||||||
} else if (ModelUtils.isUUIDSchema(schema)) {
|
|
||||||
codegenParameter.isUuid = true;
|
|
||||||
} else if (ModelUtils.isURISchema(schema)) {
|
|
||||||
codegenParameter.isUri = true;
|
|
||||||
} else if (ModelUtils.isEmailSchema(schema)) {
|
|
||||||
codegenParameter.isEmail = true;
|
|
||||||
} else if (ModelUtils.isDateSchema(schema)) { // date format
|
|
||||||
codegenParameter.setIsString(false); // for backward compatibility with 2.x
|
|
||||||
codegenParameter.isDate = true;
|
|
||||||
} else if (ModelUtils.isDateTimeSchema(schema)) { // date-time format
|
|
||||||
codegenParameter.setIsString(false); // for backward compatibility with 2.x
|
|
||||||
codegenParameter.isDateTime = true;
|
|
||||||
} else if (ModelUtils.isDecimalSchema(schema)) { // type: string, format: number
|
|
||||||
codegenParameter.isDecimal = true;
|
|
||||||
codegenParameter.setIsString(false);
|
|
||||||
}
|
|
||||||
codegenParameter.pattern = toRegularExpression(schema.getPattern());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateParameterForString(CodegenParameter codegenParameter, Schema parameterSchema){
|
protected void updateParameterForString(CodegenParameter codegenParameter, Schema parameterSchema){
|
||||||
/**
|
/**
|
||||||
|
@ -3846,4 +3846,29 @@ public class DefaultCodegenTest {
|
|||||||
cp = co.queryParams.get(0);
|
cp = co.queryParams.get(0);
|
||||||
assertTrue(cp.getIsAnyType());
|
assertTrue(cp.getIsAnyType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testByteArrayTypeInSchemas() {
|
||||||
|
DefaultCodegen codegen = new DefaultCodegen();
|
||||||
|
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_10725.yaml");
|
||||||
|
codegen.setOpenAPI(openAPI);
|
||||||
|
String path;
|
||||||
|
CodegenOperation co;
|
||||||
|
CodegenParameter cp;
|
||||||
|
|
||||||
|
path = "/TxRxByteArray";
|
||||||
|
co = codegen.fromOperation(path, "POST", openAPI.getPaths().get(path).getPost(), null);
|
||||||
|
cp = co.bodyParam;
|
||||||
|
assertTrue(cp.isByteArray);
|
||||||
|
assertFalse(cp.getIsString());
|
||||||
|
CodegenResponse cr = co.responses.get(0);
|
||||||
|
assertTrue(cr.isByteArray);
|
||||||
|
assertFalse(cr.getIsString());
|
||||||
|
|
||||||
|
String modelName = "ObjectContainingByteArray";
|
||||||
|
CodegenModel m = codegen.fromModel(modelName, openAPI.getComponents().getSchemas().get(modelName));
|
||||||
|
CodegenProperty pr = m.vars.get(0);
|
||||||
|
assertTrue(pr.isByteArray);
|
||||||
|
assertFalse(pr.getIsString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: OpenAPI Petstore
|
||||||
|
description: "byteArray schema isX type checks"
|
||||||
|
license:
|
||||||
|
name: Apache-2.0
|
||||||
|
url: https://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
version: 1.0.0
|
||||||
|
servers:
|
||||||
|
- url: http://petstore.swagger.io:80/v2
|
||||||
|
tags: []
|
||||||
|
paths:
|
||||||
|
/TxRxByteArray:
|
||||||
|
post:
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: byte
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ComposedObject
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: byte
|
||||||
|
/RxRefObjectContainingByteArray:
|
||||||
|
get:
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ComposedNumber
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/ObjectContainingByteArray'
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
ObjectContainingByteArray:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
byteArray:
|
||||||
|
type: string
|
||||||
|
format: byte
|
Loading…
x
Reference in New Issue
Block a user