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 ca8ac29eb311a169628aa968022b21c14056ed30..a11f5576642a0a3e6d1a2735644e58c06c823680 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 @@ -35,7 +35,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { public String example; // example value (x-example) public String jsonSchema; public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, - isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isShort, isUnboundedInteger; + isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isAnyType, isShort, isUnboundedInteger; public boolean isArray, isMap; public boolean isFile; public boolean isEnum; @@ -229,6 +229,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { output.isUuid = this.isUuid; output.isUri = this.isUri; output.isEmail = this.isEmail; + output.isPassword = this.isPassword; output.isFreeFormObject = this.isFreeFormObject; output.isAnyType = this.isAnyType; output.isArray = this.isArray; @@ -244,7 +245,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { @Override public int hashCode() { - return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumDefaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, schema, content, requiredVarsMap, ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties); + return Objects.hash(isFormParam, isQueryParam, isPathParam, isHeaderParam, isCookieParam, isBodyParam, isContainer, isCollectionFormatMulti, isPrimitiveType, isModel, isExplode, baseName, paramName, dataType, datatypeWithEnum, dataFormat, collectionFormat, description, unescapedDescription, baseType, defaultValue, enumDefaultValue, enumName, style, isDeepObject, isAllowEmptyValue, example, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation, getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(), getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(), getPattern(), getMaxItems(), getMinItems(), getUniqueItems(), contentType, multipleOf, isNull, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, schema, content, requiredVarsMap, ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties); } @Override @@ -281,6 +282,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { isUuid == that.isUuid && isUri == that.isUri && isEmail == that.isEmail && + isPassword == that.isPassword && isFreeFormObject == that.isFreeFormObject && isAnyType == that.isAnyType && isArray == that.isArray && @@ -394,6 +396,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties { sb.append(", isUuid=").append(isUuid); sb.append(", isUri=").append(isUri); sb.append(", isEmail=").append(isEmail); + sb.append(", isPassword=").append(isPassword); sb.append(", isFreeFormObject=").append(isFreeFormObject); sb.append(", isAnyType=").append(isAnyType); sb.append(", isArray=").append(isArray); 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 c3cf38349bb7cb10920d80bc556a0753df4f3cee..597e8ab8d94d6a7bd4889062d7e39b2097470788 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 @@ -134,6 +134,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti public boolean isUuid; public boolean isUri; public boolean isEmail; + public boolean isPassword; public boolean isNull; /** * The type is a free-form object, i.e. it is a map of string to values with no declared properties. @@ -1050,6 +1051,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti sb.append(", isUuid=").append(isUuid); sb.append(", isUri=").append(isUri); sb.append(", isEmail=").append(isEmail); + sb.append(", isPassword=").append(isPassword); sb.append(", isFreeFormObject=").append(isFreeFormObject); sb.append(", isArray=").append(isArray); sb.append(", isMap=").append(isMap); @@ -1140,6 +1142,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti isUuid == that.isUuid && isUri == that.isUri && isEmail == that.isEmail && + isPassword == that.isPassword && isFreeFormObject == that.isFreeFormObject && isArray == that.isArray && isMap == that.isMap && @@ -1228,7 +1231,7 @@ public class CodegenProperty implements Cloneable, IJsonSchemaValidationProperti exclusiveMinimum, exclusiveMaximum, required, deprecated, hasMoreNonReadOnly, isPrimitiveType, isModel, isContainer, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isFile, - isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isFreeFormObject, + isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isArray, isMap, isEnum, isInnerEnum, isEnumRef, isAnyType, isReadOnly, isWriteOnly, isNullable, isShort, isUnboundedInteger, isSelfReference, isCircularReference, isDiscriminator, _enum, allowableValues, items, mostInnerItems, additionalProperties, vars, requiredVars, 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 aa6b103b77c8f61b5cfa8345a5d241c2adb3650f..edef0c709a3d5c00b7dfcff6e19bdd0de0f989f7 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 @@ -50,6 +50,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { public boolean isDateTime; public boolean isUuid; public boolean isEmail; + public boolean isPassword; public boolean isModel; public boolean isFreeFormObject; public boolean isAnyType; @@ -98,7 +99,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { public int hashCode() { return Objects.hash(headers, code, message, examples, dataType, baseType, containerType, hasHeaders, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBoolean, isDate, - isDateTime, isUuid, isEmail, isModel, isFreeFormObject, isAnyType, isDefault, simpleType, primitiveType, + isDateTime, isUuid, isEmail, isPassword, isModel, isFreeFormObject, isAnyType, isDefault, simpleType, primitiveType, isMap, isArray, isBinary, isFile, schema, jsonSchema, vendorExtensions, items, additionalProperties, vars, requiredVars, isNull, hasValidation, isShort, isUnboundedInteger, getMaxProperties(), getMinProperties(), uniqueItems, getMaxItems(), getMinItems(), getMaxLength(), @@ -130,6 +131,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { isDateTime == that.isDateTime && isUuid == that.isUuid && isEmail == that.isEmail && + isPassword == that.isPassword && isModel == that.isModel && isFreeFormObject == that.isFreeFormObject && isAnyType == that.isAnyType && @@ -568,6 +570,7 @@ public class CodegenResponse implements IJsonSchemaValidationProperties { sb.append(", isDateTime=").append(isDateTime); sb.append(", isUuid=").append(isUuid); sb.append(", isEmail=").append(isEmail); + sb.append(", isPassword=").append(isPassword); sb.append(", isModel=").append(isModel); sb.append(", isFreeFormObject=").append(isFreeFormObject); sb.append(", isAnyType=").append(isAnyType); 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 e6f0dd8d22eb44fbdbb348d271822421a9484de6..66e5cf1763beed4c48460fb2601498827b8dee08 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 @@ -3601,6 +3601,8 @@ public class DefaultCodegen implements CodegenConfig { property.isUri = true; } else if (ModelUtils.isEmailSchema(p)) { property.isEmail = true; + } else if (ModelUtils.isPasswordSchema(p)) { + property.isPassword = true; } else if (ModelUtils.isDateSchema(p)) { // date format property.setIsString(false); // for backward compatibility with 2.x property.isDate = true; @@ -4621,6 +4623,8 @@ public class DefaultCodegen implements CodegenConfig { } else if (ModelUtils.isStringSchema(responseSchema)) { if (ModelUtils.isEmailSchema(responseSchema)) { r.isEmail = true; + } else if (ModelUtils.isPasswordSchema(responseSchema)) { + r.isPassword = true; } else if (ModelUtils.isUUIDSchema(responseSchema)) { r.isUuid = true; } else if (ModelUtils.isByteArraySchema(responseSchema)) { @@ -6178,6 +6182,8 @@ public class DefaultCodegen implements CodegenConfig { } if (Boolean.TRUE.equals(property.isEmail) && Boolean.TRUE.equals(property.isString)) { parameter.isEmail = true; + } else if (Boolean.TRUE.equals(property.isPassword) && Boolean.TRUE.equals(property.isPassword)) { + parameter.isPassword = true; } else if (Boolean.TRUE.equals(property.isUuid) && Boolean.TRUE.equals(property.isString)) { parameter.isUuid = true; } else if (Boolean.TRUE.equals(property.isByteArray)) { @@ -6690,6 +6696,8 @@ public class DefaultCodegen implements CodegenConfig { } else if (ModelUtils.isStringSchema(ps)) { if (ModelUtils.isEmailSchema(ps)) { codegenParameter.isEmail = true; + } else if (ModelUtils.isPasswordSchema(ps)) { + codegenParameter.isPassword = true; } else if (ModelUtils.isUUIDSchema(ps)) { codegenParameter.isUuid = true; } else if (ModelUtils.isByteArraySchema(ps)) { 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 d5e8f7faa1fa4275fbdc7e0b06336f73210f09e2..55dbcbac3d5537cbc45ac53c5107f668f9d4a875 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 @@ -247,6 +247,8 @@ public interface IJsonSchemaValidationProperties { ; } else if (ModelUtils.isEmailSchema(p)) { ; + } else if (ModelUtils.isPasswordSchema(p)) { + ; } else if (ModelUtils.isDateSchema(p)) { ; } else if (ModelUtils.isDateTimeSchema(p)) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 6df19a1311870e82ea29aad3a057b9ed9a709c6c..42d8b55531dad91e23479c7c78b03502ef23dcab 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -2473,6 +2473,10 @@ public class DefaultCodegenTest { assertTrue(names.contains("password")); assertTrue(names.contains("passwordConfirmation")); assertTrue(names.contains("oldPassword")); + + Optional<CodegenParameter> passwordParameter = operation.formParams.stream().filter(p -> "password".equals(p.paramName)).findFirst(); + assertTrue(passwordParameter.isPresent()); + assertTrue(passwordParameter.get().isPassword); } @Test diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java index 224d10975fda22ebdd5af0b25aa840aa5e998729..e0b97f867df895dc165d51462e8606eb2eae5dad 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java @@ -1125,6 +1125,17 @@ public class JavaModelTest { Assert.assertEquals(cp.maxLength, Integer.valueOf(10)); Assert.assertEquals(cp.pattern, "^[A-Z]+$"); } + + @Test(description = "convert string property with password format") + public void stringPropertyPasswordFormatTest() { + OpenAPI openAPI = TestUtils.createOpenAPI(); + final Schema property = new StringSchema().format("password"); + final DefaultCodegen codegen = new JavaClientCodegen(); + codegen.setOpenAPI(openAPI); + + final CodegenProperty cp = codegen.fromProperty("somePropertyWithPasswordFormat", property); + Assert.assertEquals(cp.isPassword, true); + } @Test(description = "convert string property in an object") public void stringPropertyInObjectTest() {