You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2015/09/17 03:40:19 UTC

incubator-tamaya git commit: Added better classloader support and isolation.

Repository: incubator-tamaya
Updated Branches:
  refs/heads/master 2566cb3a1 -> b87049004


Added better classloader support and isolation.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/b8704900
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/b8704900
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/b8704900

Branch: refs/heads/master
Commit: b87049004ad6b5fe70be4a5489a238a4e1aec244
Parents: 2566cb3
Author: anatole <an...@apache.org>
Authored: Thu Sep 17 03:40:04 2015 +0200
Committer: anatole <an...@apache.org>
Committed: Thu Sep 17 03:40:04 2015 +0200

----------------------------------------------------------------------
 sandbox/integration/cdi/pom.xml                 |  5 ++++
 .../cdi/internal/CDIAwareServiceContext.java    | 30 ++++----------------
 2 files changed, 11 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/b8704900/sandbox/integration/cdi/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/integration/cdi/pom.xml b/sandbox/integration/cdi/pom.xml
index ffcdb12..97657d1 100644
--- a/sandbox/integration/cdi/pom.xml
+++ b/sandbox/integration/cdi/pom.xml
@@ -73,6 +73,11 @@ under the License.
         </dependency>
 
         <dependency>
+            <groupId>org.apache.tamaya.ext</groupId>
+            <artifactId>tamaya-classloader-support</artifactId>
+            <version>0.2-incubating-SNAPSHOT</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.tamaya</groupId>
             <artifactId>tamaya-java7-core</artifactId>
             <version>${project.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/b8704900/sandbox/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/internal/CDIAwareServiceContext.java
----------------------------------------------------------------------
diff --git a/sandbox/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/internal/CDIAwareServiceContext.java b/sandbox/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/internal/CDIAwareServiceContext.java
index 0799030..fe16f21 100644
--- a/sandbox/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/internal/CDIAwareServiceContext.java
+++ b/sandbox/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/internal/CDIAwareServiceContext.java
@@ -19,6 +19,7 @@
 package org.apache.tamaya.integration.cdi.internal;
 
 import org.apache.tamaya.ConfigException;
+import org.apache.tamaya.clsupport.internal.CLAwareServiceContext;
 import org.apache.tamaya.spi.ServiceContext;
 
 import javax.annotation.Priority;
@@ -52,9 +53,9 @@ import java.util.logging.Logger;
  */
 public class CDIAwareServiceContext implements ServiceContext {
     /**
-     * List current services loaded, per class.
+     * List current services loaded, per classloader.
      */
-    private final ConcurrentHashMap<Class<?>, List<Object>> servicesLoadedFromCP = new ConcurrentHashMap<>();
+    private final CLAwareServiceContext clAwareServiceContext = new CLAwareServiceContext();
 
     /**
      * Singletons.
@@ -88,38 +89,19 @@ public class CDIAwareServiceContext implements ServiceContext {
      */
     @Override
     public <T> List<T> getServices(final Class<T> serviceType) {
-        List<T> found = (List<T>) servicesLoadedFromCP.get(serviceType);
+        List<T> found = (List<T>) clAwareServiceContext.getService(serviceType);
         BeanManager beanManager = TamayaCDIIntegration.getBeanManager();
         Instance<T> cdiInstances = null;
         if(beanManager!=null){
             Set<Bean<?>> instanceBeans = beanManager.getBeans(Instance.class);
             cdiInstances = (Instance<T>)beanManager.getReference(instanceBeans.iterator().next(), Instance.class, null);
         }
-        if (found != null) {
-            if(cdiInstances!=null){
-                for(T t:cdiInstances.select(serviceType)){
-                    found.add(t);
-                }
-            }
-            return found;
-        }
-        List<T> services = new ArrayList<>();
-        try {
-            for (T t : ServiceLoader.load(serviceType)) {
-                services.add(t);
-            }
-            services = Collections.unmodifiableList(services);
-        } catch (Exception e) {
-            Logger.getLogger(CDIAwareServiceContext.class.getName()).log(Level.WARNING,
-                    "Error loading services current type " + serviceType, e);
-        }
         if(cdiInstances!=null){
             for(T t:cdiInstances.select(serviceType)){
-                services.add(t);
+                found.add(t);
             }
         }
-        final List<T> previousServices = List.class.cast(servicesLoadedFromCP.putIfAbsent(serviceType, (List<Object>) services));
-        return previousServices != null ? previousServices : services;
+        return found;
     }
 
     /**