This is an automated email from the ASF dual-hosted git repository. ggrzybek pushed a commit to branch camel-2.25.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.25.x by this push: new 5458c38 [CAMEL-15061] Do not store null values in ConcurrentHashMap 5458c38 is described below commit 5458c38b00093884d3d4f783948beedd0b5909a9 Author: Grzegorz Grzybek <gr.grzy...@gmail.com> AuthorDate: Thu May 14 14:49:02 2020 +0200 [CAMEL-15061] Do not store null values in ConcurrentHashMap --- .../java/org/apache/camel/impl/DefaultFactoryFinder.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java index d8721dd..f301c0f 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultFactoryFinder.java @@ -40,7 +40,8 @@ import org.apache.camel.util.IOHelper; public class DefaultFactoryFinder implements FactoryFinder { private final ConcurrentMap<String, Class<?>> classMap = new ConcurrentHashMap<>(); - private final ConcurrentMap<String, Exception> classesNotFound = new ConcurrentHashMap<>(); + private final ConcurrentMap<String, Boolean> classesNotFound = new ConcurrentHashMap<>(); + private final ConcurrentMap<String, Exception> classesNotFoundExceptions = new ConcurrentHashMap<>(); private final ClassResolver classResolver; private final String path; @@ -167,8 +168,8 @@ public class DefaultFactoryFinder implements FactoryFinder { */ protected Class<?> addToClassMap(String key, ClassSupplier mappingFunction) throws ClassNotFoundException, IOException { try { - if (classesNotFound.containsKey(key)) { - Exception e = classesNotFound.get(key); + if (classesNotFoundExceptions.containsKey(key) || classesNotFound.containsKey(key)) { + Exception e = classesNotFoundExceptions.get(key); if (e == null) { return null; } else { @@ -182,10 +183,10 @@ public class DefaultFactoryFinder implements FactoryFinder { try { return mappingFunction.get(); } catch (ClassNotFoundException e) { - classesNotFound.put(key, e); + classesNotFoundExceptions.put(key, e); throw new WrappedRuntimeException(e); } catch (NoFactoryAvailableException e) { - classesNotFound.put(key, e); + classesNotFoundExceptions.put(key, e); throw new WrappedRuntimeException(e); } catch (IOException e) { throw new WrappedRuntimeException(e); @@ -195,7 +196,7 @@ public class DefaultFactoryFinder implements FactoryFinder { if (suppliedClass == null) { // mark the key as non-resolvable to prevent pointless searching - classesNotFound.put(key, null); + classesNotFound.put(key, Boolean.TRUE); } return suppliedClass;