Add multiple parameter examples to CodegenParameter (#15647)

* Add examples to CodegenParameter

* Set CodegenParameter examples

* Add examples to CodegenParameter

* Set CodegenParameter examples

* Regeneration samples
This commit is contained in:
Beppe Catanese 2023-05-26 03:20:22 +02:00 committed by GitHub
parent 3db7169959
commit 1f4cbb8f00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 2 deletions

View File

@ -17,6 +17,8 @@
package org.openapitools.codegen;
import io.swagger.v3.oas.models.examples.Example;
import java.util.*;
/**
@ -33,6 +35,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
public String nameInLowerCase; // property name in lower case
public String example; // example value (x-example)
public Map<String, Example> examples;
public String jsonSchema;
public boolean isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary,
isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isAnyType, isShort, isUnboundedInteger;
@ -159,6 +162,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
output.defaultValue = this.defaultValue;
output.enumDefaultValue = this.enumDefaultValue;
output.example = this.example;
output.examples = this.examples;
output.isEnum = this.isEnum;
output.isEnumRef = this.isEnumRef;
output.maxProperties = this.maxProperties;
@ -249,7 +253,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, isPassword, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, isEnumRef, _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, isVoid, 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, examples, jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal, isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword, isFreeFormObject, isAnyType, isArray, isMap, isFile, isEnum, isEnumRef, _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, isVoid, additionalPropertiesIsAnyType, hasVars, hasRequired, isShort, isUnboundedInteger, hasDiscriminatorWithNonEmptyMapping, composedSchemas, hasMultipleTypes, schema, content, requiredVarsMap, ref, uniqueItemsBoolean, schemaIsFromAdditionalProperties);
}
@Override
@ -331,6 +335,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
Objects.equals(isDeepObject, that.isDeepObject) &&
Objects.equals(isAllowEmptyValue, that.isAllowEmptyValue) &&
Objects.equals(example, that.example) &&
Objects.equals(examples, that.examples) &&
Objects.equals(jsonSchema, that.jsonSchema) &&
Objects.equals(_enum, that._enum) &&
Objects.equals(allowableValues, that.allowableValues) &&
@ -392,6 +397,7 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
sb.append(", deepObject='").append(isDeepObject).append('\'');
sb.append(", allowEmptyValue='").append(isAllowEmptyValue).append('\'');
sb.append(", example='").append(example).append('\'');
sb.append(", examples='").append(examples).append('\'');
sb.append(", jsonSchema='").append(jsonSchema).append('\'');
sb.append(", isString=").append(isString);
sb.append(", isNumeric=").append(isNumeric);

View File

@ -2023,6 +2023,18 @@ public class DefaultCodegen implements CodegenConfig {
setParameterExampleValue(codegenParameter);
}
/**
* Return the examples of the parameter.
*
* @param codegenParameter Codegen parameter
* @param parameter Parameter
*/
public void setParameterExamples(CodegenParameter codegenParameter, Parameter parameter) {
if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) {
codegenParameter.examples = parameter.getExamples();
}
}
/**
* Return the example value of the parameter.
*
@ -4880,6 +4892,8 @@ public class DefaultCodegen implements CodegenConfig {
// set the parameter example value
// should be overridden by lang codegen
setParameterExampleValue(codegenParameter, parameter);
// set the parameter examples (if available)
setParameterExamples(codegenParameter, parameter);
postProcessParameter(codegenParameter);
LOGGER.debug("debugging codegenParameter return: {}", codegenParameter);

View File

@ -862,8 +862,10 @@ public class DefaultCodegenTest {
Operation operation2 = openAPI.getPaths().get("/example1/plural").getGet();
CodegenParameter codegenParameter2 = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
codegen.setParameterExampleValue(codegenParameter2, operation2.getParameters().get(0));
Assert.assertEquals(codegenParameter2.example, "An example1 value");
// verify examples are available
codegen.setParameterExamples(codegenParameter2, operation2.getParameters().get(0));
Assert.assertEquals(codegenParameter2.examples.size(), 1);
}
@Test