OpenAPI 生成器 jaxrs-spec 停止缩短我的枚举值

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=falseadditionalPropertiesOpenAPI 生成器的一部分来消除不需要的前缀configuration


完整示例(maven):

<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)