parent
7fc12bc8a3
commit
9cb0a81e50
|
|
@ -106,12 +106,13 @@ public class JerseyEndpointResourceFactory {
|
|||
private static final List<Function<Object, Object>> bodyConverters;
|
||||
|
||||
static {
|
||||
bodyConverters = new ArrayList<>();
|
||||
bodyConverters.add(new ResourceBodyConverter());
|
||||
List<Function<Object, Object>> converters = new ArrayList<>();
|
||||
converters.add(new ResourceBodyConverter());
|
||||
if (ClassUtils.isPresent("reactor.core.publisher.Mono",
|
||||
EndpointInvokingInflector.class.getClassLoader())) {
|
||||
bodyConverters.add(new MonoBodyConverter());
|
||||
converters.add(new MonoBodyConverter());
|
||||
}
|
||||
bodyConverters = Collections.unmodifiableList(converters);
|
||||
}
|
||||
|
||||
private final OperationInvoker operationInvoker;
|
||||
|
|
@ -193,11 +194,8 @@ public class JerseyEndpointResourceFactory {
|
|||
}
|
||||
|
||||
private Object convertIfNecessary(Object body) throws IOException {
|
||||
if (body instanceof org.springframework.core.io.Resource) {
|
||||
return ((org.springframework.core.io.Resource) body).getInputStream();
|
||||
}
|
||||
if (body instanceof Mono) {
|
||||
return ((Mono<?>) body).block();
|
||||
for (Function<Object, Object> converter : bodyConverters) {
|
||||
body = converter.apply(body);
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import java.util.Map;
|
|||
|
||||
import org.reactivestreams.Publisher;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.core.publisher.MonoSink;
|
||||
import reactor.core.scheduler.Schedulers;
|
||||
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
|
|
@ -212,8 +213,7 @@ public class WebEndpointReactiveHandlerMapping extends RequestMappingInfoHandler
|
|||
return Mono.from(result).map(this::toResponseEntity)
|
||||
.onErrorReturn(ParameterMappingException.class,
|
||||
new ResponseEntity<>(HttpStatus.BAD_REQUEST))
|
||||
.defaultIfEmpty(
|
||||
new ResponseEntity<>(httpMethod == HttpMethod.GET
|
||||
.defaultIfEmpty(new ResponseEntity<>(httpMethod == HttpMethod.GET
|
||||
? HttpStatus.NOT_FOUND : HttpStatus.NO_CONTENT));
|
||||
}
|
||||
|
||||
|
|
@ -277,7 +277,11 @@ public class WebEndpointReactiveHandlerMapping extends RequestMappingInfoHandler
|
|||
@Override
|
||||
public Object invoke(Map<String, Object> arguments) {
|
||||
return Mono.create((sink) -> {
|
||||
Schedulers.elastic().schedule(() -> {
|
||||
Schedulers.elastic().schedule(() -> invoke(arguments, sink));
|
||||
});
|
||||
}
|
||||
|
||||
private void invoke(Map<String, Object> arguments, MonoSink<Object> sink) {
|
||||
try {
|
||||
Object result = this.delegate.invoke(arguments);
|
||||
sink.success(result);
|
||||
|
|
@ -285,8 +289,6 @@ public class WebEndpointReactiveHandlerMapping extends RequestMappingInfoHandler
|
|||
catch (Exception ex) {
|
||||
sink.error(ex);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue