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 2011/01/14 21:19:58 UTC

svn commit: r1059154 - in /myfaces/extensions/cdi/trunk: core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/ core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/ core/api/src/main/java/org/apache/myfaces/ex...

Author: gpetracek
Date: Fri Jan 14 20:19:57 2011
New Revision: 1059154

URL: http://svn.apache.org/viewvc?rev=1059154&view=rev
Log:
EXTCDI-120 first draft

Added:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/event/StartupEventBroadcaster.java
Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/BeanManagerProvider.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiDeactivatorExtension.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/util/CodiUtils.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ViewConfigExtension.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/CodiRenderKitFactory.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/GroupedConversationContextExtension.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/CodiRenderKitFactory.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/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/BeanManagerProvider.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/BeanManagerProvider.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/BeanManagerProvider.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/provider/BeanManagerProvider.java Fri Jan 14 20:19:57 2011
@@ -18,6 +18,7 @@
  */
 package org.apache.myfaces.extensions.cdi.core.api.provider;
 
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
 
 import javax.enterprise.event.Observes;
@@ -48,6 +49,10 @@ public class BeanManagerProvider impleme
 
     private volatile Map<ClassLoader, BeanManager> bms = new ConcurrentHashMap<ClassLoader, BeanManager>();
 
+    public static boolean isActive()
+    {
+        return bmp != null;
+    }
 
     /**
      * Singleton accessor
@@ -57,6 +62,13 @@ public class BeanManagerProvider impleme
     {
         if(bmp == null)
         {
+            //workaround for Mojarra (in combination with OWB and a custom WebBeansConfigurationListener and a custom
+            //StartupBroadcaster for bootstrapping CDI)
+            CodiStartupBroadcaster.broadcastStartup();
+            //here bmp might not be null (depends on the broadcasters)
+        }
+        if(bmp == null)
+        {
             throw new IllegalStateException("no " + BeanManagerProvider.class.getName() + " in place! " +
                 "Please ensure that you configured the CDI implementation of your choice properly.");
         }
@@ -119,6 +131,8 @@ public class BeanManagerProvider impleme
 
         ClassLoader cl = ClassUtils.getClassLoader(null);
         bmpFirst.bms.put(cl, beanManager);
+
+        CodiStartupBroadcaster.broadcastStartup();
     }
 
     /**

Added: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java?rev=1059154&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java (added)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/CodiStartupBroadcaster.java Fri Jan 14 20:19:57 2011
@@ -0,0 +1,83 @@
+/*
+ * 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.core.api.startup;
+
+import org.apache.myfaces.extensions.cdi.core.api.startup.event.StartupEventBroadcaster;
+import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * @author Gerhard Petracek
+ */
+public abstract class CodiStartupBroadcaster
+{
+    private CodiStartupBroadcaster()
+    {
+    }
+
+    private static volatile Map<ClassLoader, Boolean> initialized = new HashMap<ClassLoader, Boolean>();
+
+    private static transient Map<ClassLoader, List<Class<? extends StartupEventBroadcaster>>> broadcasterFilter =
+            new ConcurrentHashMap<ClassLoader, List<Class<? extends StartupEventBroadcaster>>>();
+
+
+    public static void broadcastStartup()
+    {
+        ClassLoader classLoader = ClassUtils.getClassLoader(null);
+        if (!initialized.containsKey(classLoader))
+        {
+            invokeStartupEventBroadcaster(classLoader);
+        }
+    }
+
+    private static synchronized void invokeStartupEventBroadcaster(ClassLoader classLoader)
+    {
+        if (initialized.containsKey(classLoader))
+        {
+            return;
+        }
+
+        ServiceLoader<StartupEventBroadcaster> eventBroadcasterServiceLoader =
+                ServiceLoader.load(StartupEventBroadcaster.class, classLoader);
+
+        List<Class<? extends StartupEventBroadcaster>> filter = broadcasterFilter.get(classLoader);
+        if (filter == null)
+        {
+            filter = new CopyOnWriteArrayList<Class<? extends StartupEventBroadcaster>>();
+            broadcasterFilter.put(classLoader, filter);
+        }
+
+        for (StartupEventBroadcaster startupEventBroadcaster : eventBroadcasterServiceLoader)
+        {
+            if (!filter.contains(startupEventBroadcaster.getClass()))
+            {
+                filter.add(startupEventBroadcaster.getClass());
+                startupEventBroadcaster.broadcastStartup();
+            }
+        }
+
+        initialized.put(classLoader, Boolean.TRUE);
+    }
+}

