From 2cc46960fc15bf041497eae88ab9ddafd2ffc4e3 Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Thu, 15 Sep 2022 20:23:10 -0700 Subject: [PATCH 1/5] Updates codegenmodel --- .../org/openapitools/codegen/CodegenModel.java | 18 +++++++++++++++--- .../IJsonSchemaValidationProperties.java | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index c91f0593045..a8cb8e76577 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -115,6 +115,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { private boolean isBooleanSchemaTrue; private boolean isBooleanSchemaFalse; private String format; + private LinkedHashMap<String, List<String>> dependentRequired; /** * The type of the value for the additionalProperties keyword in the OAS document. @@ -180,6 +181,17 @@ public class CodegenModel implements IJsonSchemaValidationProperties { this.additionalPropertiesType = additionalPropertiesType; } + @Override + public LinkedHashMap<String, List<String>> getDependentRequired() { + + return dependentRequired; + } + + @Override + public void setDependentRequired(LinkedHashMap<String, List<String>> dependentRequired) { + this.dependentRequired = dependentRequired; + } + @Override public boolean getIsBooleanSchemaTrue() { return isBooleanSchemaTrue; @@ -892,8 +904,6 @@ public class CodegenModel implements IJsonSchemaValidationProperties { return hasDiscriminatorWithNonEmptyMapping; } - ; - @Override public void setHasDiscriminatorWithNonEmptyMapping(boolean hasDiscriminatorWithNonEmptyMapping) { this.hasDiscriminatorWithNonEmptyMapping = hasDiscriminatorWithNonEmptyMapping; @@ -998,6 +1008,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getUniqueItems() == that.getUniqueItems() && getExclusiveMinimum() == that.getExclusiveMinimum() && getExclusiveMaximum() == that.getExclusiveMaximum() && + Objects.equals(dependentRequired, that.getDependentRequired()) && Objects.equals(format, that.getFormat()) && Objects.equals(uniqueItemsBoolean, that.getUniqueItemsBoolean()) && Objects.equals(ref, that.getRef()) && @@ -1076,7 +1087,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { getAdditionalPropertiesIsAnyType(), hasDiscriminatorWithNonEmptyMapping, isAnyType, getComposedSchemas(), hasMultipleTypes, isDecimal, isUuid, requiredVarsMap, ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties, isBooleanSchemaTrue, isBooleanSchemaFalse, - format); + format, dependentRequired); } @Override @@ -1180,6 +1191,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties { sb.append(", isBooleanSchemaTrue=").append(isBooleanSchemaTrue); sb.append(", isBooleanSchemaFalse=").append(isBooleanSchemaFalse); sb.append(", format=").append(format); + sb.append(", dependentRequired=").append(dependentRequired); sb.append('}'); return sb.toString(); } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java index 80550ee8852..e34cadf97e1 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/IJsonSchemaValidationProperties.java @@ -3,6 +3,7 @@ package org.openapitools.codegen; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -14,6 +15,10 @@ import org.openapitools.codegen.meta.features.SchemaSupportFeature; import org.openapitools.codegen.utils.ModelUtils; public interface IJsonSchemaValidationProperties { + LinkedHashMap<String, List<String>> getDependentRequired(); + + void setDependentRequired(LinkedHashMap<String, List<String>> dependentRequired); + String getPattern(); void setPattern(String pattern); -- GitLab From bb4d2116a8774880809d6c56dd2adaf2935dd1f6 Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Thu, 15 Sep 2022 21:11:10 -0700 Subject: [PATCH 2/5] Updates codegenProperty --- .../org/openapitools/codegen/CodegenModel.java | 1 - .../openapitools/codegen/CodegenProperty.java | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java index a8cb8e76577..ad159ac5313 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java @@ -183,7 +183,6 @@ public class CodegenModel implements IJsonSchemaValidationProperties { @Override public LinkedHashMap<String, List<String>> getDependentRequired() { - return dependentRequired; } diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java index f285544f24f..7ca002f8a67 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenProperty.java @@ -201,6 +201,17 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti private boolean isBooleanSchemaTrue; private boolean isBooleanSchemaFalse; private String format; + private LinkedHashMap<String, List<String>> dependentRequired; + + @Override + public LinkedHashMap<String, List<String>> getDependentRequired() { + return dependentRequired; + } + + @Override + public void setDependentRequired(LinkedHashMap<String, List<String>> dependentRequired) { + this.dependentRequired = dependentRequired; + } @Override public void setFormat(String format) { this.format = format; } @@ -752,6 +763,9 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti if (this.format != null) { cp.setFormat(this.format); } + if (this.dependentRequired != null) { + cp.setDependentRequired(this.dependentRequired); + } return cp; } catch (CloneNotSupportedException e) { @@ -1051,6 +1065,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti sb.append(", isBooleanSchemaTrue=").append(isBooleanSchemaTrue); sb.append(", isBooleanSchemaFalse=").append(isBooleanSchemaFalse); sb.append(", format=").append(format); + sb.append(", dependentRequired=").append(dependentRequired); sb.append('}'); return sb.toString(); } @@ -1112,6 +1127,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti getAdditionalPropertiesIsAnyType() == that.getAdditionalPropertiesIsAnyType() && getHasVars() == that.getHasVars() && getHasRequired() == that.getHasRequired() && + Objects.equals(dependentRequired, that.getDependentRequired()) && Objects.equals(format, that.getFormat()) && Objects.equals(uniqueItemsBoolean, that.getUniqueItemsBoolean()) && Objects.equals(ref, that.getRef()) && @@ -1181,6 +1197,6 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti xmlNamespace, isXmlWrapped, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, requiredVarsMap, ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties, isBooleanSchemaTrue, isBooleanSchemaFalse, - format); + format, dependentRequired); } } -- GitLab From 2b640e8373e9108bc8918589a4651a5161f5d7c9 Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Thu, 15 Sep 2022 21:30:45 -0700 Subject: [PATCH 3/5] Updates codegenParameter --- .../org/openapitools/codegen/CodegenParameter.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java index fb7da26fc3b..9e02dc706c7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenParameter.java @@ -440,6 +440,16 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { return sb.toString(); } + // use schema.getDependentRequired or content.mediaType.schema.getDependentRequired instead of this + @Override + public LinkedHashMap<String, List<String>> getDependentRequired() { + return null; + } + + // use schema.setDependentRequired or content.mediaType.schema.setDependentRequired instead of this + @Override + public void setDependentRequired(LinkedHashMap<String, List<String>> dependentRequired) {} + // use schema.getIsBooleanSchemaTrue or content.mediaType.schema.getIsBooleanSchemaTrue instead of this @Override public boolean getIsBooleanSchemaTrue() { -- GitLab From 2861519663cb82c62cc7f56911f816d3b76f2e85 Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Thu, 15 Sep 2022 21:33:51 -0700 Subject: [PATCH 4/5] Updates codegenResponse --- .../java/org/openapitools/codegen/CodegenResponse.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java index 2358faf3c7f..38a474eee3c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenResponse.java @@ -189,6 +189,16 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { } + // use content.mediaType.schema.getDependentRequired instead of this + @Override + public LinkedHashMap<String, List<String>> getDependentRequired() { + return null; + } + + // use content.mediaType.schema.setDependentRequired instead of this + @Override + public void setDependentRequired(LinkedHashMap<String, List<String>> dependentRequired) {} + // use content.mediaType.schema.getIsBooleanSchemaTrue instead of this @Override public boolean getIsBooleanSchemaTrue() { -- GitLab From 17e5c90032e07f56460779ec41ebf6847bc2f84c Mon Sep 17 00:00:00 2001 From: Justin Black <justin.a.black@gmail.com> Date: Thu, 15 Sep 2022 22:02:37 -0700 Subject: [PATCH 5/5] Samples regenerated --- .../java/org/openapitools/handler/PathHandlerInterface.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java index cdfc0948492..dad00413f44 100644 --- a/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java +++ b/samples/server/petstore/java-undertow/src/main/java/org/openapitools/handler/PathHandlerInterface.java @@ -539,10 +539,10 @@ public interface PathHandlerInterface { * <p><b>Response headers</b>: [CodegenProperty{openApiType='integer', baseName='X-Rate-Limit', complexType='null', getter='getxRateLimit', setter='setxRateLimit', description='calls per hour allowed by the user', dataType='Integer', datatypeWithEnum='Integer', dataFormat='int32', name='xRateLimit', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Rate-Limit;', baseType='Integer', containerType='null', title='null', unescapedDescription='calls per hour allowed by the user', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "integer", "format" : "int32" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isInnerEnum=false, isAnyType=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, uniqueItemsBoolean=null, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false, requiredVarsMap=null, ref=null, schemaIsFromAdditionalProperties=false, isBooleanSchemaTrue=false, isBooleanSchemaFalse=false, format=int32}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=true, isModel=false, isContainer=false, isString=false, isNumeric=true, isInteger=true, isShort=true, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=false, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isInnerEnum=false, isAnyType=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XRateLimit', nameInSnakeCase='X_RATE_LIMIT', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, uniqueItemsBoolean=null, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false, requiredVarsMap=null, ref=null, schemaIsFromAdditionalProperties=false, isBooleanSchemaTrue=false, isBooleanSchemaFalse=false, format=int32, dependentRequired=null}, CodegenProperty{openApiType='string', baseName='X-Expires-After', complexType='Date', getter='getxExpiresAfter', setter='setxExpiresAfter', description='date in UTC when token expires', dataType='Date', datatypeWithEnum='Date', dataFormat='date-time', name='xExpiresAfter', min='null', max='null', defaultValue='null', defaultValueWithParam=' = data.X-Expires-After;', baseType='Date', containerType='null', title='null', unescapedDescription='date in UTC when token expires', maxLength=null, minLength=null, pattern='null', example='null', jsonSchema='{ "type" : "string", "format" : "date-time" -}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isInnerEnum=false, isAnyType=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, uniqueItemsBoolean=null, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false, requiredVarsMap=null, ref=null, schemaIsFromAdditionalProperties=false, isBooleanSchemaTrue=false, isBooleanSchemaFalse=false, format=date-time}]</p> +}', minimum='null', maximum='null', exclusiveMinimum=false, exclusiveMaximum=false, required=false, deprecated=false, hasMoreNonReadOnly=false, isPrimitiveType=false, isModel=false, isContainer=false, isString=false, isNumeric=false, isInteger=false, isShort=false, isLong=false, isUnboundedInteger=false, isNumber=false, isFloat=false, isDouble=false, isDecimal=false, isByteArray=false, isBinary=false, isFile=false, isBoolean=false, isDate=false, isDateTime=true, isUuid=false, isUri=false, isEmail=false, isFreeFormObject=false, isArray=false, isMap=false, isEnum=false, isInnerEnum=false, isAnyType=false, isReadOnly=false, isWriteOnly=false, isNullable=false, isSelfReference=false, isCircularReference=false, isDiscriminator=false, _enum=null, allowableValues=null, items=null, additionalProperties=null, vars=[], requiredVars=[], mostInnerItems=null, vendorExtensions={}, hasValidation=false, isInherited=false, discriminatorValue='null', nameInCamelCase='XExpiresAfter', nameInSnakeCase='X_EXPIRES_AFTER', enumName='null', maxItems=null, minItems=null, maxProperties=null, minProperties=null, uniqueItems=false, uniqueItemsBoolean=null, multipleOf=null, isXmlAttribute=false, xmlPrefix='null', xmlName='null', xmlNamespace='null', isXmlWrapped=false, isNull=false, getAdditionalPropertiesIsAnyType=false, getHasVars=false, getHasRequired=false, getHasDiscriminatorWithNonEmptyMapping=false, composedSchemas=null, hasMultipleTypes=false, requiredVarsMap=null, ref=null, schemaIsFromAdditionalProperties=false, isBooleanSchemaTrue=false, isBooleanSchemaFalse=false, format=date-time, dependentRequired=null}]</p> * * <p><b>Produces</b>: [{mediaType=application/xml}, {mediaType=application/json}]</p> * <p><b>Returns</b>: {@link String}</p> -- GitLab