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;

Reply via email to