Skip to content

OpenAPI: Classのプロパティに配列が含まれている場合のスキーマ定義解析結果が想定外 - #2061

Merged
xsekiguchi merged 3 commits into
masterfrom
feature/2059-fix-openapi-array-property
May 17, 2026
Merged

OpenAPI: Classのプロパティに配列が含まれている場合のスキーマ定義解析結果が想定外#2061
xsekiguchi merged 3 commits into
masterfrom
feature/2059-fix-openapi-array-property

Conversation

@xsekiguchi

@xsekiguchi xsekiguchi commented May 15, 2026

Copy link
Copy Markdown
Contributor

closes #2059

対応内容

  • プロパティが配列になっている場合を考慮漏れ対応
  • 配列で Array, Collection 以外はありえないため、配列の場合のデッドコードを削除
  • リファクタリング:スロー例外をRuntimeException -> SystemExceptionに変更
  • リファクタリング:スキーマタイプ検出機能をプライベート内部クラスに抽出
  • リファクタリング:return を含む if/else の else を削除
  • リファクタリング:NPE発生抑止
  • リファクタリング:コメントの全体統制

動作確認・スクリーンショット(任意)

  • 変更前後でスキーマ構成のうち、Date型のプロパティが想定通り integer になっている
  • 不要なスキーマが作成されていない

レビュー観点・補足情報(任意)

  • 根本的な不具合としては、OpenApiComponentClassReusableSchemaFactory.java R200 から始まるプロパティのループ内で detector.isArray() が true の場合に、配列( Class#isArray() ) のパターンを考慮していなかったことです。
  • detector.isArray() のパターンは必ず配列になるので、Array 以外は List,Set などの Collection クラスとして判断しています。
  • これ以外の修正は Copilot の指摘によるリファクタリングを実施しています。

- プロパティが配列になっている場合を考慮漏れ対応
- 配列で Array, Collection 以外はありえないため、配列の場合のデッドコードを削除
- リファクタリング:スロー例外をRuntimeException -> SystemExceptionに変更
- リファクタリング:スキーマタイプ検出機能をプライベート内部クラスに抽出
- リファクタリング:return を含む if/else の else を削除
- リファクタリング:NPE発生抑止
- リファクタリング:コメントの全体統制

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

OpenAPI スキーマ生成で、クラスのプロパティが配列(T[])の場合に標準型解決が行われずスキーマが想定外(例: Date[]integer にならない)になる不具合を修正します。あわせて当該クラス・関連クラスへのリファクタリング(タイプ判定ロジックの内部クラス抽出、例外型変更、メソッド名の typo 修正、else 簡素化、コメント整理 等)を行っています。

Changes:

  • detector.isArray() 分岐で Class#isArray() の場合を getComponentType() 経由で処理し、配列要素の標準型解決/再利用スキーマ追加を共通メソッド updateArrayPropertySchema に集約
  • RuntimeExceptionSystemException に置換、配列分岐の判定ロジックを SchemaTypeDetector 内部クラスへ抽出、$defs キーを定数化、getDefsSchema の不正な $ref に対する事前チェックを追加
  • PropertyDescriptorParser のタイプミス(getPropertyDesctiptor*getPropertyDescriptor*)を修正

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
iplass-web/.../OpenApiComponentClassReusableSchemaFactory.java 配列プロパティの解析バグ修正、判定ロジックの内部クラス化、共通処理メソッドの抽出、例外/コメント整理
iplass-web/.../PropertyDescriptorParser.java メソッド名の typo 修正、SystemException への置換、JavaDoc 補足追加

- Array, Object の判定ロジックの処理コストを下げるために、個々の条件でreturnするように変更
- null 比較時に null を右辺に配置
@xsekiguchi
xsekiguchi merged commit ae3da12 into master May 17, 2026
4 checks passed
@xsekiguchi
xsekiguchi deleted the feature/2059-fix-openapi-array-property branch May 17, 2026 23:59
@xsekiguchi xsekiguchi changed the title OpenAPI: Classのプロパティに配列が含まれている場合の解析結果が想定外 OpenAPI: Classのプロパティに配列が含まれている場合のJsonSchema解析結果が想定外 May 20, 2026
@xsekiguchi xsekiguchi changed the title OpenAPI: Classのプロパティに配列が含まれている場合のJsonSchema解析結果が想定外 OpenAPI: Classのプロパティに配列が含まれている場合のスキーマ定義解析結果が想定外 May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OpenAPI: Classのプロパティに配列が含まれている場合のスキーマ定義解析結果が想定外

4 participants