You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/10/07 21:12:22 UTC

[isis] 01/01: ISIS-2158: makes the ServiceInjectorDefault thread-safe

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 1b4ad4d33d64373a87c09f4bca6b760b6112553c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Oct 7 23:12:12 2019 +0200

    ISIS-2158: makes the ServiceInjectorDefault thread-safe
---
 .../isis/runtime/services/ServiceInjectorTestUsingCodegenPlugin.java  | 2 +-
 .../org/apache/isis/metamodel/services/ServiceInjectorDefault.java    | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/detached-tests/src/test/java/org/apache/isis/runtime/services/ServiceInjectorTestUsingCodegenPlugin.java b/core/detached-tests/src/test/java/org/apache/isis/runtime/services/ServiceInjectorTestUsingCodegenPlugin.java
index 1bd2c77..beef8e1 100644
--- a/core/detached-tests/src/test/java/org/apache/isis/runtime/services/ServiceInjectorTestUsingCodegenPlugin.java
+++ b/core/detached-tests/src/test/java/org/apache/isis/runtime/services/ServiceInjectorTestUsingCodegenPlugin.java
@@ -102,7 +102,7 @@ public class ServiceInjectorTestUsingCodegenPlugin {
         final ExecutorService executor = Executors.newFixedThreadPool(10);
 
         // setup 32 tasks
-        final List<Callable<Integer>> tasks = IntStream.range(0, 32)
+        final List<Callable<Integer>> tasks = IntStream.range(0, 1000)
                 .<Callable<Integer>>mapToObj(index->()->{
 
                     // within each task setup a new calculator instance that adds the numbers from 1 .. 100 = 5050
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
index 655340b..b059a1a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/services/ServiceInjectorDefault.java
@@ -56,8 +56,8 @@ public class ServiceInjectorDefault implements ServiceInjector {
     @Inject private ServiceRegistry serviceRegistry;
     @Inject private InjectorMethodEvaluator injectorMethodEvaluator;
 
-    private final Map<Class<?>, Method[]> methodsByClassCache = _Maps.newHashMap();
-    private final Map<Class<?>, Field[]> fieldsByClassCache = _Maps.newHashMap();
+    private final Map<Class<?>, Method[]> methodsByClassCache = _Maps.newConcurrentHashMap();
+    private final Map<Class<?>, Field[]> fieldsByClassCache = _Maps.newConcurrentHashMap();
 
     @Override
     public <T> T injectServicesInto(T domainObject, Consumer<InjectionPoint> onNotResolvable) {