This is an automated email from the ASF dual-hosted git repository. struberg pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/deltaspike.git
commit 19606ca588233676a6db64cb61b81f382014181d Author: Mark Struberg <[email protected]> AuthorDate: Fri May 15 14:09:05 2020 +0200 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. --- .../deltaspike/core/api/config/base/CoreBaseConfig.java | 5 +++++ .../deltaspike/core/api/provider/BeanManagerProvider.java | 12 +++++++++--- deltaspike/parent/code/pom.xml | 8 ++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) 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 @@ public interface CoreBaseConfig extends DeltaSpikeBaseConfig { 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 @@ public class BeanManagerProvider implements Extension 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 @@ public class BeanManagerProvider implements Extension // 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 class BeanManagerProvider implements Extension 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>
