You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2010/12/29 08:09:51 UTC

svn commit: r1053556 - in /myfaces/extensions/cdi/trunk: core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/ core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ core/impl/src/main/java/org/apache/myfaces/e...

Author: gpetracek
Date: Wed Dec 29 07:09:50 2010
New Revision: 1053556

URL: http://svn.apache.org/viewvc?rev=1053556&view=rev
Log:
EXTCDI-18 and EXTCDI-37

Added:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/JsfProjectStageProducer.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/JsfProjectStageProducer.java
      - copied, changed from r1053502, myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/Jsf2ProjectStageProducer.java
Removed:
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/Jsf2ProjectStageProducer.java
Modified:
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiInformationExtension.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageActivationExtension.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java
    myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/projectstage/ProjectStageProducerTest.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/mapped/MappedJsf2ScopeExtension.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/view/ViewScopedExtension.java

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiInformationExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiInformationExtension.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiInformationExtension.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiInformationExtension.java Wed Dec 29 07:09:50 2010
@@ -35,7 +35,7 @@ public class CodiInformationExtension im
     protected final Logger logger = Logger.getLogger(CodiInformationExtension.class.getName());
 
     @SuppressWarnings({"UnusedDeclaration"})
-    public void setBeanManager(@Observes AfterDeploymentValidation afterDeploymentValidation)
+    public void logStartupInfo(@Observes AfterDeploymentValidation afterDeploymentValidation)
     {
         if(!isActivated())
         {

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageActivationExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageActivationExtension.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageActivationExtension.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageActivationExtension.java Wed Dec 29 07:09:50 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.core.impl.projectstage;
 
 import javax.enterprise.event.Observes;
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
 import javax.enterprise.inject.spi.Extension;
 import javax.enterprise.inject.spi.ProcessAnnotatedType;
 
@@ -39,20 +40,10 @@ import org.apache.myfaces.extensions.cdi
  */
 public class ProjectStageActivationExtension implements Extension, Deactivatable
 {
-    private ProjectStage projectStage = null;
-
-    protected ProjectStage getProjectStage()
+    protected void initProjectStage(@Observes AfterDeploymentValidation afterDeploymentValidation)
     {
-        if (projectStage == null)
-        {
-            // we have to do this manually since we don't have any
-            // injection mechanism in place at this point since
-            // the CDI container has not yet been started...
-            ProjectStageProducer psp = new ProjectStageProducer();
-            psp.determineProjectStage();
-            projectStage = psp.getProjectStage();
-        }
-        return projectStage;
+        //trigger initialization
+        ProjectStageProducer.getInstance();
     }
 
     /**
@@ -84,7 +75,7 @@ public class ProjectStageActivationExten
     {
         if (activatedIn != null && activatedIn.length > 0)
         {
-            ProjectStage ps = getProjectStage();
+            ProjectStage ps = ProjectStageProducer.getInstance().getProjectStage();
             for (Class<? extends ProjectStage> activated : activatedIn)
             {
                 if (ps.getClass().equals(activated))

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/projectstage/ProjectStageProducer.java Wed Dec 29 07:09:50 2010
@@ -20,16 +20,13 @@ package org.apache.myfaces.extensions.cd
 
 
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
-import org.apache.myfaces.extensions.cdi.core.impl.util.JndiUtils;
 
-import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Default;
 import javax.enterprise.inject.Produces;
-import javax.inject.Inject;
-import java.io.IOException;
-import java.util.logging.Logger;
+import javax.enterprise.inject.Typed;
 
 /**
  * <p>Produces {@link ProjectStage} configurations.</p>
@@ -55,19 +52,18 @@ import java.util.logging.Logger;
  *
  * TODO move jsf specific parts
  */
-@ApplicationScoped
+@Typed()
 public class ProjectStageProducer
 {
+    private final static String PROJECTSTAGE_PRODUCER_PROPERTY_KEY
+            = "org.apache.myfaces.extensions.cdi.ProjectStageProducer";
 
-    /** JNDI path for the ProjectStage */
-    public final static String PROJECT_STAGE_JNDI_NAME = "java:comp/env/jsf/ProjectStage";
+    private static final String PROJECTSTAGE_PRODUCER_JNDI_NAME = "java:comp/env/myfaces-codi/ProjectStageProducer";
 
-    /** System Property to set the ProjectStage, if not present via the standard way */
-    public final static String JSF_PROJECT_STAGE_SYSTEM_PROPERTY_NAME = "faces.PROJECT_STAGE";
+    private final static String PROJECTSTAGE_PROPERTY_KEY
+            = "org.apache.myfaces.extensions.cdi.ProjectStage";
 
-    private final static String PROJECTSTAGE_PRODUCER_PROPERTY_KEY= "extcdi.projectStageProducer"; 
-
-    private final static Logger log = Logger.getLogger(ProjectStageProducer.class.getName());
+    private static final String PROJECTSTAGE_JNDI_NAME = "java:comp/env/myfaces-codi/ProjectStage";
 
     /**
      * ProjectStageProducers must only be created by subclassing producers
@@ -84,15 +80,29 @@ public class ProjectStageProducer
     /**
      * for the singleton factory
      */
-    private static ProjectStageProducer psp;
+    private static ProjectStageProducer projectStageProducer;
 
     /**
      * We can only produce @Dependent scopes since an enum is final.
      * @return current ProjectStage
      */
-    @Produces @Dependent @Default
+    @Produces
+    @Dependent
+    @Default
     public ProjectStage getProjectStage()
     {
+        if(projectStage == null)
+        {
+            synchronized (ProjectStageProducer.class)
+            {
+                projectStage = resolveProjectStage();
+            }
+
+            if(projectStage == null)
+            {
+                projectStage = ProjectStage.Production;
+            }
+        }
         return projectStage;
     }
 
@@ -103,33 +113,40 @@ public class ProjectStageProducer
      * <p></p>
      *
      * @return the ProjectStageProducer instance.
-     * @throws IOException
-     * @throws ClassNotFoundException
-     * @throws IllegalAccessException
-     * @throws InstantiationException
      */
     public synchronized static ProjectStageProducer getInstance()
-            throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException
     {
-        if (psp == null)
+        if (projectStageProducer == null)
         {
+            projectStageProducer = CodiUtils.lookupFromEnvironment(
+                    PROJECTSTAGE_PRODUCER_PROPERTY_KEY, PROJECTSTAGE_PRODUCER_JNDI_NAME, ProjectStageProducer.class);
+
+            if(projectStageProducer == null)
+            {
+                //workaround to avoid the usage of a service loader
+                projectStageProducer = ClassUtils.tryToInstantiateClassForName(
+                        "org.apache.myfaces.extensions.cdi.jsf2.impl.projectstage.JsfProjectStageProducer",
+                        ProjectStageProducer.class);
+            }
 
-            String pspClassName = CodiUtils.getCodiProperty(PROJECTSTAGE_PRODUCER_PROPERTY_KEY);
-            if (pspClassName != null && pspClassName.length() > 0)
+            if(projectStageProducer == null)
             {
-                Class<ProjectStageProducer> pspClass = (Class<ProjectStageProducer>) Class.forName(pspClassName);
-                psp = pspClass.newInstance();
+                //workaround to avoid the usage of a service loader
+                projectStageProducer = ClassUtils.tryToInstantiateClassForName(
+                        "org.apache.myfaces.extensions.cdi.jsf.impl.projectstage.JsfProjectStageProducer",
+                        ProjectStageProducer.class);
             }
 
-            if (psp == null)
+            if (projectStageProducer == null)
             {
                 // if we still didn't find a customised ProjectStageProducer,
                 // then we take the default one.
-                psp = new ProjectStageProducer();
+                projectStageProducer = new ProjectStageProducer();
             }
+            projectStageProducer.init();
         }
 
-        return psp;
+        return projectStageProducer;
     }
 
     /**
@@ -142,28 +159,11 @@ public class ProjectStageProducer
         projectStage = ps;
     }
 
-    /**
-     * Read the configuration from the stated places.
-     * This can be overloaded to implement own lookup mechanisms.
-     *
-     * This will only determine the ProjectStage if it is not yet set.
-     */
-    @Inject
-    public void determineProjectStage()
+    private void init()
     {
         if (projectStage == null)
         {
-            projectStage = determineCustomProjectStage();
-        }
-
-        if (projectStage == null)
-        {
-            projectStage = getProjectStageFromJNDI();
-        }
-
-        if (projectStage == null)
-        {
-            projectStage = getProjectStageFromEnvironment();
+            projectStage = resolveProjectStage();
         }
 
         // the last resort is setting it to Production
@@ -174,19 +174,10 @@ public class ProjectStageProducer
     }
 
 
-    /**
-     * This can get used to provide additional ProjectStage
-     * lookup mechanisms.
-     * @return the detected {@link ProjectStage} or <code>null</code> if non was found.
-     */
-    protected ProjectStage determineCustomProjectStage()
+    protected ProjectStage resolveProjectStage()
     {
-        return null;
-    }
-
-    protected ProjectStage getProjectStageFromEnvironment()
-    {
-        String stageName = System.getProperty(JSF_PROJECT_STAGE_SYSTEM_PROPERTY_NAME);
+        String stageName = CodiUtils
+                .lookupFromEnvironment(PROJECTSTAGE_PROPERTY_KEY, PROJECTSTAGE_JNDI_NAME, String.class);
 
         if (stageName != null)
         {
@@ -194,27 +185,4 @@ public class ProjectStageProducer
         }
         return null;
     }
-
-    protected ProjectStage getProjectStageFromJNDI()
-    {
-        ProjectStage ps = null;
-        String stageName = null;
-
-        try
-        {
-            stageName = JndiUtils.lookup(PROJECT_STAGE_JNDI_NAME, String.class);
-        }
-        catch (RuntimeException jndiException)
-        {
-            // no-op
-        }
-
-        if (stageName != null)
-        {
-            ps = ProjectStage.valueOf(stageName);
-        }
-
-        return ps;
-    }
-
 }

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/CodiUtils.java Wed Dec 29 07:09:50 2010
@@ -49,9 +49,6 @@ import java.util.Set;
  */
 public class CodiUtils
 {
-    //TODO change source
-    public static final String CODI_PROPERTIES = "/META-INF/extcdi/extcdi.properties";
-
     private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
 
     public static <T> T createNewInstanceOfBean(CreationalContext<T> creationalContext, Bean<T> bean)
@@ -167,27 +164,6 @@ public class CodiUtils
         return props;
     }
 
-    /**
-     * Lookup the given property from the default CODI properties file.
-     *
-     * @param propertyName
-     * @return the value of the property or <code>null</code> it it doesn't exist.
-     * @throws IOException
-     * @throws IllegalArgumentException if the standard CODI properties file couldn't get found
-     */
-    public static String getCodiProperty(String propertyName) throws IOException
-    {
-        String value = null;
-        Properties props = getProperties(CODI_PROPERTIES);
-
-        if (props != null)
-        {
-            value = props.getProperty(propertyName);
-        }
-
-        return value;
-    }
-
     public static ProjectStage getCurrentProjectStage()
     {
         return getContextualReferenceByClass(ProjectStage.class);
@@ -454,26 +430,32 @@ public class CodiUtils
 
     public static <T> T lookupFromEnvironment(String systemPropertyName, String jndiName , Class<T> targetType)
     {
-        String className = System.getProperty(systemPropertyName);
-        if (className != null)
+        String configuredValue = System.getProperty(systemPropertyName);
+        if (configuredValue != null)
         {
-            return tryToInstantiateClassForName(className, targetType);
+            if(String.class.isAssignableFrom(targetType))
+            {
+                return (T)configuredValue;
+            }
+            return tryToInstantiateClassForName(configuredValue, targetType);
         }
 
-        String classDeactivatorName = null;
-
         try
         {
-            classDeactivatorName = JndiUtils.lookup(jndiName, String.class);
+            configuredValue = JndiUtils.lookup(jndiName, String.class);
         }
         catch (RuntimeException jndiException)
         {
             // noop - lookup did not work
         }
 
-        if (classDeactivatorName != null)
+        if (configuredValue != null)
         {
-            return tryToInstantiateClassForName(classDeactivatorName, targetType);
+            if(String.class.isAssignableFrom(targetType))
+            {
+                return (T)configuredValue;
+            }
+            return tryToInstantiateClassForName(configuredValue, targetType);
         }
 
         return null;

Modified: myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/projectstage/ProjectStageProducerTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/projectstage/ProjectStageProducerTest.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/projectstage/ProjectStageProducerTest.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/test/java/org/apache/myfaces/extensions/cdi/core/test/impl/projectstage/ProjectStageProducerTest.java Wed Dec 29 07:09:50 2010
@@ -44,8 +44,6 @@ public class ProjectStageProducerTest
         // first manually reset the ProjectStage
         ProjectStageProducer.setProjectStage(null);
 
-        psp.determineProjectStage();
-
         ProjectStage ps = psp.getProjectStage();
         Assert.assertNotNull(ps);
         Assert.assertEquals(ps, ProjectStage.Production);

Added: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/JsfProjectStageProducer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/JsfProjectStageProducer.java?rev=1053556&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/JsfProjectStageProducer.java (added)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/projectstage/JsfProjectStageProducer.java Wed Dec 29 07:09:50 2010
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.cdi.jsf.impl.projectstage;
+
+import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import org.apache.myfaces.extensions.cdi.core.impl.projectstage.ProjectStageProducer;
+import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
+
+import javax.enterprise.inject.Typed;
+
+/**
+ * @author Gerhard Petracek
+ */
+@Typed()
+public class JsfProjectStageProducer extends ProjectStageProducer
+{
+    /** JNDI path for the ProjectStage */
+    private final static String PROJECT_STAGE_JNDI_NAME = "java:comp/env/jsf/ProjectStage";
+
+    /** System Property to set the ProjectStage, if not present via the standard way */
+    private final static String JSF_PROJECT_STAGE_SYSTEM_PROPERTY_NAME = "faces.PROJECT_STAGE";
+
+    @Override
+    protected ProjectStage resolveProjectStage()
+    {
+        ProjectStage projectStage = super.resolveProjectStage();
+
+        if(projectStage != null)
+        {
+            return projectStage;
+        }
+
+        String stageName = CodiUtils
+                .lookupFromEnvironment(JSF_PROJECT_STAGE_SYSTEM_PROPERTY_NAME, PROJECT_STAGE_JNDI_NAME, String.class);
+
+        if (stageName != null)
+        {
+            return ProjectStage.valueOf(stageName);
+        }
+
+        return null;
+    }
+}

Copied: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/JsfProjectStageProducer.java (from r1053502, myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/Jsf2ProjectStageProducer.java)
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/JsfProjectStageProducer.java?p2=myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/JsfProjectStageProducer.java&p1=myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/Jsf2ProjectStageProducer.java&r1=1053502&r2=1053556&rev=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/Jsf2ProjectStageProducer.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/projectstage/JsfProjectStageProducer.java Wed Dec 29 07:09:50 2010
@@ -19,24 +19,32 @@
 package org.apache.myfaces.extensions.cdi.jsf2.impl.projectstage;
 
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
-import org.apache.myfaces.extensions.cdi.core.impl.projectstage.ProjectStageProducer;
 
+import javax.enterprise.inject.Typed;
 import javax.faces.context.FacesContext;
 
 /**
- * This is a JSF-2 specific version of the {@link ProjectStageProducer}.
+ * This is a JSF-2 specific version of the
+ * {@link org.apache.myfaces.extensions.cdi.core.impl.projectstage.ProjectStageProducer}.
  * In addition to it's parent class, it will first try to pickup the
  * JSF ProjectStage from the Application. If this returns the JSF
  * {@link javax.faces.application.ProjectStage#Production}, we'll go on
  * and try to figure out our own EXTCDI 
  * {@link org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage}s
  */
-public class Jsf2ProjectStageProducer extends ProjectStageProducer
+@Typed()
+public class JsfProjectStageProducer extends
+        org.apache.myfaces.extensions.cdi.jsf.impl.projectstage.JsfProjectStageProducer
 {
     @Override
-    protected ProjectStage determineCustomProjectStage()
+    protected ProjectStage resolveProjectStage()
     {
-        ProjectStage codiProjectStage = null;
+        ProjectStage projectStage = super.resolveProjectStage();
+
+        if(projectStage != null)
+        {
+            return projectStage;
+        }
 
         javax.faces.application.ProjectStage jsfProjectStage =
                 FacesContext.getCurrentInstance().getApplication().getProjectStage();
@@ -47,22 +55,18 @@ public class Jsf2ProjectStageProducer ex
             switch(jsfProjectStage)
             {
                 case UnitTest:
-                    codiProjectStage = ProjectStage.UnitTest;
-                    break;
-
+                    return ProjectStage.UnitTest;
                 case Development:
-                    codiProjectStage = ProjectStage.Development;
-                    break;
+                    return ProjectStage.Development;
 
                 case SystemTest:
-                    codiProjectStage = ProjectStage.SystemTest;
-                    break;
+                    return ProjectStage.SystemTest;
 
                 default:
                 // we cannot match others, so codiProjectStage remains null in the default case
             }
         }
 
-        return codiProjectStage;
+        return null;
     }
 }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/mapped/MappedJsf2ScopeExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/mapped/MappedJsf2ScopeExtension.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/mapped/MappedJsf2ScopeExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/mapped/MappedJsf2ScopeExtension.java Wed Dec 29 07:09:50 2010
@@ -95,7 +95,7 @@ public class MappedJsf2ScopeExtension im
 
     private void logConvertedBean(AnnotatedType annotatedType, Class<? extends Annotation> jsf2ScopeAnnotation)
     {
-        ProjectStage projectStage = getCurrentProjectStage();
+        ProjectStage projectStage = ProjectStageProducer.getInstance().getProjectStage();
 
         if (projectStage == ProjectStage.Development)
         {
@@ -117,7 +117,7 @@ public class MappedJsf2ScopeExtension im
 
         if(managedBeanAnnotation.eager())
         {
-            ProjectStage projectStage = getCurrentProjectStage();
+            ProjectStage projectStage = ProjectStageProducer.getInstance().getProjectStage();
 
             if (projectStage == ProjectStage.Development)
             {
@@ -130,26 +130,6 @@ public class MappedJsf2ScopeExtension im
         return false;
     }
 
-    private ProjectStage getCurrentProjectStage()
-    {
-        try
-        {
-            ProjectStageProducer projectStageProducer = ProjectStageProducer.getInstance();
-
-            //noinspection ConstantConditions
-            projectStageProducer.determineProjectStage();
-            return projectStageProducer.getProjectStage();
-        }
-        catch (Exception e)
-        {
-            if (!(e instanceof RuntimeException))
-            {
-                throw new RuntimeException(e);
-            }
-            throw (RuntimeException)e;
-        }
-    }
-
     public boolean isActivated()
     {
         return ClassDeactivation.isClassActivated(getClass());

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/view/ViewScopedExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/view/ViewScopedExtension.java?rev=1053556&r1=1053555&r2=1053556&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/view/ViewScopedExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/view/ViewScopedExtension.java Wed Dec 29 07:09:50 2010
@@ -76,7 +76,6 @@ public class ViewScopedExtension impleme
             // at this time
             ProjectStageProducer psp = ProjectStageProducer.getInstance();
 
-            psp.determineProjectStage();
             ProjectStage projectStage = psp.getProjectStage();
 
             if (projectStage == ProjectStage.UnitTest)