Added unified OpenAPI generator extensions and broader client generation controls - #715
Draft
GoodforGod wants to merge 6 commits into
Draft
Added unified OpenAPI generator extensions and broader client generation controls#715GoodforGod wants to merge 6 commits into
GoodforGod wants to merge 6 commits into
Conversation
- Keep old per-client behavior via `clientConfigPrefix` - Log generated clients with their final `(configPath)`
… same OpenAPI model. The generated interface exposes common model fields plus a status-code accessor, so callers can handle grouped responses without switching over every concrete status response. Status accessor names are selected with collision fallback: statusCode, httpStatusCode, statusCodeMethod, httpStatusCodeMethod, then the same names with _ prefix. Also adds Java/Kotlin coverage with a same-response-model fixture, including renamed model lookup like Error -> ModelError.
…rget(TYPE)`. - Updated Java annotation processor and KSP to treat annotated components as default declarations. - Added Java and KSP conflict-resolution tests for: - default component usage without override - override by `@Component` - override by factory method - tag-specific override behavior - conditional component override
- Move enum JSON/request mappers into top-level @module factories - Restore richer OpenAPI javadocs for models, operations, and enums - Generate record with-methods and top-level mutable optional args - Add focused OpenAPI fixtures and regression tests
- Default mode is `BYTES`, generating `byte[]` / `ByteArray` for top-level bare object bodies. `RAW` mode generates HTTP body abstractions instead: `HttpBodyOutput` / `HttpBodyInput` depending on client/server direction. - Also keeps nested model `object` fields as `Object` / `Any`, adds HTTP body mappers, and covers Java/Kotlin client/server generation with bare object request/response tests.
…n controls.
- replace legacy `interceptor`/`annotation` options with `extensions`
- support `global/tag/operation` extension scopes
- add `additionalMethodAnnotations`, `additionalTypeAnnotations`, `model/enum` annotations via extensions
- add `interceptorType` / `interceptorTag`
- add %{configPath} substitution and serverConfigPrefix
- add `clientMapping.type` to override generated client response mapping annotations
- add `useSecurityDeclarationOrder`
- support anonymous OpenAPI `security {}`` and preserve anonymous access fallback
- use `401 Unauthorized` for auth fallback and not `403 Forbidden`
- add `clientResponseMode=SEALED | SUCCESSFUL`
- generate narrowed successful client return types in `SUCCESSFUL` mode
- generate typed per-operation client response exceptions
- generate ``*SuccessfulResponseMapper` operation mappers
- make generated response mappers `open / @DefaultComponent`
- simplify shared response interfaces by avoiding duplicated model-field passthrough methods
- pass `HttpHeaders` for raw/binary request and response body handling
- generate mutable top-level `optional args` classes for Java client methods
Test Results201 tests 201 ✅ 12m 47s ⏱️ Results for commit f371a29. ♻️ This comment has been updated with latest results. |
Dependency Vulnerability ReportFound Checked
|
Dependency Update ReportUpdate level: Found
|
GoodforGod
marked this pull request as draft
July 23, 2026 14:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add unified OpenAPI generator extensions and broader client generation controls.
interceptor/annotationoptions withextensionsglobal/tag/operationextension scopesadditionalMethodAnnotations,additionalTypeAnnotations,model/enumannotations via extensionsinterceptorType/interceptorTag%{configPath}substitution andserverConfigPrefixclientMapping.typeto override generated client response mapping annotationsuseSecurityDeclarationOrdersecurity {}and preserve anonymous access fallback401 Unauthorizedfor auth fallback and not403 ForbiddenclientResponseMode=SEALED | SUCCESSFULSUCCESSFULmode*SuccessfulResponseMapperoperation mappersopen / @DefaultComponentHttpHeadersfor raw/binary request and response body handlingoptional argsclasses for Java client methodsMerge after #714
Extensions:
Режим обработки HTTP-ответов
Текущий режим
Метод возвращает типизированную обёртку над всеми возможными HTTP-ответами:
Внутри
PetApiResponseнаходятся отдельные типы для каждого ожидаемого статуса:Новый режим если новый флаг Включен его
Метод возвращает непосредственно успешный результат:
При получении ошибочного HTTP-статуса, например
400,404или500, выбрасывается:PetsApiHttpClientResponseExceptionИз исключения можно получить:
statusCode;