Commit Graph

70 Commits

Author SHA1 Message Date
Ionut Baranga
ed0e03169f spring-http-interface: introduce springHttpClientAdapter, fix paramDoc.mustache (#19710)
* spring-http-interface: introduce `springHttpClientAdapter`, fix `paramDoc.mustache`

---
### What
- Introduce `springHttpClientAdapter` for `spring-http-interface`
  - This property is used for selecting HTTP client implementation in Spring HTTP interfaces, with separate templates for each client configuration
- Added an `spring-http-interface`-specific **empty** `paramDoc.mustache`
---

### Why
- Enable selecting different HTTP client implementations when generating Spring HTTP client interfaces
- Provides additional flexibility for users who want to generate non-reactive Spring Boot applications.
---

### How
- `springHttpClientAdapter`: Allows users to choose between different HTTP client implementations used in `HttpInterfacesAbstractConfigurator`:
  - `web-client` (set by default, to ensure **backward compatibility**)
  - `rest-client`
  - `rest-template`
- Separate templates for each `HttpInterfacesAbstractConfigurator` implementation:
  - `httpInterfacesRestClientConfiguration.mustache`
  - `httpInterfacesRestTemplateConfiguration.mustache`
  - `httpInterfacesWebClientConfiguration.mustache`
- Log warning for configuration mismatch
  - When `reactive: false` is used in combination with the reactive `web-client`, it warns users of potential configuration mismatches, and suggests switching to `rest-template` or `rest-client` for non-reactive configurations.
- Remove unnecessary paramDoc
  - Added an `spring-http-interface`-specific **empty** `paramDoc.mustache` in `JavaSpring/libraries/spring-http-interface/paramDoc.mustache`
  - This prevents inheriting the `@Parameter` annotations from the default Spring template located at `JavaSpring/paramDoc.mustache`.
  - Otherwise, the generated code includes `@Parameter` annotations on request body parameters, which were causing compile errors due to missing imports

---

### Testing Done

- **Manual testing**: Verified that the generated code uses `WebClient`, `RestTemplate`, or `RestClient` based on the value of the `springHttpClientAdapter` property.
- **Tested different configurations**:
   - **`reactive: false` & `web-client`**: Logs a warning, suggesting the use of `rest-client` or `rest-template`.
   - **`springHttpClientAdapter: rest-template`**: Generates code with `RestTemplateAdapter` using the `httpInterfacesRestTemplateConfiguration.mustache`.
   - **`springHttpClientAdapter: web-client` (default)**: Generates code using `WebClientAdapter` from `httpInterfacesWebClientConfiguration.mustache` and ensures backward compatibility.
- **Tested `paramDoc.mustache` change**: Verified that the empty `paramDoc.mustache` prevents the generation of `@Parameter` annotations on request body parameters and resolves the compile errors caused by missing imports.

---

### PR checklist

- [ ] Read the [contribution guidelines](https://github.com/openapitools/openapi-generator/blob/master/CONTRIBUTING.md).
- [ ] Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
- [ ] Run the following to [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) and update samples:
  ```
  ./mvnw clean package
  ./bin/generate-samples.sh ./bin/configs/*.yaml
  ./bin/utils/export_docs_generators.sh
  ```
  (For Windows users, please run the script in [Git BASH](https://gitforwindows.org/))
  Commit all changed files.
  This is important, as CI jobs will verify _all_ generator outputs of your HEAD commit as it would merge with master.
  These must match the expectations made by your contribution.
  You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/configs/java*`.
  IMPORTANT: Do **NOT** purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (upcoming `7.x.0` minor release - breaking changes with fallbacks), `8.0.x` (breaking changes without fallbacks)
- [ ] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.

* fix imports

* Update SpringCodegen.java

* fix docs and default value

* fix docs and default value

* revert to HttpServiceProxyFactory.builder for backward compatibility

* spring-http-interface: introduce `useHttpServiceProxyFactoryInterfacesConfiguration` config

* spring-http-interface: introduce `useHttpServiceProxyFactoryInterfacesConfigurator` config

* spring-http-interface: introduce `useHttpServiceProxyFactoryInterfacesConfigurator` config

* spring-http-interface: fix generated files

* remove unnecessary imports from httpServiceProxyFactoryInterfacesConfigurator.mustache and parentOverrides from spring-http-interface-useHttpServiceProxyFactoryInterfacesConfiguration.yaml

* remove unnecessary paramDoc.mustache, update `useHttpServiceProxyFactoryInterfacesConfigurator` parameter docs of `spring-http-interface` library

* [java][spring] Spring HTTP Interface library: Validate Spring Boot version (3 or 4) and fail early if unsupported

* Set `useSpringBoot3: "true"` for all sample configs using `library: spring-http-interface`

* Regenerate samples using `library: spring-http-interface`

* Update "spring-http-interface" docs "Spring 6 HTTP interfaces (testing)" -> "Spring 6 HTTP interfaces (testing). Requires Spring Boot 3 or 4." in java-camel.md and spring.md

---------

Co-authored-by: Bragolgirith <6455473+Bragolgirith@users.noreply.github.com>
2026-03-15 14:43:31 +08:00
William Cheng
9afa74a3cb [spring] Add an option "additionalNotNullAnnotations" to include additional NotNull annotations (#23096)
* add option additionalNotNullAnnotations

* update samples, docs

* add tests for option

* fix github workflow

* fix path

* remove
2026-03-03 16:18:41 +08:00
Jachym Metlicka
e5d40f4258 [java-spring] - add 'includeHttpRequestContext' additional property defaulting to "true" for reactive and "false" for blocking to include ServerWebExchange/HttpServletRequest (#22910)
* add includeHttpRequestContext additional property defaulting to "true" for reactive and "false" for blocking. Implement tests and add samples to check compilation success.

* generate sample files

* fix template

* fix template

* fix template

* update docs

* fix imports

* fix codegen

* fix codegen and update samples

* improve unit tests

* generate also delegate

* update samples

* update samples

* updated files
2026-02-24 08:19:58 +08:00
Benjamin Einaudi
5a70edb063 feature(jackson3) add jackson3 support for spring generator (#22854)
* add 'useJackson3' option
* add 'useSpringBoot4' option
* add support for RestClient in spring-http-interfaces
* add 'jacksonPackage' template variable set from useJackson3 option

See #22294
2026-02-15 14:26:29 +08:00
Jachym Metlicka
3ecb49060e [JAVA-SPRING;KOTLIN-SPRING] - add possibility to override x-implements and x-kotlin-implements via config options. (#22839)
* feature/add-skip-x-implements

* feature/add-skip-x-implements

* feature/add-x-implements-overrides support in tooling

* add basic unit test for x-implements and x-implements-overrides

* add implementation and unit test for schemaImplements

* add "java.io.Serializable" directly via x-kotlin-implements

* add schemaImplements and schemaImplementsFields support to kotlin-spring

* add xImplementsSkip additional property

* add xKotlinImplementsSkip and xKotlinImplementsFieldsSkip additional properties

* add unit tests

* add documentation

* commit changes and add missing interface

* add documentation

* add output to samples

* change logs

* fix issue #22756

* revert unrelated formatting changes

* nudge test rerun

* implement feedback from CR

* check compilation success

* fix interfaces
2026-02-04 15:57:00 +08:00
dersvenhesse
7c5f7cf4e5 docs: update useSpringBoot3 note (#22881)
* docs: update useSpringBoot3 note

* chore: moved changes to code classes

* docs: add generated docs

* docs: update java-camel

* docs: ecape ≥
2026-02-03 13:08:48 +08:00
William Cheng
7506b6ca02 add defaultToEmptyContainer option to java generators (#22869) 2026-02-02 00:27:01 +08:00
Daniel
502565b317 [java][jackson] fix: conditionally add jackson JsonIgnoreProperties for base class polymorphism fixes #12777 #22527 (#22528)
* fix: conditionally add jackson JsonIgnoreProperties for base class polymorphism

* fix: rename flag

* fix: rename flag

* fix: remove newline

* fix: regenerate example models

* fix: regenerate
2026-01-19 16:57:38 +08:00
Sven Allers
e7dae1a81e Custom error messages for size, length, min & max validations in Spring & Spring-Kotlin (#22090)
* Custom error messages for size, length, min & max validations in Spring & Spring-Kotlin

* Run scripts
2025-10-19 21:25:03 +08:00
jpfinne
d7b79a26c6 [Spring] add support for api versioning. Fix #22027 (#22028)
* Add spring api versioning support

* Do not add version if not requested

* Fix duplicate VendorExtensions

* Improve description

* Fix removal of RequestMapping version attribute if x-spring-api-version: '' is set at the operation level
2025-10-03 19:59:38 +08:00
jpfinne
7e9b9615db [Java] [Spring] Use deduction configOptions for oneOfInterfaces (#20919)
* fix(java): x-discriminator-value should not produce @JsonTypeName

* fix(java): Remove unused getDiscriminatorValue()

* build at Fednot

* build at Fednot

* build at Fednot: skip sonar

* scm for release at fednot

* build fednot not 7.5.0-FEDNOT-SNAPSHOT

* build fednot not 7.5.0-FEDNOT-SNAPSHOT

* test all vars

* rollback custom pom.xml

* commit master

* commit test

* Samples for deduction

* add files  for deduction

* small improvements

* Merge changes from martin-mfg
Merge master

* Merge changes from martin-mfg
Merge master

* Merge changes from martin-mfg
Add comment to force rebuild

* Merge master

* regenerate doc

* regenerate client

* regenerate client

---------

Co-authored-by: Jean-Paul Finne <jean-paul.finne@fednot.be>
Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com>
2025-09-21 23:22:39 +08:00
Yannick Pfaff
e1447bc3dc docs(spring): fix discriminator property defaults (#21767) 2025-08-27 16:15:22 +08:00
Samuel Gulliksson
65773a9024 [JavaSpring] Allow configuring generic ResponseEntity for Spring generator. (#21387)
* Allow configuring generic ResponseEntity for Spring generator.

* Re-run documentation update script.
2025-07-02 18:16:57 +08:00
Lucas Reeh
f656afcde3 Add original enumPropertyNamingType config for java enum generation (#20824) 2025-04-27 15:00:51 +08:00
30p87
ee7927a525 [Java][Spring] remove 'size', 'page' and 'sort' query params if using 'x-spring-paginated' (#8315) (#21016)
* [Java][Spring] remove 'size', 'page' and 'sort' query params if using 'x-spring-paginated' (#8315)

* Properly implement samples, fixing build issues

---------

Co-authored-by: Tobias Fischer <t.fischer@goldflam.de>
2025-04-23 15:47:17 +08:00
Pavel
868074212a [Java] Extend JavaSpring apiClient.mustache with option to override contextId for FeignClient (#20943) 2025-03-22 11:36:30 +08:00
takashno
6e3b1996ed [java][spring] add useSpringBuiltInValidation option to disable @Validated at class level (fix #20899) (#20901)
* [java][spring] add useSpringBuiltInValidation option to disable @Validated at class level (fix #20899)

* Add sample and github workflow maintenance.
2025-03-20 17:41:02 +08:00
William Cheng
1c3eade94d [java][spring] Add option optionalAcceptNullable to accept null values (#20746)
* add option to rollback accept null values

* update doc

* update tests
2025-02-27 17:21:51 +08:00
Alex
cd7cdb1e24 Add option to generate a fully sealed model in the JavaSpring generator (#20503)
* Generated sealed interfaces for oneOf

* Add generated data

* Add also  modifier

* Allow sealed for everything

* Fully seal model

* Disable html escaping

* Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java

Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com>

* Update docs

* Check all oneOf scenarios

* Fix failed scenario

* Fix comments

* Remove unused import

* Adapt pom.xml also

* Add comment and remove unused function

---------

Co-authored-by: martin-mfg <2026226+martin-mfg@users.noreply.github.com>
2025-02-19 15:15:09 +08:00
DielN
b9f6fe6b1f [Java] [Microprofile] Add Json-B polymorphism type info annotations (#20164)
* [Microprofile] Add Json-B polymorphism annotations

* [Microprofile] Set openApiNullable in configs to false

* [Microprofile] Bump JSON Bind version to 3.0

* [Microprofile] Only apply JSON-B polymorphism for MP 3.0

* Update samples

* [Microprofile] Update documentation/configs for openApiNullable

* Update docs
2024-12-03 12:02:54 +08:00
William Cheng
711e53a90c [Java] Add option to fallback to legacy enum naming (#20172)
* add option to fallback legacy enum naming (java)

* fix tests
2024-11-29 17:12:12 +08:00
Rodrigo de Almeida - RMA3
21d3cfe924 Fix Issue 18224 - Load x-field-extra-annotation in the operation parameter (#18967)
* fix issue 18959

* fix issue 18224

* fix issue 18224

* fix spaces

---------

Co-authored-by: Rodrigo Maciel de Almeida <rodrigo.almeida@wefin.com.br>
2024-06-30 16:27:14 +08:00
Rodrigo de Almeida - RMA3
5532203f9f fix issue 18959 (#18962)
Co-authored-by: Rodrigo Maciel de Almeida <rodrigo.almeida@wefin.com.br>
2024-06-24 16:58:02 +08:00
William Cheng
51ef8683fb [java] implement #18032 add builder pattern to java client and spring generator (#18650)
* add builder pattern to java client and spring generator

* regenerate samples

* update doc

---------

Co-authored-by: jpfinne <jeanpaul@finne.be>
2024-05-14 11:38:30 +08:00
William Cheng
2a1b4f90df Add new option allArgConstructor for java client, spring generators (#18538)
* allArgConstructor for java

* Remove leftover from builder pattern branch

* Rename generateConstructorWithAllArgs and use x- in vendorExtensions

* Test issue #18340

* Add evidences for allVars issue (#18340)

* remove eol

* update doc

---------

Co-authored-by: jpfinne <jeanpaul@finne.be>
2024-05-01 18:10:35 +08:00
William Cheng
b2a7f435c8 "==" enum value generates "_" in Java which is invalid since Java 9 (#18338)
* #17276 "==" enum value generates "_" in Java which is invalid since Java 9

* update doc

---------

Co-authored-by: Julien BÉTI <jbeti@cosium.com>
2024-04-09 12:21:54 +08:00
martin-mfg
aad345f0bd expand documentation for option "artifactVersion" (#17845)
* update documentation strings

* re-generate docs
2024-02-13 16:18:05 +08:00
Tiffany Marrel
42f72192ca add security feature AWSV4Signature to documentation (#15603) 2023-12-13 15:07:18 +08:00
William Cheng
70bffffc5a remove option, update doc (#16592) 2023-09-15 15:01:21 +08:00
prashant-pant
4b87606665 Autoset constants (Required fields having single valid enum value) Java (OkHttp) Implementation of #16547 (#16550)
* Autosets the parameters with the only value specified as enum if the parameter is also marked as required

* Autosets the parameters with the only value specified as enum if the parameter is also marked as required

* Autosets the parameters with the only value specified as enum if the parameter is also marked as required for Java default client.

* Autosets the parameters with the only value specified as enum if the parameter is also marked as required for Java default client.

* Autosets the parameters with the only value specified as enum if the parameter is also marked as required for Java default client.

* Autosets the parameters with the only value specified as enum if the parameter is also marked as required for Java default client.
2023-09-15 14:41:17 +08:00
Rodrigo de Almeida - RMA3
d955ff6988 Add annotations to the operation - case permission validation - Fix 12219 15822 (#16259)
* fix #12219 #15822

* add test with array

* update samples

---------

Co-authored-by: Rodrigo Maciel de Almeida <rodrigo.almeida@wefin.com.br>
2023-08-09 17:21:57 +03:00
William Cheng
6a8039c672 update doc 2023-08-09 14:38:56 +08:00
Dennis Melzer
e77f9ea783 Add new OAuth2RequestInterceptor to remove deprecated open feign classes (#16011)
* Add new OAuth2RequestInterceptor to remove deprecated open feign classes

* Add override

* Add version

* Add older version

* Update docs

* Fix issue with multiple security schemes

* Move cli option to spring code gen

* Fix documentation options

* Remove resource folder

* Fix duplicate annotation

* Add an enable flag

* Remove generator setting

* Revert codgen changes

* Revert config generator changes
2023-07-13 08:35:39 +08:00
martin-mfg
ad5cc827f0 remove fullJavaUtil (#15033) 2023-05-22 14:40:35 +08:00
Tiffany Marrel
00676870a3 add HTTP signature to SecurityFeature (#15542) 2023-05-17 00:48:58 +08:00
Rodrigo de Almeida - RMA3
e07069731d [JAVA] Enumeration comparison in Java using equalsIgnoreCase when String - Fix issue 8084 (#15273)
* fix issue 8084

* add config

* add config

---------

Co-authored-by: Rodrigo Maciel de Almeida <rodrigo.almeida@wefin.com.br>
2023-04-28 17:27:41 +03:00
Matheus Teles
33e0c6775f Update beanValidationCore.mustache (#13631) (fix #3519)
* Update beanValidationCore.mustache

Update to use x-pattern-message for message customization

* Update spring.md

Update this page adding documentation for x-pattern-message

* added unit test
meet requested corrections

* build the project

* remove space

---------

Co-authored-by: Rodrigo de Almeida - RMA3 <rodrigo.ma3@gmail.com>
Co-authored-by: Rodrigo Maciel de Almeida <rodrigo.almeida@wefin.com.br>
2023-04-21 10:08:27 +03:00
Robbert van Waveren
8a426b2f4a allow to specify the useOneOfInterfaces option for java (#15042) 2023-04-12 15:21:34 +03:00
William Cheng
88da3649b2 [csharp-netcore] Add option skip generating getter for sub-schemas (#15007)
* add option skip generating getter for sub-schemas

* fix openapi-yaml

* update samples

* update samples
2023-03-21 22:41:29 +08:00
Riccardo Cardin
e626b43e27 Added a property to the Spring generator to avoid the use of the ResponseEntity type (#11537)
* Added the useResponseEntity additional parameter for Spring generator

* Changed the mustache templates using the new useResponseEntity property

* Added the new property to the documentation

* Merging with remote master

* #11537 Added missing configuration for the delegate pattern case

* #11537 Added autogenerated @ResponseStatus on Spring methods

* #11537 Fixed borsch comments

* #11537 Added the default 200 HTTP Status for empty response HTTP code

* [Java][Spring] useResponseEntity sample + remove blank line

* [Java][Spring] useResponseEntity sample + remove blank line

* [Java][Spring] useResponseEntity sample + remove blank line

---------

Co-authored-by: Oleh Kurpiak <oleh.kurpiak@gmail.com>
2023-03-16 14:00:10 +02:00
Oleh Kurpiak
bda2501455 [Java][Spring] option whether to generate required args constructor (#14941) (fix #14934) 2023-03-14 10:39:58 +02:00
Oleh Kurpiak
ca3e8be1bc [Java][Spring] version parameter (#14847) 2023-03-02 13:29:01 +02:00
William Cheng
fd45b74128 [Java] better default value handling (#14130)
* add test for array default value

* update null return

* minor fixes

* move default value tests to echo api spec

* add new files

* remove unused files

* fix enum array default, add tests

* better array init

* Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Co-authored-by: Leonard Brünings <lord_damokles@gmx.net>

* Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Co-authored-by: Leonard Brünings <lord_damokles@gmx.net>

* revert the fix

* improve default value handling

* update native samples, add tests

* update samples

* fix tests

* use conditional test for timezone

* add tests to apache http client echo api

* add option to default container to null

* fix map default value

* minor refactoring

* update samples

* fix javadoc

* fix pom.xml

* add tests in java native echo client

* add java apache client echo tests

* fix test

* fix test

---------

Co-authored-by: Leonard Brünings <lord_damokles@gmx.net>
2023-01-30 20:19:00 +08:00
Oleh Kurpiak
28493dfa95 [Spring] Spring HTTP Interface library (#14485) 2023-01-30 10:37:00 +02:00
Paul Parenko
c2c91e2d2e [Java][Spring] Fix #14362 when useSpringBoot3=true, then useJakartaEe=true (#14373) 2023-01-12 19:54:42 +08:00
Paul Parenko
456cca1a28 [Java] Fix #14276 Java Templates uses jakarta or javax package if useJakartaEe is enabled (#14343)
* Fix #14276 Java Templates uses jakarta or javax package if useJakartaEe
is true

* generated samples after useJakartaEe changes

* generated docs after useJakartaEe changes
2023-01-02 16:28:44 +08:00
Oleh Kurpiak
7c587ce061 [Java] configurable Javax/Jakarta package (#14310) 2022-12-30 22:33:55 +08:00
Oleh Kurpiak
95b566a3a9 [Java] fix additional annotations for oneOf interfaces (#13958) 2022-11-20 12:44:47 +08:00
Nathan Baulch
9f1fa0e440 Fix another batch of spelling typos (#13915)
* Fix typos

* Remove repeated words

* Minor grammar fixes
2022-11-07 21:30:24 +08:00
cachescrubber
b54299fffa Spring request mapping mode (#13838)
* Introduce RequestMappingMode option

* generate docs

* Add test case using interfaceOnly

* Generate Samples

* Add requestMappingMode: iface to bin/configs/spring-boot-oas3.yaml

* Restore #12250: Move Feign Client url parameter under condition.

* Rename iface to api_interface.
2022-11-01 09:44:01 +08:00