From 73bd787c8db590bbde18082c6936d5d384c54c15 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 15 Feb 2021 17:53:12 +0100 Subject: [PATCH] GH-649 Ignire factory bean names during discovery of a function Resolves #649 --- .../function/context/catalog/SimpleFunctionRegistry.java | 3 ++- .../cloud/function/web/util/FunctionWebUtils.java | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java index 7ec7ced57..6ecea9b22 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java @@ -211,7 +211,8 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect .collect(Collectors.toList()); if (eligibleFunction.size() == 1 && !eligibleFunction.get(0).equals(functionDefinition) - && !functionDefinition.contains("|")) { + && !functionDefinition.contains("|") + && !eligibleFunction.get(0).startsWith("&")) { functionDefinition = eligibleFunction.get(0); } } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebUtils.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebUtils.java index 112d9ff62..c8b76cf04 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebUtils.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/util/FunctionWebUtils.java @@ -70,10 +70,10 @@ public final class FunctionWebUtils { Map attributes, String path, String[] acceptContentTypes) { path = path.startsWith("/") ? path.substring(1) : path; if (method.equals(HttpMethod.GET)) { - FunctionInvocationWrapper supplier = functionCatalog.lookup(path, acceptContentTypes); - if (supplier != null) { - attributes.put(WebRequestConstants.SUPPLIER, supplier); - return supplier; + FunctionInvocationWrapper function = functionCatalog.lookup(path, acceptContentTypes); + if (function != null && function.isSupplier()) { + attributes.put(WebRequestConstants.SUPPLIER, function); + return function; } }