Added: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/event/StartupEventBroadcaster.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/event/StartupEventBroadcaster.java?rev=1059154&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/event/StartupEventBroadcaster.java (added)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/startup/event/StartupEventBroadcaster.java Fri Jan 14 20:19:57 2011
@@ -0,0 +1,27 @@
+/*
+ * 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.core.api.startup.event;
+
+/**
+ * @author Gerhard Petracek
+ */
+public interface StartupEventBroadcaster
+{
+    void broadcastStartup();
+}

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiDeactivatorExtension.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiDeactivatorExtension.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiDeactivatorExtension.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/CodiDeactivatorExtension.java Fri Jan 14 20:19:57 2011
@@ -20,6 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import static org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation.isClassActivated;
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 
 import javax.enterprise.event.Observes;
 import javax.enterprise.inject.spi.ProcessAnnotatedType;
@@ -40,6 +41,8 @@ public class CodiDeactivatorExtension im
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+
         if (processAnnotatedType.getAnnotatedType().isAnnotationPresent(Interceptor.class))
         {
             if(!isClassActivated(processAnnotatedType.getAnnotatedType().getJavaClass()))

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=1059154&r1=1059153&r2=1059154&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 Fri Jan 14 20:19:57 2011
@@ -25,6 +25,7 @@ import javax.enterprise.inject.spi.Proce
 
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStageActivated;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
 
@@ -57,6 +58,8 @@ public class ProjectStageActivationExten
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+
         if (pat.getAnnotatedType().getJavaClass().isAnnotationPresent(ProjectStageActivated.class))
         {
             Class<? extends ProjectStage>[] activatedIn =

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=1059154&r1=1059153&r2=1059154&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 Fri Jan 14 20:19:57 2011
@@ -463,6 +463,6 @@ public class CodiUtils
 
     public static boolean isCdiInitialized()
     {
-        return BeanManagerProvider.getInstance() != null;
+        return BeanManagerProvider.isActive();
     }
 }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ViewConfigExtension.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/config/view/ViewConfigExtension.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ViewConfigExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/ViewConfigExtension.java Fri Jan 14 20:19:57 2011
@@ -20,6 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.config.view.ViewConfig;
 import org.apache.myfaces.extensions.cdi.core.api.config.view.View;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
@@ -54,6 +55,8 @@ public class ViewConfigExtension impleme
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+
         if (processAnnotatedType.getAnnotatedType().isAnnotationPresent(Page.class))
         {
             addPageDefinition(processAnnotatedType.getAnnotatedType().getJavaClass());

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.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/listener/phase/PhaseListenerExtension.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/phase/PhaseListenerExtension.java Fri Jan 14 20:19:57 2011
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.jsf.impl.listener.phase;
 
 import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
 import org.apache.myfaces.extensions.cdi.core.impl.InvocationOrderComparator;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
@@ -52,6 +53,8 @@ public class PhaseListenerExtension impl
 
     public void filterJsfPhaseListeners(@Observes ProcessAnnotatedType processAnnotatedType)
     {
+        CodiStartupBroadcaster.broadcastStartup();
+
         if (processAnnotatedType.getAnnotatedType().isAnnotationPresent(JsfPhaseListener.class))
         {
             Class<? extends PhaseListener> phaseListenerClass
@@ -86,6 +89,9 @@ public class PhaseListenerExtension impl
 
     public static List<PhaseListener> consumePhaseListeners()
     {
+        //workaround for mojarra
+        CodiStartupBroadcaster.broadcastStartup();
+
         ClassLoader classLoader = getClassLoader();
         List<Class<? extends PhaseListener>> foundPhaseListeners = phaseListeners.get(classLoader);
 

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/CodiRenderKitFactory.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/scope/conversation/CodiRenderKitFactory.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/CodiRenderKitFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/CodiRenderKitFactory.java Fri Jan 14 20:19:57 2011
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation;
 
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.RenderKitWrapperFactory;
@@ -95,10 +96,16 @@ public class CodiRenderKitFactory extend
 
     private void lazyInit()
     {
-        if(this.renderKitWrapperFactory == null && CodiUtils.isCdiInitialized())
+        if(this.renderKitWrapperFactory == null)
         {
-            this.renderKitWrapperFactory = CodiUtils
-                    .getContextualReferenceByClass(RenderKitWrapperFactory.class, true);
+            //workaround for mojarra
+            CodiStartupBroadcaster.broadcastStartup();
+
+            if(CodiUtils.isCdiInitialized())
+            {
+                this.renderKitWrapperFactory = CodiUtils
+                        .getContextualReferenceByClass(RenderKitWrapperFactory.class, true);
+            }
         }
 
         if(CodiUtils.isCdiInitialized())

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/GroupedConversationContextExtension.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/scope/conversation/GroupedConversationContextExtension.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/GroupedConversationContextExtension.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/GroupedConversationContextExtension.java Fri Jan 14 20:19:57 2011
@@ -22,6 +22,7 @@ import org.apache.myfaces.extensions.cdi
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationGroup;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.AbstractGroupedConversationContext;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.ConversationContextAdapter;
@@ -49,6 +50,8 @@ public class GroupedConversationContextE
             return;
         }
 
+        //here we don't need CodiStartupBroadcaster.broadcastStartup(); see #validateScopes
+
         AbstractGroupedConversationContext codiConversationContext = new GroupedConversationContext(manager);
         event.addContext(new ConversationContextAdapter(WindowScoped.class, codiConversationContext));
         event.addContext(new ConversationContextAdapter(ConversationScoped.class, codiConversationContext));
@@ -63,6 +66,8 @@ public class GroupedConversationContextE
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+
         Bean<?> bean = processBean.getBean();
         Set<Annotation> qualifiers = bean.getQualifiers();
 

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/CodiRenderKitFactory.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/conversation/CodiRenderKitFactory.java?rev=1059154&r1=1059153&r2=1059154&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/CodiRenderKitFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/CodiRenderKitFactory.java Fri Jan 14 20:19:57 2011
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.jsf2.impl.scope.conversation;
 
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.RenderKitWrapperFactory;
@@ -96,10 +97,16 @@ public class CodiRenderKitFactory extend
 
     private void lazyInit()
     {
-        if(this.renderKitWrapperFactory == null && CodiUtils.isCdiInitialized())
+        if(this.renderKitWrapperFactory == null)
         {
-            this.renderKitWrapperFactory = CodiUtils
-                    .getContextualReferenceByClass(RenderKitWrapperFactory.class, true);
+            //workaround for mojarra
+            CodiStartupBroadcaster.broadcastStartup();
+
+            if(CodiUtils.isCdiInitialized())
+            {
+                this.renderKitWrapperFactory = CodiUtils
+                        .getContextualReferenceByClass(RenderKitWrapperFactory.class, true);
+            }
         }
 
         if(CodiUtils.isCdiInitialized())

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=1059154&r1=1059153&r2=1059154&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 Fri Jan 14 20:19:57 2011
@@ -20,6 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.impl.projectstage.ProjectStageProducer;
 
@@ -64,6 +65,8 @@ public class MappedJsf2ScopeExtension im
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+
         Class<? extends Annotation> jsf2ScopeAnnotation = getJsf2ScopeAnnotation(processAnnotatedType);
 
         if(jsf2ScopeAnnotation != null && !beanUsesUnsupportedManagedBeanAnnotation(processAnnotatedType))

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=1059154&r1=1059153&r2=1059154&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 Fri Jan 14 20:19:57 2011
@@ -21,6 +21,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.Deactivatable;
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import org.apache.myfaces.extensions.cdi.core.api.startup.CodiStartupBroadcaster;
 import org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation;
 import org.apache.myfaces.extensions.cdi.core.impl.projectstage.ProjectStageProducer;
 
@@ -70,6 +71,8 @@ public class ViewScopedExtension impleme
             return;
         }
 
+        CodiStartupBroadcaster.broadcastStartup();
+        
         try
         {
             // we need to do this manually because there is no dependency injection in place