From 56f346cd6dcf3fa6c21af626f384fdf2687cec89 Mon Sep 17 00:00:00 2001 From: d3j766 Date: Wed, 4 Aug 2021 14:40:39 -0700 Subject: [PATCH] Fixes #186 --- build.gradle | 5 +- .../extension/EagerCDIExtension.java | 47 +++++++++++++++---- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index 0d84d749..14f40238 100644 --- a/build.gradle +++ b/build.gradle @@ -108,7 +108,7 @@ subprojects { } - sourceCompatibility = 1.8 + sourceCompatibility = 11 repositories { mavenCentral() @@ -134,6 +134,9 @@ subprojects { implementation group: 'org.apache.commons', name: 'commons-configuration2', version: '2.6' implementation group: 'au.com.bytecode', name: 'opencsv', version: '2.4' + // Java 11 transition + compileOnly group: 'javax.xml.bind', name: 'jaxb-api', version: "2.3.1" + if (!isMemberProject) { implementation project(':proven-member') } diff --git a/proven-member/module-lib/src/main/java/gov/pnnl/proven/cluster/lib/module/component/extension/EagerCDIExtension.java b/proven-member/module-lib/src/main/java/gov/pnnl/proven/cluster/lib/module/component/extension/EagerCDIExtension.java index 36c3a1d3..ced73dbe 100644 --- a/proven-member/module-lib/src/main/java/gov/pnnl/proven/cluster/lib/module/component/extension/EagerCDIExtension.java +++ b/proven-member/module-lib/src/main/java/gov/pnnl/proven/cluster/lib/module/component/extension/EagerCDIExtension.java @@ -39,23 +39,54 @@ ******************************************************************************/ package gov.pnnl.proven.cluster.lib.module.component.extension; +import java.util.ArrayList; +import java.util.List; + import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import javax.enterprise.inject.spi.AfterDeploymentValidation; +import javax.enterprise.inject.spi.Bean; import javax.enterprise.inject.spi.BeanManager; import javax.enterprise.inject.spi.Extension; -import javax.enterprise.util.AnnotationLiteral; +import javax.enterprise.inject.spi.ProcessBean; import gov.pnnl.proven.cluster.lib.module.component.annotation.Eager; public class EagerCDIExtension implements Extension { - public void afterDeploymentValidation(@Observes AfterDeploymentValidation event, BeanManager beanManager) { - beanManager.getBeans(Object.class, new AnnotationLiteral() { - }).parallelStream().filter(bean -> bean.getBeanClass().isAnnotationPresent(ApplicationScoped.class)) - .forEach(bean -> { - beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)) - .toString(); - }); + private List> eagerBeansList = new ArrayList>(); + + public void collect(@Observes ProcessBean event) { + if (event.getAnnotated().isAnnotationPresent(Eager.class) + && event.getAnnotated().isAnnotationPresent(ApplicationScoped.class)) { + eagerBeansList.add(event.getBean()); + } + } + + public void load(@Observes AfterDeploymentValidation event, BeanManager beanManager) { + for (Bean bean : eagerBeansList) { + // note: toString() is important to instantiate the bean + beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)).toString(); + } } + } + +// formatter:off +// ORIGINAL CODE - JAVA 8 +// FAILED ON STARTUP +// public void afterDeploymentValidation(@Observes AfterDeploymentValidation event, BeanManager beanManager) { +// +// String a = "test"; +// a = a.trim(); +// +// beanManager.getBeans(Object.class, new AnnotationLiteral() { +// }).parallelStream().filter(bean -> bean.getBeanClass().isAnnotationPresent(ApplicationScoped.class)) +// .forEach(bean -> { +// beanManager.getReference(bean, bean.getBeanClass(), beanManager.createCreationalContext(bean)) +// .toString(); +// }); +// +// } +// ORIGINAL CODE - JAVA 8 +// formatter:on