Cha*_*aye 5 java enums jax-rs openapi openapi-generator
鉴于项目sizeRange模型领域的OpenAPI 规范:
size:
type: string
description: Size range for this project
enum: [RANGE_0_10M,RANGE_10M_50M,RANGE_50M_100M]
example: RANGE_10M_50M
Run Code Online (Sandbox Code Playgroud)
OpenAPIjaxrs-spec生成器生成一个Project.class,如下所示:
public enum SizeEnum {
_0_10M(String.valueOf("RANGE_0_10M")), _10M_50M(String.valueOf("RANGE_10M_50M")), _50M_100M(String.valueOf("RANGE_50M_100M"));
Run Code Online (Sandbox Code Playgroud)
生成的枚举值被缩短(用于 Java):
Project.SizeEnum._0_10M
Run Code Online (Sandbox Code Playgroud)
我准备忽略这种不便,但在这种情况下会导致异常:
Enum.valueOf(Project.SizeEnum.class, "RANGE_0_10M");
No enum constant com.mycompany.my_project.Project.SizeEnum.RANGE_0_10M
Run Code Online (Sandbox Code Playgroud)
如果我将一个以除此之外的内容开头的值添加到枚举中,RANGE_则会导致所有枚举值正确显示。我推断某些进程会自动缩短所有进程,因为它们共享一个前缀。
这是我可以访问的 OpenAPI 生成器配置吗?我找不到它:
小智 2
RANGE_您可以通过将标志添加 removeEnumValuePrefix=false到additionalPropertiesOpenAPI 生成器的一部分来消除不需要的前缀configuration。
<execution>
<id>generate-id</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<additionalProperties>
removeEnumValuePrefix=false
</additionalProperties>
<inputSpec>spec.yaml</inputSpec>
<generatorName>spring</generatorName>
<configOptions>
<identifierNamingConvention>snake_case</identifierNamingConvention>
</configOptions>
<output>${project.build.directory}/generated-sources/output</output>
</configuration>
</execution>
Run Code Online (Sandbox Code Playgroud)