Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public class CodegenOperation {
public List<Tag> tags;
public List<CodegenResponse> responses = new ArrayList<CodegenResponse>();
public List<CodegenCallback> callbacks = new ArrayList<>();
public Set<String> imports = new HashSet<String>();
public Set<String> imports = new HashSet<>();
public List<Map<String, String>> examples;
public List<Map<String, String>> requestBodyExamples;
public ExternalDocumentation externalDocs;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3787,9 +3787,7 @@ public CodegenProperty fromProperty(String name, Schema p, boolean required, boo

Map<String, Object> allowableValues = new HashMap<>();
allowableValues.put("values", _enum);
if (allowableValues.size() > 0) {
property.allowableValues = allowableValues;
}
property.allowableValues = allowableValues;
}

Schema referencedSchema = ModelUtils.getReferencedSchema(this.openAPI, p);
Expand Down Expand Up @@ -3888,6 +3886,7 @@ public CodegenProperty fromProperty(String name, Schema p, boolean required, boo
property.isModel = (ModelUtils.isComposedSchema(referencedSchema) || ModelUtils.isObjectSchema(referencedSchema)) && ModelUtils.isModel(referencedSchema);
}

updateCodegenPropertyEnum(property);
LOGGER.debug("debugging from property return: {}", property);
schemaCodegenPropertyCache.put(ns, property);
return property;
Expand Down Expand Up @@ -6747,9 +6746,13 @@ public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set
;
} else if (ModelUtils.isArraySchema(ps)) {
Schema inner = getSchemaItems((ArraySchema) ps);
CodegenProperty arrayInnerProperty = fromProperty("inner", inner, false);
CodegenProperty arrayInnerProperty = fromProperty(getNameOrInner(ps), inner, false);
codegenParameter.items = arrayInnerProperty;
codegenParameter.mostInnerItems = arrayInnerProperty.mostInnerItems;
if (arrayInnerProperty.mostInnerItems == null) {
codegenParameter.mostInnerItems = arrayInnerProperty;
} else {
codegenParameter.mostInnerItems = arrayInnerProperty.mostInnerItems;
}
codegenParameter.isPrimitiveType = false;
codegenParameter.isContainer = true;
// hoist items data into the array property
Expand Down Expand Up @@ -6825,6 +6828,10 @@ public CodegenParameter fromFormProperty(String name, Schema propertySchema, Set
return codegenParameter;
}

private static String getNameOrInner(Schema ps) {
return ps.getName() == null ? "inner": ps.getName();
}

protected void addBodyModelSchema(CodegenParameter codegenParameter, String name, Schema schema, Set<String> imports, String bodyParameterName, boolean forceSimpleRef) {
CodegenModel codegenModel = null;
if (StringUtils.isNotBlank(name)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -680,6 +680,10 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List<Mo
if (operations != null) {
final List<CodegenOperation> ops = operations.getOperation();
for (final CodegenOperation operation : ops) {
if (operation.allParams.stream().anyMatch(it -> it.isEnum)) {
objs.getImports().add(importFromMapping("JsonCreator"));
objs.getImports().add(importFromMapping("JsonValue"));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I doubt that @JsonCreator could handle enums as request parameter for cases when value != enum contant name(i.e. AVAILABLE("available") )

You can check this comment #3337 (comment)

What I'm thinking is that you have to leverage this PR changes #13349

I mean that all these enums should be added to that configuration file

}
final List<CodegenResponse> responses = operation.responses;
if (responses != null) {
for (final CodegenResponse resp : responses) {
Expand Down Expand Up @@ -721,6 +725,12 @@ public void setReturnContainer(final String returnContainer) {
return objs;
}

private Map<String, String> importFromMapping(String value) {
HashMap<String, String> e = new HashMap<>();
Copy link
Contributor

@MelleD MelleD Sep 13, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you really need a HashMap here?
If not it's better to use with a meaningful name:
Map<String, String> imports = new HashMap<>();

e.put("import", importMapping.get(value));
return e;
}

private interface DataTypeAssigner {
void setReturnType(String returnType);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ import javax.annotation.Generated;
<%={{ }}=%>
{{/useFeignClient}}
public interface {{classname}} {

{{#jdk8-default-interface}}
{{^isDelegate}}
{{^reactive}}
Expand All @@ -120,6 +121,18 @@ public interface {{classname}} {
{{/jdk8-default-interface}}
{{#operation}}

{{#allParams}}
{{#isEnum}}
{{^isContainer}}
{{>enumClass}}
{{/isContainer}}
{{#isContainer}}
{{#mostInnerItems}}
{{>enumClass}}
{{/mostInnerItems}}
{{/isContainer}}
{{/isEnum}}
{{/allParams}}
/**
* {{httpMethod}} {{{path}}}{{#summary}} : {{.}}{{/summary}}
{{#notes}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,21 @@ import jakarta.annotation.Generated;
{{^useJakartaEe}}
import javax.annotation.Generated;
{{/useJakartaEe}}

{{#operations}}
{{#operation}}
{{#allParams}}
{{#isEnum}}
{{^isContainer}}
import static {{package}}.{{classname}}.{{datatypeWithEnum}};
{{/isContainer}}
{{#isContainer}}
{{#mostInnerItems}}
import static {{package}}.{{classname}}.{{datatypeWithEnum}};
{{/mostInnerItems}}
{{/isContainer}}
{{/isEnum}}
{{/allParams}}
{{/operation}}
/**
* A delegate to be called by the {@link {{classname}}Controller}}.
* Implement this interface with a {@link org.springframework.stereotype.Service} annotated class.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{dataType}}}{{/datatypeWithEnum}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#isFormParam}}{{^isFile}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{/useBeanValidation}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}){{>dateTimeParam}} {{{dataType}}} {{paramName}}{{/isFile}}{{#isFile}}{{>paramDoc}} @RequestPart(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{#isArray}}List<{{/isArray}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isArray}}>{{/isArray}} {{paramName}}{{/isFile}}{{/isFormParam}}
{{#isFormParam}}{{^isFile}}{{>paramDoc}}{{#useBeanValidation}} @Valid{{/useBeanValidation}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}){{>dateTimeParam}} {{>dataType}} {{paramName}}{{/isFile}}{{#isFile}}{{>paramDoc}} @RequestPart(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}) {{#isArray}}List<{{/isArray}}{{#reactive}}Flux<Part>{{/reactive}}{{^reactive}}MultipartFile{{/reactive}}{{#isArray}}>{{/isArray}} {{paramName}}{{/isFile}}{{/isFormParam}}
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{#useOptional}}{{#required}}{{{dataType}}}{{/required}}{{^required}}Optional<{{#useBeanValidation}}{{>beanValidationCore}}{{/useBeanValidation}}{{{dataType}}}>{{/required}}{{/useOptional}}{{^useOptional}}{{{dataType}}}{{/useOptional}}
{{#useOptional}}{{#required}}{{{dataType}}}{{/required}}{{^required}}Optional<{{#useBeanValidation}}{{>beanValidationCore}}{{/useBeanValidation}}{{>dataType}}>{{/required}}{{/useOptional}}{{^useOptional}}{{>dataType}}{{/useOptional}}
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public class OASOrder {
order.petId = 123456789L;
order.quantity = 0;
order.shipDate = Datetime.newInstanceGmt(2000, 1, 23, 4, 56, 7);
order.status = StatusEnum.PLACED;
order.status = StatusEnum.STATUSENUM_PLACED;
order.complete = true;
return order;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public class OASPet {
pet.name = 'doggie';
pet.photoUrls = new List<String>{''};
pet.tags = new List<OASTag>{OASTag.getExample()};
pet.status = StatusEnum.AVAILABLE;
pet.status = StatusEnum.STATUSENUM_AVAILABLE;
return pet;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@ namespace Example
var enumQueryString = "_abc"; // string | Query parameter enum test (string) (optional) (default to -efg)
var enumQueryInteger = 1; // int? | Query parameter enum test (double) (optional)
var enumQueryDouble = 1.1D; // double? | Query parameter enum test (double) (optional)
var enumFormStringArray = new List<string>(); // List<string> | Form parameter enum test (string array) (optional) (default to $)
var enumFormStringArray = new List<string>(); // List<string> | Form parameter enum test (string array) (optional) (default to InnerEnum.Dollar)
var enumFormString = "_abc"; // string | Form parameter enum test (string) (optional) (default to -efg)

try
Expand Down Expand Up @@ -1000,7 +1000,7 @@ catch (ApiException e)
| **enumQueryString** | **string** | Query parameter enum test (string) | [optional] [default to -efg] |
| **enumQueryInteger** | **int?** | Query parameter enum test (double) | [optional] |
| **enumQueryDouble** | **double?** | Query parameter enum test (double) | [optional] |
| **enumFormStringArray** | [**List&lt;string&gt;**](string.md) | Form parameter enum test (string array) | [optional] [default to $] |
| **enumFormStringArray** | [**List&lt;string&gt;**](string.md) | Form parameter enum test (string array) | [optional] [default to InnerEnum.Dollar] |
| **enumFormString** | **string** | Form parameter enum test (string) | [optional] [default to -efg] |

### Return type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ public interface IFakeApiSync : IApiAccessor
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <returns></returns>
Expand All @@ -304,7 +304,7 @@ public interface IFakeApiSync : IApiAccessor
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <returns>ApiResponse of Object(void)</returns>
Expand Down Expand Up @@ -711,7 +711,7 @@ public interface IFakeApiAsync : IApiAccessor
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
Expand All @@ -731,7 +731,7 @@ public interface IFakeApiAsync : IApiAccessor
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
Expand Down Expand Up @@ -2527,7 +2527,7 @@ public Org.OpenAPITools.Client.ApiResponse<ModelClient> TestClientModelWithHttpI
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <returns></returns>
Expand All @@ -2546,7 +2546,7 @@ public Org.OpenAPITools.Client.ApiResponse<ModelClient> TestClientModelWithHttpI
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <returns>ApiResponse of Object(void)</returns>
Expand Down Expand Up @@ -2635,7 +2635,7 @@ public Org.OpenAPITools.Client.ApiResponse<ModelClient> TestClientModelWithHttpI
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
Expand All @@ -2655,7 +2655,7 @@ public Org.OpenAPITools.Client.ApiResponse<ModelClient> TestClientModelWithHttpI
/// <param name="enumQueryString">Query parameter enum test (string) (optional, default to -efg)</param>
/// <param name="enumQueryInteger">Query parameter enum test (double) (optional)</param>
/// <param name="enumQueryDouble">Query parameter enum test (double) (optional)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to $)</param>
/// <param name="enumFormStringArray">Form parameter enum test (string array) (optional, default to InnerEnum.Dollar)</param>
/// <param name="enumFormString">Form parameter enum test (string) (optional, default to -efg)</param>
/// <param name="operationIndex">Index associated with the operation.</param>
/// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@ namespace Example
var enumQueryDouble = 1.1D; // double? | Query parameter enum test (double) (optional)
var enumHeaderString = "_abc"; // string? | Header parameter enum test (string) (optional) (default to -efg)
var enumQueryString = "_abc"; // string? | Query parameter enum test (string) (optional) (default to -efg)
var enumFormStringArray = new List<string>?(); // List<string>? | Form parameter enum test (string array) (optional) (default to $)
var enumFormStringArray = new List<string>?(); // List<string>? | Form parameter enum test (string array) (optional) (default to InnerEnum.Dollar)
var enumFormString = "_abc"; // string? | Form parameter enum test (string) (optional) (default to -efg)

try
Expand Down Expand Up @@ -1000,7 +1000,7 @@ catch (ApiException e)
| **enumQueryDouble** | **double?** | Query parameter enum test (double) | [optional] |
| **enumHeaderString** | **string?** | Header parameter enum test (string) | [optional] [default to -efg] |
| **enumQueryString** | **string?** | Query parameter enum test (string) | [optional] [default to -efg] |
| **enumFormStringArray** | [**List&lt;string&gt;?**](string.md) | Form parameter enum test (string array) | [optional] [default to $] |
| **enumFormStringArray** | [**List&lt;string&gt;?**](string.md) | Form parameter enum test (string array) | [optional] [default to InnerEnum.Dollar] |
| **enumFormString** | **string?** | Form parameter enum test (string) | [optional] [default to -efg] |

### Return type
Expand Down
Loading