From 56b026597b0be22bc5d8fca274d754d886304f5a Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 10 Jun 2020 19:44:27 +0200 Subject: [PATCH] GH-500 Fix NPE in FunctionEndpointInitializer This ensures that posting to the consumer does not result in NPE given that there is no body Resolves #500 --- .../function/web/function/FunctionEndpointInitializer.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java index d528c49d6..9a98d60e9 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/function/FunctionEndpointInitializer.java @@ -240,13 +240,12 @@ class FunctionEndpointFactory { .flatMap(content -> this.processor.post(wrapper, content, false)); return stream.flatMap(entity -> { return status(entity.getStatusCode()).headers(headers -> headers.addAll(entity.getHeaders())) - .body(Mono.just((T) entity.getBody()), outputType); + .body(entity.hasBody() ? Mono.just((T) entity.getBody()) : Mono.empty(), outputType); }); }) .andRoute(GET("/**"), request -> { Object functionComponent = extract(request); Class outputType = (Class) this.inspector.getOutputType(functionComponent); -// if (functionComponent instanceof Supplier) { if (((FunctionInvocationWrapper) functionComponent).isSupplier()) { Supplier> supplier = (Supplier>) functionComponent; FunctionWrapper wrapper = RequestProcessor.wrapper(null, null, supplier);