DELTASPIKE-1408 in some situations CDI.current() doesn't work in Weld3
So we try a fallback onto CDI-1.0 tricks to resolve the BeanManager.
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
index e988f57..313bb9b 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/config/base/CoreBaseConfig.java
@@ -26,6 +26,11 @@
{
interface BeanManagerIntegration
{
+ /**
+ * Whether to use CDI.current() if available.
+ * This might fail in some CDI containers in some situations.
+ * Try switching to 'false' to enforce the 'old' DeltaSpike BeanManager lookup.
+ */
Boolean DELEGATE_LOOKUP =
ConfigResolver.resolve("deltaspike.bean-manager.delegate_lookup")
.as(Boolean.class)
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
index 117f13f..5897b59 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
@@ -186,7 +186,8 @@
setBeanManagerProvider(this);
// CDI#current delegation enabled, skip everything
- if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
+ if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null &&
+ resolveBeanManagerViaStaticHelper() != null)
{
return;
}
@@ -208,7 +209,11 @@
// CDI#current delegation enabled, skip everything
if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
{
- return resolveBeanManagerViaStaticHelper();
+ BeanManager bm = resolveBeanManagerViaStaticHelper();
+ if (bm != null)
+ {
+ return bm;
+ }
}
BeanManagerInfo bmi = getBeanManagerInfo(ClassUtils.getClassLoader(null));
@@ -274,7 +279,8 @@
public void cleanupFinalBeanManagers(@Observes AfterDeploymentValidation adv)
{
// CDI#current delegation enabled, skip everything
- if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null)
+ if (CDI_CURRENT_METHOD != null && CDI_CURRENT_BEAN_MANAGER_METHOD != null &&
+ resolveBeanManagerViaStaticHelper() != null)
{
return;
}
diff --git a/deltaspike/parent/code/pom.xml b/deltaspike/parent/code/pom.xml
index c807d77..4a10e2b 100644
--- a/deltaspike/parent/code/pom.xml
+++ b/deltaspike/parent/code/pom.xml
@@ -695,7 +695,7 @@
<properties>
<!-- Actual Weld version used with this profile -->
- <weld.version>3.0.4.Final</weld.version>
+ <weld.version>3.1.3.Final</weld.version>
<cdicontainer.version>weld-${weld.version}</cdicontainer.version>
</properties>
@@ -753,7 +753,11 @@
<groupId>org.jboss.weld</groupId>
<artifactId>weld-api</artifactId>
</dependency>
-
+ <dependency>
+ <groupId>org.jboss.weld</groupId>
+ <artifactId>weld-spi</artifactId>
+ </dependency>
+
<!--Other than Weld dependencies-->
<dependency>
<groupId>javax.el</groupId>