Skip to content

Commit 9e7bce7

Browse files
tanmaykmbalassit
authored andcommitted
[julia] fix enum default vals, add api validations (OpenAPITools#20520)
- Fix enum default value generation. Default values were falling back to the default code generator and were being generated improperly for Julia. - Add more validations to client and server API call handlers. These validations were already being generated for models, but were missed out for API calls.
1 parent b81b23d commit 9e7bce7

File tree

5 files changed

+44
-0
lines changed

5 files changed

+44
-0
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJuliaCodegen.java

+12
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,18 @@ public String toDefaultValue(Schema schema) {
437437
return "nothing";
438438
}
439439

440+
@Override
441+
public String toEnumDefaultValue(String value, String datatype) {
442+
// we do not generate any separate enum structure in Julia
443+
return value;
444+
}
445+
446+
@Override
447+
public String toEnumVarName(String value, String datatype) {
448+
// we do not generate any separate enum structure in Julia
449+
return value;
450+
}
451+
440452
@Override
441453
public String escapeUnsafeCharacters(String input) {
442454
return input.replace("#=", "#_=").replace("=#", "=_#");

modules/openapi-generator/src/main/resources/julia-client/api.mustache

+15
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,21 @@ function _oacinternal_{{operationId}}(_api::{{classname}}{{#allParams}}{{#requir
4343
{{#minItems}}
4444
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minItems, {{paramName}}, {{minItems}})
4545
{{/minItems}}
46+
{{#uniqueItems}}
47+
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :uniqueItems, {{paramName}}, {{uniqueItems}})
48+
{{/uniqueItems}}
49+
{{#maxProperties}}
50+
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :maxProperties, {{paramName}}, {{maxProperties}})
51+
{{/maxProperties}}
52+
{{#minProperties}}
53+
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :minProperties, {{paramName}}, {{minProperties}})
54+
{{/minProperties}}
55+
{{#pattern}}
56+
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :pattern, {{paramName}}, r"{{{pattern}}}")
57+
{{/pattern}}
58+
{{#multipleOf}}
59+
OpenAPI.validate_param("{{paramName}}", "{{operationId}}", :multipleOf, {{paramName}}, {{multipleOf}})
60+
{{/multipleOf}}
4661

4762
{{/hasValidation}}
4863
{{/allParams}}

modules/openapi-generator/src/main/resources/julia-server/api.mustache

+15
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,21 @@ function {{operationId}}_validate(handler)
4343
{{#minItems}}
4444
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minItems}})
4545
{{/minItems}}
46+
{{#uniqueItems}}
47+
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :uniqueItems, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{uniqueItems}})
48+
{{/uniqueItems}}
49+
{{#maxProperties}}
50+
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :maxProperties, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{maxProperties}})
51+
{{/maxProperties}}
52+
{{#minProperties}}
53+
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :minProperties, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{minProperties}})
54+
{{/minProperties}}
55+
{{#pattern}}
56+
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :pattern, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], r"{{{pattern}}}")
57+
{{/pattern}}
58+
{{#multipleOf}}
59+
OpenAPI.validate_param("{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}", "{{operationId}}", :multipleOf, openapi_params["{{#lambda.escapeDollar}}{{baseName}}{{/lambda.escapeDollar}}"], {{multipleOf}})
60+
{{/multipleOf}}
4661
{{/hasValidation}}{{/allParams}}
4762
return handler(req)
4863
end

samples/client/petstore/julia/src/apis/api_UserApi.jl

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ const _returntypes_login_user_UserApi = Dict{Regex,Type}(
172172
)
173173

174174
function _oacinternal_login_user(_api::UserApi, username::String, password::String; _mediaType=nothing)
175+
OpenAPI.validate_param("username", "login_user", :pattern, username, r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
175176

176177
_ctx = OpenAPI.Clients.Ctx(_api.client, "GET", _returntypes_login_user_UserApi, "/user/login", [])
177178
OpenAPI.Clients.set_param(_ctx.query, "username", username; style="form", is_explode=true) # type String

samples/server/petstore/julia/src/apis/api_UserApi.jl

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ function login_user_validate(handler)
155155
function login_user_validate_handler(req::HTTP.Request)
156156
openapi_params = req.context[:openapi_params]
157157

158+
OpenAPI.validate_param("username", "login_user", :pattern, openapi_params["username"], r"^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$")
158159

159160
return handler(req)
160161
end

0 commit comments

Comments
 (0)