[JAVA] Enum field with default generated incorrectly
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 45/100
調査の方向性
リンクされている openapi.json から始め、示されている swagger-codegen-cli の Java 生成コマンドを使って問題を再現します。生成された Java クラスで Task モデルの status のデフォルト値がどのように出力されるかを追跡し、その後、生成されたコードが TaskStatus enum 定数を使用し、正常にコンパイルできることを確認します。
索引モデルが issue の本文から書いたものです。
説明
Description
I have a fastapi defined interface with a enum (TaskStatus) and a structure (Task) containing an instance of that enum with a default.
I extract the openapi.json from the running fastapi using wget.
Then I generate the Java client code using swagger codegen.
The enum is generated just fine, but the default value in the object is missing the Enum type. I'm wondering if I'm missing something I need to add to the fastapi main.py or the generated openapi.json.
main.py:
from typing import Union
from enum import Enum
from pydantic import BaseModel
from fastapi import FastAPI
app = FastAPI()
class TaskStatus(str,Enum):
NIL = "NIL"
NOT_APPROVED = "NOT_APPROVED"
NOT_READY = "NOT_READY"
NOT_ASSIGNED = "NOT_ASSIGNED"
PENDING = "PENDING"
EXECUTING = "EXECUTING"
DONE = "DONE"
class Task(BaseModel):
'''Base class for tasks'''
task_id: int = -1
'''ID of the task'''
status: TaskStatus = TaskStatus.NOT_ASSIGNED
'''Status of task to be tracked throughout runtime'''
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/task/{task_id}")
def read_task(task_id: int ) -> Task:
task = Task( id = task_id )
return task
generated java enum:
public enum TaskStatus {
NIL("NIL"),
NOT_APPROVED("NOT_APPROVED"),
NOT_READY("NOT_READY"),
NOT_ASSIGNED("NOT_ASSIGNED"),
PENDING("PENDING"),
EXECUTING("EXECUTING"),
DONE("DONE");
INVALID generated java Task class - enum default value should be TaskStatus.NOT_ASSIGNED:
public class Task {
@JsonProperty("task_id")
private Object taskId = -1;
@JsonProperty("status")
private TaskStatus status = NOT_ASSIGNED;
Swagger-codegen version
swagger-codegen-cli-3.0.61.jar
Swagger declaration file content or url
snip:
{
....
"/task/{task_id}": {
"get": {
"summary": "Read Task",
"operationId": "read_task_task__task_id__get",
"parameters": [{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"title": "Task Id"
}
}
],
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Task"
}
...
},
"components": {
"schemas": {
...
"Task": {
"properties": {
"task_id": {
"type": "integer",
"title": "Task Id",
"default": -1
},
"status": {
"$ref": "#/components/schemas/TaskStatus",
"default": "NOT_ASSIGNED"
}
},
"type": "object",
"title": "Task",
"description": "Base class for tasks"
},
"TaskStatus": {
"type": "string",
"enum": ["NIL", "NOT_APPROVED", "NOT_READY", "NOT_ASSIGNED", "PENDING", "EXECUTING", "DONE"],
"title": "TaskStatus"
},
Command line used for generation
wget http://127.0.0.1:8000/openapi.json
java -jar swagger-codegen-cli-3.0.61.jar generate -l java -i openapi.json -Dlibrary=jersey1,hideGenerationTimestamp=true -o java-jersey1
Steps to reproduce
regenerate the code with the linked openapi.json
Maybe I'm missing something somewhere?
- 主要言語
- Mustache
- スター
- 17.8k
- フォーク
- 6k
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
swagger-api/swagger-codegen のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
swagger-api/swagger-codegen#12755 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
swagger-api/swagger-codegen#12445 ·
-
security vulnerability
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
swagger-api/swagger-codegen#11942 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
swagger-api/swagger-codegen#11812 · リアクション 1 件 ·
-
security vulnerability
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
swagger-api/swagger-codegen#11594 ·
swagger-api/swagger-codegen の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
area/profiles comp/cli comp/dashboard P2 sweeper:risk-session-state type/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
NousResearch/hermes-agent#122365 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
vllm-project/production-stack#1105 ·
-
bug priority:low
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
CyberAgent/psd2svg#430 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100