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 2019/07/27 15:37:37 UTC

[myfaces] branch master updated: make CdiAnnotationProviderExtension optional again

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 6615aad  make CdiAnnotationProviderExtension optional again
6615aad is described below

commit 6615aad99e7578ca9ce2bee042f23be5551ca30f
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Sat Jul 27 17:37:29 2019 +0200

    make CdiAnnotationProviderExtension optional again
---
 .../main/java/org/apache/myfaces/cdi/util/CDIUtils.java   | 15 ++++++++++++++-
 .../config/annotation/DefaultAnnotationProvider.java      |  7 +++++--
 .../apache/myfaces/webapp/AbstractFacesInitializer.java   |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java b/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
index 7ddb853..7645664 100644
--- a/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
@@ -46,10 +46,23 @@ public class CDIUtils
 
     public static <T> T get(BeanManager bm, Class<T> clazz)
     {
+        return get(bm, clazz, false);
+    }
+
+    public static <T> T get(BeanManager bm, Class<T> clazz, boolean optional)
+    {
         Set<Bean<?>> beans = bm.getBeans(clazz);
+        if (beans == null || beans.isEmpty())
+        {
+            if (optional)
+            {
+                return null;
+            }
+        }
+
         return resolveInstance(bm, beans, clazz);
     }
-
+    
     private static <T> T resolveInstance(BeanManager bm, Set<Bean<?>> beans, Type type)
     {
         Bean<?> bean = bm.resolve(beans);
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
index edc72fe..ec560ee 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
@@ -145,8 +145,11 @@ public class DefaultAnnotationProvider extends AnnotationProvider
         if (MyfacesConfig.getCurrentInstance(ctx).isUseCdiForAnnotationScanning())
         {
             BeanManager beanManager = CDIUtils.getBeanManager(ctx);
-            CdiAnnotationProviderExtension extension = CDIUtils.get(beanManager, CdiAnnotationProviderExtension.class);
-            return extension.getMap();
+            CdiAnnotationProviderExtension extension = CDIUtils.get(beanManager, CdiAnnotationProviderExtension.class, true);
+            if (extension != null)
+            {
+                return extension.getMap();
+            }
         }
 
         Map<Class<? extends Annotation>,Set<Class<?>>> map = new HashMap<>();
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
index 44953b5..4f2611a 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
@@ -269,7 +269,7 @@ public abstract class AbstractFacesInitializer implements FacesInitializer
         if (ExternalSpecifications.isCDIAvailable(externalContext))
         {
             BeanManager beanManager = CDIUtils.getBeanManager(externalContext);
-            CdiAnnotationProviderExtension extension = CDIUtils.get(beanManager, CdiAnnotationProviderExtension.class);
+            CdiAnnotationProviderExtension extension = CDIUtils.get(beanManager, CdiAnnotationProviderExtension.class, true);
             if (extension != null)
             {
                 extension.release();