Is your feature request related to a problem? Please describe.
When generating models, http clients interfaces and implementations with library: spring-http-interface, I've noticed 2 limitations:
- the generated
HttpInterfacesAbstractConfigurator only works with spring reactive WebClient implementation, which might not be flexible enough for users who want to generate non-reactive Spring Boot applications.
- the generated models seem to inherit the
Parameter annotation from JavaSpring/paramDoc.mustache which leads to compile errors, since the io.swagger.v3.oas.annotations.Parameter is not imported in the generated API clients
Describe the solution you'd like
- Introduce the
springHttpClientAdapter additional option for the spring-http-interface library
- 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 so that the generated client classes methods are no longer annotated with theio.swagger.v3.oas.annotations.Parameter
Describe alternatives you've considered
Tried generating with documentationProvider : 'none' additional property, but that seems to be the default anyway when using library: spring-http-interface and still getting that Parameter annotation on request body methods' parameters
Another possible approach to address the flexibility-factor with regards to specific Spring client implementation would be to inject a HttpServiceProxyFactory instance in the generated HttpInterfacesAbstractConfigurator, rather than a WebClient, RestClient, or RestTemplate, as specified by the proposed springHttpClientAdapter additional property.
E.g. the generated HttpInterfacesAbstractConfigurator would look like this:
public abstract class HttpInterfacesAbstractConfigurator {
private final HttpServiceProxyFactory httpServiceProxyFactory;
public HttpInterfacesAbstractConfigurator(final HttpServiceProxyFactory httpServiceProxyFactory) {
this.httpServiceProxyFactory = httpServiceProxyFactory;
}
@Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.sample")
SampleApi sampleHttpProxy() {
return httpServiceProxyFactory.createClient(SampleApi.class);
}
}
Additional context
Solution proposal: #19710
Is your feature request related to a problem? Please describe.
When generating models, http clients interfaces and implementations with
library: spring-http-interface, I've noticed 2 limitations:HttpInterfacesAbstractConfiguratoronly works with spring reactiveWebClientimplementation, which might not be flexible enough for users who want to generate non-reactive Spring Boot applications.Parameterannotation fromJavaSpring/paramDoc.mustachewhich leads to compile errors, since theio.swagger.v3.oas.annotations.Parameteris not imported in the generated API clientsDescribe the solution you'd like
springHttpClientAdapteradditional option for thespring-http-interfacelibraryspring-http-interface-specific emptyparamDoc.mustacheso that the generated client classes methods are no longer annotated with theio.swagger.v3.oas.annotations.ParameterDescribe alternatives you've considered
Tried generating with
documentationProvider : 'none'additional property, but that seems to be the default anyway when usinglibrary: spring-http-interfaceand still getting thatParameterannotation on request body methods' parametersAnother possible approach to address the flexibility-factor with regards to specific Spring client implementation would be to inject a
HttpServiceProxyFactoryinstance in the generatedHttpInterfacesAbstractConfigurator, rather than aWebClient,RestClient, orRestTemplate, as specified by the proposedspringHttpClientAdapteradditional property.E.g. the generated
HttpInterfacesAbstractConfiguratorwould look like this:Additional context
Solution proposal: #19710