Author: rotty3000
Date: Mon Apr 30 16:15:29 2018
New Revision: 1830597

URL: http://svn.apache.org/viewvc?rev=1830597&view=rev
Log:
[CDI] fix concurrent modification error on Java 10

Signed-off-by: Raymond Auge <[email protected]>

Modified:
    
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/DTOs.java

Modified: 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/DTOs.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/DTOs.java?rev=1830597&r1=1830596&r2=1830597&view=diff
==============================================================================
--- 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/DTOs.java
 (original)
+++ 
aries/trunk/cdi/cdi-extender/src/main/java/org/apache/aries/cdi/container/internal/util/DTOs.java
 Mon Apr 30 16:15:29 2018
@@ -18,6 +18,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 import org.osgi.service.cdi.runtime.dto.ActivationDTO;
@@ -42,9 +43,11 @@ public class DTOs {
 
        public static ContainerDTO copy(ContainerDTO original, boolean clear) {
                try {
-                       return 
(ContainerDTO)cache.get().computeIfAbsent(original, o -> {
-                               return copy0(original);
-                       });
+                       if (cache.get().containsKey(original)) {
+                               return (ContainerDTO)cache.get().get(original);
+                       }
+                       ContainerDTO copy = copy0(original);
+                       return 
(ContainerDTO)cache.get().computeIfAbsent(original, p -> copy);
                }
                finally {
                        if (clear)
@@ -64,9 +67,11 @@ public class DTOs {
        }
 
        static ExtensionDTO copy(ExtensionDTO original) {
-               return (ExtensionDTO)cache.get().computeIfAbsent(original, o -> 
{
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ExtensionDTO)cache.get().get(original);
+               }
+               ExtensionDTO copy = copy0(original);
+               return (ExtensionDTO)cache.get().computeIfAbsent(original, p -> 
copy);
        }
 
        static ExtensionDTO copy0(ExtensionDTO original) {
@@ -77,9 +82,11 @@ public class DTOs {
        }
 
        static ComponentDTO copy(ComponentDTO original) {
-               return (ComponentDTO)cache.get().computeIfAbsent(original, o -> 
{
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ComponentDTO)cache.get().get(original);
+               }
+               ComponentDTO copy = copy0(original);
+               return (ComponentDTO)cache.get().computeIfAbsent(original, p -> 
copy);
        }
 
        static ComponentDTO copy0(ComponentDTO original) {
@@ -91,9 +98,11 @@ public class DTOs {
        }
 
        static ComponentInstanceDTO copy(ComponentInstanceDTO original) {
-               return 
(ComponentInstanceDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ComponentInstanceDTO)cache.get().get(original);
+               }
+               ComponentInstanceDTO copy = copy0(original);
+               return 
(ComponentInstanceDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ComponentInstanceDTO copy0(ComponentInstanceDTO original) {
@@ -106,9 +115,11 @@ public class DTOs {
        }
 
        static ActivationDTO copy(ActivationDTO original) {
-               return (ActivationDTO)cache.get().computeIfAbsent(original, o 
-> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ActivationDTO)cache.get().get(original);
+               }
+               ActivationDTO copy = copy0(original);
+               return (ActivationDTO)cache.get().computeIfAbsent(original, p 
-> copy);
        }
 
        static ActivationDTO copy0(ActivationDTO original) {
@@ -120,9 +131,11 @@ public class DTOs {
        }
 
        static ConfigurationDTO copy(ConfigurationDTO original) {
-               return (ConfigurationDTO)cache.get().computeIfAbsent(original, 
o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ConfigurationDTO)cache.get().get(original);
+               }
+               ConfigurationDTO copy = copy0(original);
+               return (ConfigurationDTO)cache.get().computeIfAbsent(original, 
p -> copy);
        }
 
        static ConfigurationDTO copy0(ConfigurationDTO original) {
@@ -133,9 +146,11 @@ public class DTOs {
        }
 
        static ReferenceDTO copy(ReferenceDTO original) {
-               return (ReferenceDTO)cache.get().computeIfAbsent(original, o -> 
{
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ReferenceDTO)cache.get().get(original);
+               }
+               ReferenceDTO copy = copy0(original);
+               return (ReferenceDTO)cache.get().computeIfAbsent(original, p -> 
copy);
        }
 
        static ReferenceDTO copy0(ReferenceDTO original) {
@@ -149,9 +164,11 @@ public class DTOs {
 
        public static ContainerTemplateDTO copy(ContainerTemplateDTO original, 
boolean clear) {
                try {
-                       return 
(ContainerTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                               return copy0(original);
-                       });
+                       if (cache.get().containsKey(original)) {
+                               return 
(ContainerTemplateDTO)cache.get().get(original);
+                       }
+                       ContainerTemplateDTO copy = copy0(original);
+                       return 
(ContainerTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
                }
                finally {
                        if (clear)
@@ -168,9 +185,11 @@ public class DTOs {
        }
 
        static ComponentTemplateDTO copy(ComponentTemplateDTO original) {
-               return 
(ComponentTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ComponentTemplateDTO)cache.get().get(original);
+               }
+               ComponentTemplateDTO copy = copy0(original);
+               return 
(ComponentTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ComponentTemplateDTO copy0(ComponentTemplateDTO original) {
@@ -186,9 +205,11 @@ public class DTOs {
        }
 
        static ExtensionTemplateDTO copy(ExtensionTemplateDTO original) {
-               return 
(ExtensionTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ExtensionTemplateDTO)cache.get().get(original);
+               }
+               ExtensionTemplateDTO copy = copy0(original);
+               return 
(ExtensionTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ExtensionTemplateDTO copy0(ExtensionTemplateDTO original) {
@@ -198,9 +219,11 @@ public class DTOs {
        }
 
        static ActivationTemplateDTO copy(ActivationTemplateDTO original) {
-               return 
(ActivationTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ActivationTemplateDTO)cache.get().get(original);
+               }
+               ActivationTemplateDTO copy = copy0(original);
+               return 
(ActivationTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ActivationTemplateDTO copy0(ActivationTemplateDTO original) {
@@ -212,9 +235,11 @@ public class DTOs {
        }
 
        static ConfigurationTemplateDTO copy(ConfigurationTemplateDTO original) 
{
-               return 
(ConfigurationTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return 
(ConfigurationTemplateDTO)cache.get().get(original);
+               }
+               ConfigurationTemplateDTO copy = copy0(original);
+               return 
(ConfigurationTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ConfigurationTemplateDTO copy0(ConfigurationTemplateDTO 
original) {
@@ -227,9 +252,11 @@ public class DTOs {
        }
 
        static ReferenceTemplateDTO copy(ReferenceTemplateDTO original) {
-               return 
(ReferenceTemplateDTO)cache.get().computeIfAbsent(original, o -> {
-                       return copy0(original);
-               });
+               if (cache.get().containsKey(original)) {
+                       return (ReferenceTemplateDTO)cache.get().get(original);
+               }
+               ReferenceTemplateDTO copy = copy0(original);
+               return 
(ReferenceTemplateDTO)cache.get().computeIfAbsent(original, p -> copy);
        }
 
        static ReferenceTemplateDTO copy0(ReferenceTemplateDTO original) {
@@ -294,6 +321,6 @@ public class DTOs {
        }
 
        private static final ThreadLocal<Map<Object, Object>> cache =
-               ThreadLocal.withInitial(() -> new HashMap<>());
+               ThreadLocal.withInitial(() -> new ConcurrentHashMap<>());
 
 }


Reply via email to