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;
}
/**