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 &#64;FlowDefinition.
-     */
-    <T> void findFlowDefinition(@Observes ProcessProducer<T, Flow> processProducer)
-    {
-        if (processProducer.getAnnotatedMember().isAnnotationPresent(FlowDefinition.class))
-        {
-            flowProducers.add(processProducer.getProducer());
-        }
-    }
 }