From 57c05970e563f6c232d192a1da0cff906bf24cdc Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 24 Apr 2018 10:23:22 +0100 Subject: [PATCH] Use concurrent hash map in function catalog --- .../ContextFunctionCatalogAutoConfiguration.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java index 0f8bf69a0..d0a031dbb 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/ContextFunctionCatalogAutoConfiguration.java @@ -32,6 +32,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; @@ -172,11 +173,11 @@ public class ContextFunctionCatalogAutoConfiguration { @Component protected static class ContextFunctionRegistry { - private Map suppliers = new HashMap<>(); + private Map suppliers = new ConcurrentHashMap<>(); - private Map functions = new HashMap<>(); + private Map functions = new ConcurrentHashMap<>(); - private Map consumers = new HashMap<>(); + private Map consumers = new ConcurrentHashMap<>(); @Autowired(required = false) private ApplicationEventPublisher publisher; @@ -184,16 +185,16 @@ public class ContextFunctionCatalogAutoConfiguration { @Autowired private ConfigurableListableBeanFactory registry; - private Map names = new HashMap<>(); + private Map names = new ConcurrentHashMap<>(); - private Map types = new HashMap<>(); + private Map types = new ConcurrentHashMap<>(); public Set getSuppliers() { return this.suppliers.keySet(); } public FunctionRegistration getRegistration(Object function) { - if (!names.containsKey(function)) { + if (function == null || !names.containsKey(function)) { return null; } return new FunctionRegistration<>(function).name(names.get(function))