You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2015/11/04 19:23:24 UTC
deltaspike git commit: DELTASPIKE-1009 improved compatibility with
WAS8
Repository: deltaspike
Updated Branches:
refs/heads/master bfb85f3c2 -> e7d35f576
DELTASPIKE-1009 improved compatibility with WAS8
Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/e7d35f57
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/e7d35f57
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/e7d35f57
Branch: refs/heads/master
Commit: e7d35f57609e70ff4a975a072276e5dff7490a64
Parents: bfb85f3
Author: gpetracek <gp...@apache.org>
Authored: Wed Nov 4 19:14:47 2015 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Wed Nov 4 19:22:05 2015 +0100
----------------------------------------------------------------------
.../data/impl/RepositoryExtension.java | 26 +++++++++++++++++---
.../data/impl/meta/RepositoryComponents.java | 14 ++++++++---
.../impl/meta/RepositoryComponentsFactory.java | 2 ++
3 files changed, 36 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/e7d35f57/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/RepositoryExtension.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/RepositoryExtension.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/RepositoryExtension.java
index a083681..e9bee96 100755
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/RepositoryExtension.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/RepositoryExtension.java
@@ -29,6 +29,7 @@ import javax.enterprise.inject.spi.AfterBeanDiscovery;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.BeforeShutdown;
import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
@@ -58,6 +59,8 @@ public class RepositoryExtension implements Extension, Deactivatable
private static final Logger log = Logger.getLogger(RepositoryExtension.class.getName());
+ private static RepositoryComponents staticComponents = new RepositoryComponents();
+
private final List<RepositoryDefinitionException> definitionExceptions =
new LinkedList<RepositoryDefinitionException>();
@@ -65,7 +68,6 @@ public class RepositoryExtension implements Extension, Deactivatable
private RepositoryComponents components = new RepositoryComponents();
-
void beforeBeanDiscovery(@Observes BeforeBeanDiscovery before)
{
isActivated = ClassDeactivationUtils.isActivated(getClass());
@@ -104,6 +106,7 @@ public class RepositoryExtension implements Extension, Deactivatable
return;
}
components.add(repoClass);
+ staticComponents.add(repoClass);
}
catch (RepositoryDefinitionException e)
{
@@ -140,10 +143,27 @@ public class RepositoryExtension implements Extension, Deactivatable
{
return annotated.getJavaClass().equals(AbstractEntityRepository.class);
}
-
+
public RepositoryComponents getComponents()
{
- return components;
+ RepositoryComponents result = new RepositoryComponents();
+ if (components.getRepositories().isEmpty() && !staticComponents.getRepositories().isEmpty())
+ {
+ result.addAll(staticComponents.getRepositories());
+ }
+
+ if (!components.getRepositories().isEmpty())
+ {
+ result.addAll(components.getRepositories());
+ }
+
+ return result;
}
+ protected void cleanup(@Observes BeforeShutdown beforeShutdown)
+ {
+ //we can reset it in any case,
+ //because every application produced a copy as application-scoped bean (see RepositoryComponentsFactory)
+ staticComponents.getRepositories().clear();
+ }
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/e7d35f57/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponents.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponents.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponents.java
index 1686e31..f4651f9 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponents.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponents.java
@@ -26,9 +26,9 @@ import org.apache.deltaspike.data.impl.meta.extractor.TypeMetadataExtractor;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Arrays;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* Convenience class to access Repository and Repository method meta data.
@@ -36,10 +36,9 @@ import java.util.Map;
*/
public class RepositoryComponents implements Serializable
{
-
private static final long serialVersionUID = 1L;
- private final Map<Class<?>, RepositoryComponent> repos = new HashMap<Class<?>, RepositoryComponent>();
+ private final Map<Class<?>, RepositoryComponent> repos = new ConcurrentHashMap<Class<?>, RepositoryComponent>();
private final List<MetadataExtractor> extractors = Arrays.asList(new AnnotationMetadataExtractor(),
new TypeMetadataExtractor());
@@ -118,4 +117,13 @@ public class RepositoryComponents implements Serializable
throw new RepositoryDefinitionException(repoClass);
}
+ public Map<Class<?>, RepositoryComponent> getRepositories()
+ {
+ return repos;
+ }
+
+ public void addAll(Map<Class<?>, RepositoryComponent> repositories)
+ {
+ this.repos.putAll(repositories);
+ }
}
http://git-wip-us.apache.org/repos/asf/deltaspike/blob/e7d35f57/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponentsFactory.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponentsFactory.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponentsFactory.java
index 8eac1a5..19cd451 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponentsFactory.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryComponentsFactory.java
@@ -18,6 +18,7 @@
*/
package org.apache.deltaspike.data.impl.meta;
+import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
@@ -34,6 +35,7 @@ public class RepositoryComponentsFactory
private RepositoryExtension extension;
@Produces
+ @ApplicationScoped
@Initialized
public RepositoryComponents producer()
{