forked from loafle/openapi-generator-original
Adds isDate to CodegenModel, adds test, adds isDate getter and setter to IJsonSchemaValidationProperties (#7652)
This commit is contained in:
parent
b208a311db
commit
ee2a7352a1
@ -64,7 +64,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
|
|||||||
public String defaultValue;
|
public String defaultValue;
|
||||||
public String arrayModelType;
|
public String arrayModelType;
|
||||||
public boolean isAlias; // Is this effectively an alias of another simple type
|
public boolean isAlias; // Is this effectively an alias of another simple type
|
||||||
public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble;
|
public boolean isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble, isDate;
|
||||||
public List<CodegenProperty> vars = new ArrayList<CodegenProperty>(); // all properties (without parent's properties)
|
public List<CodegenProperty> vars = new ArrayList<CodegenProperty>(); // all properties (without parent's properties)
|
||||||
public List<CodegenProperty> allVars = new ArrayList<CodegenProperty>(); // all properties (with parent's properties)
|
public List<CodegenProperty> allVars = new ArrayList<CodegenProperty>(); // all properties (with parent's properties)
|
||||||
public List<CodegenProperty> requiredVars = new ArrayList<CodegenProperty>(); // a list of required properties
|
public List<CodegenProperty> requiredVars = new ArrayList<CodegenProperty>(); // a list of required properties
|
||||||
@ -570,6 +570,14 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
|
|||||||
this.isModel = isModel;
|
this.isModel = isModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getIsDate() { return isDate; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIsDate(boolean isDate) {
|
||||||
|
this.isDate = isDate;
|
||||||
|
}
|
||||||
|
|
||||||
// indicates if the model component has validation on the root level schema
|
// indicates if the model component has validation on the root level schema
|
||||||
// this will be true when minItems or minProperties is set
|
// this will be true when minItems or minProperties is set
|
||||||
public boolean hasValidation() {
|
public boolean hasValidation() {
|
||||||
@ -670,6 +678,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
|
|||||||
isNumeric == that.isNumeric &&
|
isNumeric == that.isNumeric &&
|
||||||
isFloat == that.isFloat &&
|
isFloat == that.isFloat &&
|
||||||
isDouble == that.isDouble &&
|
isDouble == that.isDouble &&
|
||||||
|
isDate == that.isDate &&
|
||||||
hasVars == that.hasVars &&
|
hasVars == that.hasVars &&
|
||||||
emptyVars == that.emptyVars &&
|
emptyVars == that.emptyVars &&
|
||||||
hasMoreModels == that.hasMoreModels &&
|
hasMoreModels == that.hasMoreModels &&
|
||||||
@ -746,6 +755,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
|
|||||||
getDescription(), getClassVarName(), getModelJson(), getDataType(), getXmlPrefix(), getXmlNamespace(),
|
getDescription(), getClassVarName(), getModelJson(), getDataType(), getXmlPrefix(), getXmlNamespace(),
|
||||||
getXmlName(), getClassFilename(), getUnescapedDescription(), getDiscriminator(), getDefaultValue(),
|
getXmlName(), getClassFilename(), getUnescapedDescription(), getDiscriminator(), getDefaultValue(),
|
||||||
getArrayModelType(), isAlias, isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble,
|
getArrayModelType(), isAlias, isString, isInteger, isLong, isNumber, isNumeric, isFloat, isDouble,
|
||||||
|
isDate,
|
||||||
getVars(), getAllVars(), getRequiredVars(), getOptionalVars(), getReadOnlyVars(), getReadWriteVars(),
|
getVars(), getAllVars(), getRequiredVars(), getOptionalVars(), getReadOnlyVars(), getReadWriteVars(),
|
||||||
getParentVars(), getAllowableValues(), getMandatory(), getAllMandatory(), getImports(), hasVars,
|
getParentVars(), getAllowableValues(), getMandatory(), getAllMandatory(), getImports(), hasVars,
|
||||||
isEmptyVars(), hasMoreModels, hasEnums, isEnum, isNullable, hasRequired, hasOptional, isArrayModel,
|
isEmptyVars(), hasMoreModels, hasEnums, isEnum, isNullable, hasRequired, hasOptional, isArrayModel,
|
||||||
@ -791,6 +801,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
|
|||||||
sb.append(", isNumeric=").append(isNumeric);
|
sb.append(", isNumeric=").append(isNumeric);
|
||||||
sb.append(", isFloat=").append(isFloat);
|
sb.append(", isFloat=").append(isFloat);
|
||||||
sb.append(", isDouble=").append(isDouble);
|
sb.append(", isDouble=").append(isDouble);
|
||||||
|
sb.append(", isDate=").append(isDate);
|
||||||
sb.append(", vars=").append(vars);
|
sb.append(", vars=").append(vars);
|
||||||
sb.append(", allVars=").append(allVars);
|
sb.append(", allVars=").append(allVars);
|
||||||
sb.append(", requiredVars=").append(requiredVars);
|
sb.append(", requiredVars=").append(requiredVars);
|
||||||
|
@ -495,5 +495,13 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
|
|||||||
public void setIsModel(boolean isModel) {
|
public void setIsModel(boolean isModel) {
|
||||||
this.isModel = isModel;
|
this.isModel = isModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getIsDate() { return isDate; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIsDate(boolean isDate) {
|
||||||
|
this.isDate = isDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,6 +469,14 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti
|
|||||||
this.isModel = isModel;
|
this.isModel = isModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getIsDate() { return isDate; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIsDate(boolean isDate) {
|
||||||
|
this.isDate = isDate;
|
||||||
|
}
|
||||||
|
|
||||||
public Map<String, Object> getVendorExtensions() {
|
public Map<String, Object> getVendorExtensions() {
|
||||||
return vendorExtensions;
|
return vendorExtensions;
|
||||||
}
|
}
|
||||||
|
@ -290,6 +290,14 @@ public class CodegenResponse implements IJsonSchemaValidationProperties {
|
|||||||
this.isModel = isModel;
|
this.isModel = isModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean getIsDate() { return isDate; }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setIsDate(boolean isDate) {
|
||||||
|
this.isDate = isDate;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("CodegenResponse{");
|
final StringBuilder sb = new StringBuilder("CodegenResponse{");
|
||||||
|
@ -2520,6 +2520,11 @@ public class DefaultCodegen implements CodegenConfig {
|
|||||||
} else { // int32 format
|
} else { // int32 format
|
||||||
m.isInteger = Boolean.TRUE;
|
m.isInteger = Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
} else if (ModelUtils.isDateSchema(schema)) {
|
||||||
|
// NOTE: Date schemas as CodegenModel is a rare use case and may be removed at a later date.
|
||||||
|
// Sync of properties is done for consistency with other data types like CodegenParameter/CodegenProperty.
|
||||||
|
ModelUtils.syncValidationProperties(schema, m);
|
||||||
|
m.isDate = Boolean.TRUE;
|
||||||
} else if (ModelUtils.isStringSchema(schema)) {
|
} else if (ModelUtils.isStringSchema(schema)) {
|
||||||
// NOTE: String schemas as CodegenModel is a rare use case and may be removed at a later date.
|
// NOTE: String schemas as CodegenModel is a rare use case and may be removed at a later date.
|
||||||
// Sync of properties is done for consistency with other data types like CodegenParameter/CodegenProperty.
|
// Sync of properties is done for consistency with other data types like CodegenParameter/CodegenProperty.
|
||||||
|
@ -60,4 +60,8 @@ public interface IJsonSchemaValidationProperties {
|
|||||||
boolean getIsModel();
|
boolean getIsModel();
|
||||||
|
|
||||||
void setIsModel(boolean isModel);
|
void setIsModel(boolean isModel);
|
||||||
|
|
||||||
|
boolean getIsDate();
|
||||||
|
|
||||||
|
void setIsDate(boolean isDate);
|
||||||
}
|
}
|
||||||
|
@ -2341,4 +2341,50 @@ public class DefaultCodegenTest {
|
|||||||
assertEquals(co.responses.get(0).getItems().getMaximum(), "7");
|
assertEquals(co.responses.get(0).getItems().getMaximum(), "7");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIsXPresence() {
|
||||||
|
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_7651.yaml");
|
||||||
|
final DefaultCodegen codegen = new DefaultCodegen();
|
||||||
|
codegen.setOpenAPI(openAPI);
|
||||||
|
|
||||||
|
String modelName;
|
||||||
|
Schema sc;
|
||||||
|
CodegenModel cm;
|
||||||
|
|
||||||
|
modelName = "DateWithValidation";
|
||||||
|
sc = openAPI.getComponents().getSchemas().get(modelName);
|
||||||
|
cm = codegen.fromModel(modelName, sc);
|
||||||
|
assertEquals(cm.isString, false);
|
||||||
|
assertEquals(cm.isDate, true);
|
||||||
|
|
||||||
|
modelName = "ObjectWithDateWithValidation";
|
||||||
|
sc = openAPI.getComponents().getSchemas().get(modelName);
|
||||||
|
cm = codegen.fromModel(modelName, sc);
|
||||||
|
assertEquals(cm.getVars().get(0).isString, false);
|
||||||
|
assertEquals(cm.getVars().get(0).isDate, true);
|
||||||
|
|
||||||
|
String path;
|
||||||
|
Operation operation;
|
||||||
|
CodegenOperation co;
|
||||||
|
|
||||||
|
path = "/ref_date_with_validation/{date}";
|
||||||
|
operation = openAPI.getPaths().get(path).getPost();
|
||||||
|
co = codegen.fromOperation(path, "POST", operation, null);
|
||||||
|
assertEquals(co.pathParams.get(0).isString, false);
|
||||||
|
assertEquals(co.pathParams.get(0).isDate, true);
|
||||||
|
assertEquals(co.bodyParams.get(0).isString, false);
|
||||||
|
assertEquals(co.bodyParams.get(0).isDate, true);
|
||||||
|
assertEquals(co.responses.get(0).isString, false);
|
||||||
|
assertEquals(co.responses.get(0).isDate, true);
|
||||||
|
|
||||||
|
path = "/date_with_validation/{date}";
|
||||||
|
operation = openAPI.getPaths().get(path).getPost();
|
||||||
|
co = codegen.fromOperation(path, "POST", operation, null);
|
||||||
|
assertEquals(co.pathParams.get(0).isString, false);
|
||||||
|
assertEquals(co.pathParams.get(0).isDate, true);
|
||||||
|
assertEquals(co.bodyParams.get(0).isString, false);
|
||||||
|
assertEquals(co.bodyParams.get(0).isDate, true);
|
||||||
|
assertEquals(co.responses.get(0).isString, false);
|
||||||
|
assertEquals(co.responses.get(0).isDate, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,82 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: OpenAPI Petstore
|
||||||
|
description: "sample spec"
|
||||||
|
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:
|
||||||
|
- name: isX
|
||||||
|
description: an api that ensures that isX properties are present on Schema classes
|
||||||
|
paths:
|
||||||
|
/ref_date_with_validation/{date}:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- isX
|
||||||
|
operationId: refDateWithValidation
|
||||||
|
parameters:
|
||||||
|
- name: date
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/DateWithValidation'
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/DateWithValidation'
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: success
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/DateWithValidation'
|
||||||
|
/date_with_validation/{date}:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- isX
|
||||||
|
operationId: dateWithValidation
|
||||||
|
parameters:
|
||||||
|
- name: date
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
pattern: '^2020.*'
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
pattern: '^2020.*'
|
||||||
|
required: true
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: success
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
pattern: '^2020.*'
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
DateWithValidation:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
pattern: '^2020.*'
|
||||||
|
ObjectWithDateWithValidation:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
dateWithValidation:
|
||||||
|
type: string
|
||||||
|
format: date
|
||||||
|
pattern: '^2020.*'
|
||||||
|
securitySchemes: {}
|
Loading…
x
Reference in New Issue
Block a user