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 2017/09/09 08:21:39 UTC

svn commit: r1807858 - /myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java

Author: tandraschko
Date: Sat Sep  9 08:21:39 2017
New Revision: 1807858

URL: http://svn.apache.org/viewvc?rev=1807858&view=rev
Log:
MYFACES-4151 When @FacesConfig is not present, EL resolution in managed beans should not be performed

Modified:
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java?rev=1807858&r1=1807857&r2=1807858&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducerExtension.java Sat Sep  9 08:21:39 2017
@@ -20,22 +20,46 @@ package org.apache.myfaces.cdi;
 
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AfterTypeDiscovery;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.BeforeBeanDiscovery;
 import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.faces.annotation.FacesConfig;
 
 public class JsfArtifactProducerExtension implements Extension
 {
-    void beforeBeanDiscovery(@Observes BeforeBeanDiscovery event, BeanManager beanManager)
+    private boolean registerCdiProducers = false;
+    
+    <T> void processAnnotatedType(@Observes ProcessAnnotatedType<T> event, BeanManager beanManager)
+    {
+        FacesConfig facesConfig = event.getAnnotatedType().getAnnotation(FacesConfig.class);
+        if (facesConfig != null && facesConfig.version() != FacesConfig.Version.JSF_2_2)
+        {
+            registerCdiProducers = true;
+        }
+    }
+    
+    void afterTypeDiscovery(@Observes AfterTypeDiscovery event, BeanManager beanManager)
     {        
-        AnnotatedType<JsfArtifactProducer> jsfArtifactProducer =
-                        beanManager.createAnnotatedType(JsfArtifactProducer.class);
-        event.addAnnotatedType(jsfArtifactProducer);
+        if (registerCdiProducers)
+        {
+            AnnotatedType<JsfArtifactProducer> jsfArtifactProducer =
+                            beanManager.createAnnotatedType(JsfArtifactProducer.class);
+            event.addAnnotatedType(jsfArtifactProducer, null);
+        }
     }
     
     void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager)
     {
-        afterBeanDiscovery.addBean(new JsfArtifactFlowMapProducer());
+        if (registerCdiProducers)
+        {
+            afterBeanDiscovery.addBean(new JsfArtifactFlowMapProducer());
+        }
+    }
+
+    public boolean isRegisterCdiProducers()
+    {
+        return registerCdiProducers;
     }
 }