From c6e4d1aaf6e7e7f18d8749ac38206b6b684da598 Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Sat, 17 Nov 2018 13:13:00 +0100 Subject: [PATCH] Fix possible NPE in FunctionHandlerMapping Resolves #233 Happens when HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTES is null Can be seen when using spring-boot-starter-actuator with a scanned function The path is null because the request wrapped by the WebMvcMetricsFilter is unmodifiable, so setting the attribute in AbstractHandlerMethodMapping#handleMatch has no effect --- .../cloud/function/web/mvc/FunctionHandlerMapping.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/FunctionHandlerMapping.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/FunctionHandlerMapping.java index 74a3f312a..4a98e4b9c 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/FunctionHandlerMapping.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/mvc/FunctionHandlerMapping.java @@ -83,15 +83,15 @@ public class FunctionHandlerMapping extends RequestMappingHandlerMapping } String path = (String) request .getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); + if (path == null) { + return handler; + } if (StringUtils.hasText(prefix) && !path.startsWith(prefix)) { return null; } if (path.startsWith(prefix)) { path = path.substring(prefix.length()); } - if (path == null) { - return handler; - } Object function = findFunctionForGet(request, path); if (function != null) { if (logger.isDebugEnabled()) {