You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2021/02/24 14:25:04 UTC
[myfaces] branch master updated: use CDI2 API
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/master by this push:
new 672e7ed use CDI2 API
672e7ed is described below
commit 672e7ed50278647a0b3f920e87d03e7a64c71985
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Wed Feb 24 15:24:55 2021 +0100
use CDI2 API
---
.../flow/cdi/DefaultCDIFacesFlowProvider.java | 31 +++++++++++++---------
.../myfaces/flow/cdi/FlowBuilderExtension.java | 25 -----------------
2 files changed, 18 insertions(+), 38 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java b/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java
index fc68d02..698719c 100644
--- a/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/flow/cdi/DefaultCDIFacesFlowProvider.java
@@ -18,6 +18,8 @@
*/
package org.apache.myfaces.flow.cdi;
+import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.spi.Bean;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -25,9 +27,11 @@ import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import jakarta.enterprise.inject.spi.BeanManager;
-import jakarta.enterprise.inject.spi.Producer;
+import jakarta.enterprise.util.AnnotationLiteral;
import jakarta.faces.context.FacesContext;
import jakarta.faces.flow.Flow;
+import jakarta.faces.flow.builder.FlowDefinition;
+import java.util.Set;
import org.apache.myfaces.cdi.util.CDIUtils;
import org.apache.myfaces.flow.FlowUtils;
import org.apache.myfaces.spi.FacesFlowProvider;
@@ -80,23 +84,24 @@ public class DefaultCDIFacesFlowProvider extends FacesFlowProvider
@Override
public Iterator<Flow> getAnnotatedFlows(FacesContext facesContext)
{
- BeanManager beanManager = getBeanManager(facesContext);
- if (beanManager == null)
- {
- Logger.getLogger(DefaultCDIFacesFlowProvider.class.getName()).log(Level.INFO,
- "CDI BeanManager not found");
- return null;
- }
-
if (flows == null)
{
flows = new ArrayList<>();
- FlowBuilderExtension extension = CDIUtils.get(beanManager, FlowBuilderExtension.class);
- for (Producer<Flow> producer : extension.getFlowProducers())
+ BeanManager beanManager = getBeanManager(facesContext);
+ if (beanManager == null)
+ {
+ Logger.getLogger(DefaultCDIFacesFlowProvider.class.getName()).log(Level.INFO,
+ "CDI BeanManager not found");
+ return null;
+ }
+
+ Set<Bean<?>> beans = beanManager.getBeans(Flow.class, new AnnotationLiteral<FlowDefinition>(){ });
+ for (Bean bean : beans)
{
- Flow flow = producer.produce(beanManager.<Flow>createCreationalContext(null));
- flows.add(flow);
+ // TODO we should actually remember the CC and destroy on shutdown
+ CreationalContext<Flow> cc = beanManager.createCreationalContext(bean);
+ flows.add((Flow) beanManager.getReference(bean, Flow.class, cc));
}
}
diff --git a/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowBuilderExtension.java b/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowBuilderExtension.java
index c842b07..2527c36 100644
--- a/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowBuilderExtension.java
+++ b/impl/src/main/java/org/apache/myfaces/flow/cdi/FlowBuilderExtension.java
@@ -18,18 +18,11 @@
*/
package org.apache.myfaces.flow.cdi;
-import java.util.ArrayList;
-import java.util.List;
-
import jakarta.enterprise.event.Observes;
import jakarta.enterprise.inject.spi.AnnotatedType;
import jakarta.enterprise.inject.spi.BeanManager;
import jakarta.enterprise.inject.spi.BeforeBeanDiscovery;
import jakarta.enterprise.inject.spi.Extension;
-import jakarta.enterprise.inject.spi.ProcessProducer;
-import jakarta.enterprise.inject.spi.Producer;
-import jakarta.faces.flow.Flow;
-import jakarta.faces.flow.builder.FlowDefinition;
/**
* This extension is responsible of scan flow definitions through CDI. For example:
@@ -43,13 +36,6 @@ import jakarta.faces.flow.builder.FlowDefinition;
*/
public class FlowBuilderExtension implements Extension
{
- private List<Producer<Flow>> flowProducers = new ArrayList<Producer<Flow>>();
-
- public List<Producer<Flow>> getFlowProducers()
- {
- return flowProducers;
- }
-
void beforeBeanDiscovery(@Observes final BeforeBeanDiscovery event, BeanManager beanManager)
{
// Register FlowBuilderFactoryBean as a bean with CDI annotations, so the system
@@ -58,15 +44,4 @@ public class FlowBuilderExtension implements Extension
beanManager.createAnnotatedType(FlowBuilderFactoryBean.class);
event.addAnnotatedType(flowDiscoveryHelper, flowDiscoveryHelper.getJavaClass().getName());
}
-
- /**
- * Stores any producer method that is annotated with @FlowDefinition.
- */
- <T> void findFlowDefinition(@Observes ProcessProducer<T, Flow> processProducer)
- {
- if (processProducer.getAnnotatedMember().isAnnotationPresent(FlowDefinition.class))
- {
- flowProducers.add(processProducer.getProducer());
- }
- }
}