[SPRING] Add converters for enums (#13349)

* [SPRING] Add converters for enums

* Review

* review

* fix merge

* review
This commit is contained in:
Thibault Duperron 2022-10-28 17:55:40 +02:00 committed by GitHub
parent 574a70c315
commit 458ea56896
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
40 changed files with 756 additions and 127 deletions

View File

@ -22,11 +22,13 @@ import static org.openapitools.codegen.utils.CamelizeOption.LOWERCASE_FIRST_LETT
import static org.openapitools.codegen.utils.StringUtils.camelize;
import com.samskivert.mustache.Mustache;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.servers.Server;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
@ -41,6 +43,8 @@ import java.util.Objects;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.lang3.tuple.Pair;
import org.openapitools.codegen.CliOption;
import org.openapitools.codegen.CodegenConstants;
@ -498,6 +502,10 @@ public class SpringCodegen extends AbstractJavaCodegen
this.setUseFeignClient(true);
} else {
apiTemplateFiles.put("apiController.mustache", "Controller.java");
if (containsEnums()) {
supportingFiles.add(new SupportingFile("converter.mustache",
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "EnumConverterConfiguration.java"));
}
supportingFiles.add(new SupportingFile("application.mustache",
("src.main.resources").replace(".", java.io.File.separator), "application.properties"));
supportingFiles.add(new SupportingFile("homeController.mustache",
@ -595,6 +603,20 @@ public class SpringCodegen extends AbstractJavaCodegen
}
}
private boolean containsEnums() {
if (openAPI == null) {
return false;
}
Components components = this.openAPI.getComponents();
if (components == null || components.getSchemas() == null) {
return false;
}
return components.getSchemas().values().stream()
.anyMatch(it -> it.getEnum() != null && !it.getEnum().isEmpty());
}
@Override
public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co,
Map<String, List<CodegenOperation>> operations) {

View File

@ -0,0 +1,34 @@
package {{configPackage}};
{{#models}}
{{#model}}
{{#isEnum}}
import {{modelPackage}}.{{name}};
{{/isEnum}}
{{/model}}
{{/models}}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
{{#models}}
{{#model}}
{{#isEnum}}
@Bean
Converter<{{{dataType}}}, {{name}}> {{classVarName}}Converter() {
return new Converter<{{{dataType}}}, {{name}}>() {
@Override
public {{name}} convert({{{dataType}}} source) {
return {{name}}.fromValue(source);
}
};
}
{{/isEnum}}
{{/model}}
{{/models}}
}

View File

@ -18,6 +18,7 @@
package org.openapitools.codegen.java.spring;
import static java.util.stream.Collectors.groupingBy;
import static org.assertj.core.api.Assertions.assertThat;
import static org.openapitools.codegen.TestUtils.assertFileContains;
import static org.openapitools.codegen.TestUtils.assertFileNotContains;
import static org.openapitools.codegen.languages.SpringCodegen.RESPONSE_WRAPPER;
@ -1214,7 +1215,7 @@ public class SpringCodegenTest {
generator.opts(input).generate();
File[] generatedModels = new File(outputPath + "/src/main/java/org/openapitools/model").listFiles();
Assertions.assertThat(generatedModels).isNotEmpty();
assertThat(generatedModels).isNotEmpty();
for (File modelPath : generatedModels) {
JavaFileAssert.assertThat(modelPath)
@ -1227,22 +1228,9 @@ public class SpringCodegenTest {
@Test
public void testHandleDefaultValue_issue8535() throws Exception {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/3_0/issue_8535.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true");
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put(CXFServerFeatures.LOAD_TEST_DATA_FROM_FILE, "true");
Map<String, File> files = generateFromContract("src/test/resources/3_0/issue_8535.yaml", SPRING_BOOT, additionalProperties);
JavaFileAssert.assertThat(files.get("TestHeadersApi.java"))
.assertMethod("headersTest")
@ -1329,29 +1317,15 @@ public class SpringCodegenTest {
@Test
public void testResponseWithArray_issue11897() throws Exception {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_11897.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().put(AbstractJavaCodegen.FULL_JAVA_UTIL, "true");
codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true");
codegen.additionalProperties().put(SpringCodegen.INTERFACE_ONLY, "true");
codegen.additionalProperties().put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
codegen.additionalProperties().put(SpringCodegen.PERFORM_BEANVALIDATION, "true");
codegen.additionalProperties().put(SpringCodegen.SPRING_CONTROLLER, "true");
codegen.additionalProperties().put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson");
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put(AbstractJavaCodegen.FULL_JAVA_UTIL, "true");
additionalProperties.put(SpringCodegen.USE_TAGS, "true");
additionalProperties.put(SpringCodegen.INTERFACE_ONLY, "true");
additionalProperties.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
additionalProperties.put(SpringCodegen.PERFORM_BEANVALIDATION, "true");
additionalProperties.put(SpringCodegen.SPRING_CONTROLLER, "true");
additionalProperties.put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson");
Map<String, File> files = generateFromContract("src/test/resources/bugs/issue_11897.yaml", SPRING_BOOT, additionalProperties);
JavaFileAssert.assertThat(files.get("MetadataApi.java"))
.assertMethod("getWithArrayOfObjects").hasReturnType("ResponseEntity<List<TestResponse>>")
@ -1369,29 +1343,16 @@ public class SpringCodegenTest {
@Test
public void shouldSetDefaultValueForMultipleArrayItems() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put(AbstractJavaCodegen.FULL_JAVA_UTIL, "true");
additionalProperties.put(SpringCodegen.USE_TAGS, "true");
additionalProperties.put(SpringCodegen.INTERFACE_ONLY, "true");
additionalProperties.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
additionalProperties.put(SpringCodegen.PERFORM_BEANVALIDATION, "true");
additionalProperties.put(SpringCodegen.SPRING_CONTROLLER, "true");
additionalProperties.put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson");
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_11957.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().put(AbstractJavaCodegen.FULL_JAVA_UTIL, "true");
codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true");
codegen.additionalProperties().put(SpringCodegen.INTERFACE_ONLY, "true");
codegen.additionalProperties().put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
codegen.additionalProperties().put(SpringCodegen.PERFORM_BEANVALIDATION, "true");
codegen.additionalProperties().put(SpringCodegen.SPRING_CONTROLLER, "true");
codegen.additionalProperties().put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson");
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, File> files = generateFromContract("src/test/resources/bugs/issue_11957.yaml", SPRING_BOOT, additionalProperties);
JavaFileAssert.assertThat(files.get("SearchApi.java"))
.assertMethod("defaultList")
@ -1417,21 +1378,7 @@ public class SpringCodegenTest {
@Test
public void testPutItemsMethodContainsKeyInSuperClassMethodCall_issue12494() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_12494.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setOutputDir(output.getAbsolutePath());
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, File> files = generateFromContract("src/test/resources/bugs/issue_12494.yaml", null);
JavaFileAssert.assertThat(files.get("ChildClass.java"))
.assertMethod("putSomeMapItem")
@ -1440,22 +1387,7 @@ public class SpringCodegenTest {
@Test
public void shouldHandleCustomResponseType_issue11731() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_11731.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.setOutputDir(output.getAbsolutePath());
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, File> files = generateFromContract("src/test/resources/bugs/issue_11731.yaml", SPRING_BOOT);
JavaFileAssert.assertThat(files.get("CustomersApi.java"))
.assertMethod("getAllUsingGET1")
@ -1464,23 +1396,9 @@ public class SpringCodegenTest {
@Test
public void shouldHandleContentTypeWithSecondWildcardSubtype_issue12457() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_12457.yaml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().put(SpringCodegen.USE_TAGS, "true");
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
Map<String, File> files = generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put(SpringCodegen.USE_TAGS, "true");
Map<String, File> files = generateFromContract("src/test/resources/bugs/issue_12457.yaml", SPRING_BOOT, additionalProperties);
JavaFileAssert.assertThat(files.get("UsersApi.java"))
.assertMethod("wildcardSubTypeForContentType")
@ -1493,28 +1411,15 @@ public class SpringCodegenTest {
@Test
public void shouldGenerateDiscriminatorFromAllOfWhenUsingLegacyDiscriminatorBehaviour_issue12692() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/bugs/issue_12692.yml", null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true");
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
generator.opts(input).generate();
Map<String, Object> additionalProperties = new HashMap<>();
additionalProperties.put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true");
Map<String, File> output = generateFromContract("src/test/resources/bugs/issue_12692.yml", SPRING_BOOT, additionalProperties);
String jsonTypeInfo = "@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = \"type\", visible = true)";
String jsonSubType = "@JsonSubTypes({\n" +
" @JsonSubTypes.Type(value = Cat.class, name = \"cat\")" +
"})";
assertFileContains(Paths.get(output.getAbsolutePath() + "/src/main/java/org/openapitools/model/Pet.java"), jsonTypeInfo, jsonSubType);
assertFileContains(output.get("Pet.java").toPath(), jsonTypeInfo, jsonSubType);
}
@Test
@ -1696,4 +1601,46 @@ public class SpringCodegenTest {
.assertMethod("equals")
.bodyContainsLines("return Arrays.equals(this.picture, testObject.picture);");
}
@Test
public void contractWithoutEnumDoesNotContainsEnumConverter() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/generic.yaml", SPRING_BOOT);
assertThat(output).doesNotContainKey("EnumConverterConfiguration.java");
}
@Test
public void contractWithEnumContainsEnumConverter() throws IOException {
Map<String, File> output = generateFromContract("src/test/resources/3_0/enum.yaml", SPRING_BOOT);
JavaFileAssert.assertThat(output.get("EnumConverterConfiguration.java"))
.assertMethod("typeConverter");
}
private Map<String, File> generateFromContract(String url, String library) throws IOException {
return generateFromContract(url, library, new HashMap<>());
}
private Map<String, File> generateFromContract(String url, String library, Map<String, Object> additionalProperties) throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
OpenAPI openAPI = new OpenAPIParser()
.readLocation(url, null, new ParseOptions()).getOpenAPI();
SpringCodegen codegen = new SpringCodegen();
if (null != library) {
codegen.setLibrary(library);
}
codegen.setOutputDir(output.getAbsolutePath());
codegen.additionalProperties().putAll(additionalProperties);
ClientOptInput input = new ClientOptInput()
.openAPI(openAPI)
.config(codegen);
DefaultGenerator generator = new DefaultGenerator();
return generator.opts(input).generate().stream()
.collect(Collectors.toMap(File::getName, Function.identity()));
}
}

View File

@ -0,0 +1,32 @@
openapi: 3.0.0
info:
title: Sample API
description: API description in Markdown.
version: 1.0.0
paths:
/ponies:
get:
summary: Returns all animals.
description: Optional extended description in Markdown.
responses:
200:
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Pony'
components:
schemas:
Pony:
type: object
properties:
type:
$ref: '#/components/schemas/Type'
Type:
type: string
enum:
- Earth
- Pegasi
- Unicorn

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java
src/main/java/org/openapitools/model/AdditionalPropertiesArray.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java
src/main/java/org/openapitools/model/AdditionalPropertiesArray.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -21,6 +21,7 @@ src/main/java/org/openapitools/api/StoreApiDelegate.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/api/UserApiDelegate.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -2,6 +2,7 @@ README.md
pom.xml
src/main/java/org/openapitools/OpenApiGeneratorApplication.java
src/main/java/org/openapitools/RFC3339DateFormat.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringDocConfiguration.java
src/main/java/org/openapitools/virtualan/api/AnotherFakeApi.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.virtualan.model.EnumClass;
import org.openapitools.virtualan.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}

View File

@ -15,6 +15,7 @@ src/main/java/org/openapitools/api/StoreApi.java
src/main/java/org/openapitools/api/StoreApiController.java
src/main/java/org/openapitools/api/UserApi.java
src/main/java/org/openapitools/api/UserApiController.java
src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java
src/main/java/org/openapitools/configuration/HomeController.java
src/main/java/org/openapitools/configuration/SpringFoxConfiguration.java
src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java

View File

@ -0,0 +1,32 @@
package org.openapitools.configuration;
import org.openapitools.model.EnumClass;
import org.openapitools.model.OuterEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@Configuration
public class EnumConverterConfiguration {
@Bean
Converter<String, EnumClass> enumClassConverter() {
return new Converter<String, EnumClass>() {
@Override
public EnumClass convert(String source) {
return EnumClass.fromValue(source);
}
};
}
@Bean
Converter<String, OuterEnum> outerEnumConverter() {
return new Converter<String, OuterEnum>() {
@Override
public OuterEnum convert(String source) {
return OuterEnum.fromValue(source);
}
};
}
}