Skip to content

Commit da2a75d

Browse files
author
Stefan Burnicki
committed
[kotlin-spring] Support parsing date and date-time parameters
adopted OpenAPITools#3860 for kotlin-spring
1 parent 15a459b commit da2a75d

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{#swaggerAnnotations}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{#-last}}{{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}) {{#useBeanValidation}}@Valid{{/useBeanValidation}}{{/swaggerAnnotations}}{{^isModel}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}){{/isModel}} {{paramName}}: {{>optionalDataType}}{{/isQueryParam}}
1+
{{#isQueryParam}}{{#useBeanValidation}}{{>beanValidationQueryParams}}{{/useBeanValidation}}{{#swaggerAnnotations}}@ApiParam(value = "{{{description}}}"{{#required}}, required = true{{/required}}{{#allowableValues}}, allowableValues = "{{#values}}{{{.}}}{{^-last}}, {{/-last}}{{#-last}}{{/-last}}{{/values}}"{{/allowableValues}}{{#defaultValue}}, defaultValue = {{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}) {{#useBeanValidation}}@Valid{{/useBeanValidation}}{{/swaggerAnnotations}}{{^isModel}} @RequestParam(value = "{{baseName}}"{{#required}}, required = true{{/required}}{{^required}}, required = false{{/required}}{{#defaultValue}}, defaultValue={{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{{defaultValue}}}{{^isString}}"{{/isString}}{{#isString}}{{#isEnum}}"{{/isEnum}}{{/isString}}{{/defaultValue}}){{/isModel}}{{#isDate}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE){{/isDate}}{{#isDateTime}} @org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME){{/isDateTime}} {{paramName}}: {{>optionalDataType}}{{/isQueryParam}}

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java

+36
Original file line numberDiff line numberDiff line change
@@ -279,4 +279,40 @@ public void doGenerateRequestParamForSimpleParam() throws IOException {
279279
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/CrocodilesApi.kt"), "@RequestParam");
280280
assertFileContains(Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/PolarBearsApi.kt"), "@RequestParam");
281281
}
282+
283+
@Test
284+
public void generateFormatForDateAndDateTimeQueryParam() throws IOException {
285+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
286+
output.deleteOnExit();
287+
String outputPath = output.getAbsolutePath().replace('\\', '/');
288+
289+
OpenAPI openAPI = new OpenAPIParser()
290+
.readLocation("src/test/resources/3_0/issue_2053.yaml", null, new ParseOptions()).getOpenAPI();
291+
292+
KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
293+
codegen.setOutputDir(output.getAbsolutePath());
294+
codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true");
295+
296+
ClientOptInput input = new ClientOptInput();
297+
input.openAPI(openAPI);
298+
input.config(codegen);
299+
300+
DefaultGenerator generator = new DefaultGenerator();
301+
302+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "false");
303+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
304+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
305+
generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true");
306+
generator.setGeneratorPropertyDefault(CodegenConstants.SUPPORTING_FILES, "false");
307+
generator.opts(input).generate();
308+
309+
assertFileContains(
310+
Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ElephantsApi.kt"),
311+
"@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE)"
312+
);
313+
assertFileContains(
314+
Paths.get(outputPath + "/src/main/kotlin/org/openapitools/api/ZebrasApi.kt"),
315+
"@org.springframework.format.annotation.DateTimeFormat(iso = org.springframework.format.annotation.DateTimeFormat.ISO.DATE_TIME)"
316+
);
317+
}
282318
}

0 commit comments

Comments
 (0)