我有一个包含多个枚举的 OpenAPI 规范:
SocialLinkType:
type: string
enum:
- FACEBOOK
- YOUTUBE
- INSTAGRAM
- TWITTER
- PINTEREST
- LINKEDIN
- TIKTOK
- TUMBLR
- WHATSAPP
- VIMEO
- SNAPCHAT
- APPLE
- ANDROID
ColorType:
type: string
enum:
- ACCENT_1
- ACCENT_2
- BACKGROUND_1
- BACKGROUND_2
- TEXT
- SOLID_BUTTON
- OUTLINE_BUTTON
我面临的问题是关于
ColorType
。与 SocialLinkType
不同,它没有被 OpenAPI 规范中描述的任何其他组件引用。因此,ColorType
未生成 Java 枚举,所以我的问题是强制 Swagger Codegen 为规范中的每个项目生成 Java 代码。
这可以通过某种方式实现吗?
最后,我通过将
ColorType
的声明移动到顶级 components
部分解决了这个问题。
在修复之前,我在以下部分下只有 securitySchemes
声明:
components:
securitySchemes:
bearer:
type: http
scheme: bearer
我已经改成
components:
schemas:
ColorType:
type: string
enum:
- ACCENT_1
- ACCENT_2
- BACKGROUND_1
- BACKGROUND_2
- TEXT
- SOLID_BUTTON
- OUTLINE_BUTTON
securitySchemes:
bearer:
type: http
scheme: bearer
这为我在生成的类中提供了所需的 Java 枚举:
public enum ColorType {
ACCENT_1("ACCENT_1"),
ACCENT_2("ACCENT_2"),
BACKGROUND_1("BACKGROUND_1"),
BACKGROUND_2("BACKGROUND_2"),
TEXT("TEXT"),
SOLID_BUTTON("SOLID_BUTTON"),
OUTLINE_BUTTON("OUTLINE_BUTTON");
private String value;
ColorType(String value) {
this.value = value;
}
@Override
@JsonValue
public String toString() {
return String.valueOf(value);
}
@JsonCreator
public static ColorType fromValue(String value) {
for (ColorType b : ColorType.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}
一直在寻找一种获取 IllegalArgumentException 的方法,而不是从方法 fromValue 中返回“null”。 openapi 规范 v3.0.2 和 swagger-codegen-maven-plugin 版本:3.0.54 尚未成功。 我的情况可能缺少什么,有什么想法吗?