-
-
Notifications
You must be signed in to change notification settings - Fork 537
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Hi,
Springdoc fails to generate the response schema for spring boot controller methods with Callable. (spring boot async support using Callable docs)
For example the controller method:
@RequestMapping(value = "/tasks", method = RequestMethod.GET)
private Callable<ResponseEntity<Page<TaskDTO>>> getTasks(
@RequestParam(required = false) Predicate predicate,
Pageable pageable) {
return () -> {
Page<TaskDTO> fetchResult = fetchService.getTasks(pageable, predicate);
return new ResponseEntity<>(fetchResult);
};
}
I was able to work around it by overriding the calculateSchemaFromParameterizedType
method in the ResponseBuilder
class, like this:
@ComponentScan(basePackages = {"org.springdoc.core"})
@Configuration
public class SpringDocConfig {
private final OperationBuilder builder;
public SpringDocConfig(OperationBuilder builder) {
this.builder = builder;
}
@Bean
public ResponseBuilder responseBuilder(){
return new ResponseBuilderWithCallableHandling(builder);
}
public class ResponseBuilderWithCallableHandling extends ResponseBuilder{
ResponseBuilderWithCallableHandling(OperationBuilder operationBuilder) {
super(operationBuilder);
}
@Override
protected Schema calculateSchemaFromParameterizedType(Components components, ParameterizedType parameterizedType, JsonView jsonView) {
Schema<?> schemaN = null;
if (Callable.class.getName().contentEquals(parameterizedType.getRawType().getTypeName())) {
Type type = parameterizedType.getActualTypeArguments()[0];
if(type instanceof ParameterizedType){
schemaN = super.calculateSchemaFromParameterizedType(components, (ParameterizedType)type, jsonView);
}else {
schemaN = this.calculateSchemaParameterizedType(components, parameterizedType, jsonView);
}
}else {
schemaN = super.calculateSchemaFromParameterizedType(components, parameterizedType, jsonView);
}
return schemaN;
}
}
}
It would be great if you could add support for Callable in future releases.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request