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/22 14:07:27 UTC

svn commit: r1051882 - in /myfaces/extensions/cdi/trunk: core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/ core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/ jee-modules/bv-module/impl/src/main/java/org/ap...

Author: gpetracek
Date: Wed Dec 22 13:07:26 2010
New Revision: 1051882

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

Added:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/CodiCoreConfig.java
Modified:
    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/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareBeanValidationProducer.java
    myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareValidatorFactory.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/listener/request/CodiFacesContextWrapper.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/InjectionAwareApplicationWrapper.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/CodiFacesContextWrapper.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/InjectionAwareApplicationWrapper.java

Added: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/CodiCoreConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/CodiCoreConfig.java?rev=1051882&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/CodiCoreConfig.java (added)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/config/CodiCoreConfig.java Wed Dec 22 13:07:26 2010
@@ -0,0 +1,39 @@
+/*
+ * 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.config;
+
+import javax.enterprise.context.ApplicationScoped;
+
+/**
+ * @author Gerhard Petracek
+ */
+@ApplicationScoped
+public class CodiCoreConfig extends AbstractAttributeAware implements CodiConfig
+{
+    private static final long serialVersionUID = -3332668819111106748L;
+
+    protected CodiCoreConfig()
+    {
+    }
+
+    public boolean isAdvancedQualifierRequiredForDependencyInjection()
+    {
+        return false;
+    }
+}

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=1051882&r1=1051881&r2=1051882&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 22 13:07:26 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.core.impl.util;
 
 import org.apache.myfaces.extensions.cdi.core.api.Advanced;
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
 import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
 import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
@@ -192,16 +193,27 @@ public class CodiUtils
         return getContextualReferenceByClass(ProjectStage.class);
     }
 
-    public static <T> T tryToInjectDependencies(T instance)
+    public static <T> T injectFields(T instance)
+    {
+        CodiCoreConfig codiCoreConfig = getContextualReferenceByClass(CodiCoreConfig.class);
+
+        return injectFields(instance, codiCoreConfig.isAdvancedQualifierRequiredForDependencyInjection());
+    }
+
+    public static <T> T injectFields(T instance, boolean requiresAdvancedQualifier)
     {
         if(instance == null)
         {
             return null;
         }
 
-        if(instance.getClass().isAnnotationPresent(Advanced.class))
+        if(requiresAdvancedQualifier && instance.getClass().isAnnotationPresent(Advanced.class))
+        {
+            tryToInjectFields(instance);
+        }
+        else if(!requiresAdvancedQualifier)
         {
-            injectFields(instance);
+            tryToInjectFields(instance);
         }
         return instance;
     }
@@ -215,7 +227,7 @@ public class CodiUtils
      * a manually injected instance (or null if the given instance is null)
      */
     @SuppressWarnings({"unchecked"})
-    public static <T> T injectFields(T instance)
+    private static <T> T tryToInjectFields(T instance)
     {
         if(instance == null)
         {

Modified: myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareBeanValidationProducer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareBeanValidationProducer.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareBeanValidationProducer.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareBeanValidationProducer.java Wed Dec 22 13:07:26 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.bv.impl;
 
 import org.apache.myfaces.extensions.cdi.core.api.Advanced;
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.resolver.qualifier.BeanValidation;
 import org.apache.myfaces.extensions.cdi.core.api.resolver.GenericResolver;
 import static org.apache.myfaces.extensions.cdi.bv.api.BeanValidationModuleBeanNames.VALIDATOR_FACTORY;
@@ -45,7 +46,8 @@ public class CdiAwareBeanValidationProdu
     @Advanced
     @Named(VALIDATOR_FACTORY)
     public ValidatorFactory createValidatorFactoryForDependencyInjectionAwareConstraintValidators(
-            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver)
+            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver,
+            CodiCoreConfig codiCoreConfig)
     {
         ValidatorFactory validatorFactory = validatorFactoryResolver.resolve();
         if (validatorFactory == null)
@@ -53,36 +55,39 @@ public class CdiAwareBeanValidationProdu
             validatorFactory = ValidatorFactoryStorage.getOrCreateValidatorFactory();
         }
 
-        return new CdiAwareValidatorFactory(validatorFactory);
+        return new CdiAwareValidatorFactory(validatorFactory, codiCoreConfig);
     }
 
     @Produces
     @Dependent
     @Advanced
     public Validator createValidatorForDependencyInjectionAwareConstraintValidators(
-            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver)
+            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver,
+            CodiCoreConfig codiCoreConfig)
     {
         return createValidatorFactoryForDependencyInjectionAwareConstraintValidators(
-                validatorFactoryResolver).getValidator();
+                validatorFactoryResolver, codiCoreConfig).getValidator();
     }
 
     @Produces
     @Dependent
     @Advanced
     public ConstraintValidatorFactory createConstraintValidatorFactoryForDependencyInjectionAwareConstraintValidators(
-            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver)
+            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver,
+            CodiCoreConfig codiCoreConfig)
     {
         return createValidatorFactoryForDependencyInjectionAwareConstraintValidators(
-                validatorFactoryResolver).getConstraintValidatorFactory();
+                validatorFactoryResolver, codiCoreConfig).getConstraintValidatorFactory();
     }
 
     @Produces
     @Dependent
     @Advanced
     public MessageInterpolator createMessageInterpolator(
-            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver)
+            @BeanValidation GenericResolver<ValidatorFactory> validatorFactoryResolver,
+            CodiCoreConfig codiCoreConfig)
     {
         return createValidatorFactoryForDependencyInjectionAwareConstraintValidators(
-                validatorFactoryResolver).getMessageInterpolator();
+                validatorFactoryResolver, codiCoreConfig).getMessageInterpolator();
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareValidatorFactory.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareValidatorFactory.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareValidatorFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/bv-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/bv/impl/CdiAwareValidatorFactory.java Wed Dec 22 13:07:26 2010
@@ -18,6 +18,8 @@
  */
 package org.apache.myfaces.extensions.cdi.bv.impl;
 
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
+
 import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.injectFields;
 
 import javax.enterprise.inject.Typed;
@@ -37,10 +39,13 @@ public class CdiAwareValidatorFactory im
 {
     private ValidatorFactory wrappedValidatorFactory;
     private boolean customContextUsed;
+    private boolean advancedQualifierRequiredForDependencyInjection;
 
-    protected CdiAwareValidatorFactory(ValidatorFactory wrappedValidatorFactory)
+    protected CdiAwareValidatorFactory(ValidatorFactory wrappedValidatorFactory, CodiCoreConfig codiCoreConfig)
     {
         this.wrappedValidatorFactory = wrappedValidatorFactory;
+        this.advancedQualifierRequiredForDependencyInjection =
+                codiCoreConfig.isAdvancedQualifierRequiredForDependencyInjection();
     }
 
     public Validator getValidator()
@@ -77,7 +82,7 @@ public class CdiAwareValidatorFactory im
             {
                 T validator = wrappedValidatorFactory.getConstraintValidatorFactory().getInstance(targetClass);
 
-                return injectFields(validator);
+                return injectFields(validator, advancedQualifierRequiredForDependencyInjection);
             }
         };
     }

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=1051882&r1=1051881&r2=1051882&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 Wed Dec 22 13:07:26 2010
@@ -18,8 +18,10 @@
  */
 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.util.ClassUtils;
 import org.apache.myfaces.extensions.cdi.core.impl.InvocationOrderComparator;
+import org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils;
 import org.apache.myfaces.extensions.cdi.jsf.api.listener.phase.JsfPhaseListener;
 
 import javax.enterprise.event.Observes;
@@ -34,7 +36,7 @@ import java.util.concurrent.ConcurrentHa
 import java.util.concurrent.CopyOnWriteArrayList;
 
 import static org.apache.myfaces.extensions.cdi.core.impl.util.ClassDeactivation.isClassActivated;
-import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.tryToInjectDependencies;
+import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.injectFields;
 
 /**
  * The PhaseListenerExtension picks up all {@link JsfPhaseListener} annotated
@@ -87,6 +89,10 @@ public class PhaseListenerExtension impl
         ClassLoader classLoader = getClassLoader();
         List<Class<? extends PhaseListener>> foundPhaseListeners = phaseListeners.get(classLoader);
 
+        boolean advancedQualifierRequiredForDependencyInjection =
+                CodiUtils.getContextualReferenceByClass(CodiCoreConfig.class)
+                        .isAdvancedQualifierRequiredForDependencyInjection();
+
         if(foundPhaseListeners != null && ! foundPhaseListeners.isEmpty())
         {
             List<PhaseListener> result = new ArrayList<PhaseListener>(foundPhaseListeners.size());
@@ -94,7 +100,7 @@ public class PhaseListenerExtension impl
             for(Class<? extends PhaseListener> phaseListenerClass : foundPhaseListeners)
             {
                 PhaseListener phaseListener = createPhaseListenerInstance(phaseListenerClass);
-                result.add(tryToInjectDependencies(phaseListener));
+                result.add(injectFields(phaseListener, advancedQualifierRequiredForDependencyInjection));
             }
 
             foundPhaseListeners.clear();

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/CodiFacesContextWrapper.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/request/CodiFacesContextWrapper.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/CodiFacesContextWrapper.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/CodiFacesContextWrapper.java Wed Dec 22 13:07:26 2010
@@ -18,8 +18,10 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf.impl.listener.request;
 
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
 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.RedirectedConversationAwareExternalContext;
 
 import javax.el.ELContext;
@@ -50,6 +52,8 @@ class CodiFacesContextWrapper extends Fa
 
     private BeanManager beanManager;
 
+    private CodiCoreConfig codiCoreConfig;
+
     private BeforeAfterFacesRequestBroadcaster beforeAfterFacesRequestBroadcaster;
 
     CodiFacesContextWrapper(FacesContext wrappedFacesContext)
@@ -68,6 +72,8 @@ class CodiFacesContextWrapper extends Fa
     {
         this.beanManager = BeanManagerProvider.getInstance().getBeanManager();
 
+        this.codiCoreConfig = CodiUtils.getOrCreateScopedInstanceOfBeanByClass(this.beanManager, CodiCoreConfig.class);
+
         initBroadcaster();
 
         broadcastBeforeFacesRequestEvent();
@@ -75,7 +81,7 @@ class CodiFacesContextWrapper extends Fa
 
     public Application getApplication()
     {
-        return new InjectionAwareApplicationWrapper(wrappedFacesContext.getApplication());
+        return new InjectionAwareApplicationWrapper(wrappedFacesContext.getApplication(), this.codiCoreConfig);
     }
 
     private void broadcastBeforeFacesRequestEvent()

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/InjectionAwareApplicationWrapper.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/request/InjectionAwareApplicationWrapper.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/InjectionAwareApplicationWrapper.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/listener/request/InjectionAwareApplicationWrapper.java Wed Dec 22 13:07:26 2010
@@ -18,7 +18,9 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf.impl.listener.request;
 
-import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.tryToInjectDependencies;
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
+
+import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.injectFields;
 
 import javax.faces.application.Application;
 import javax.faces.application.ViewHandler;
@@ -54,24 +56,31 @@ class InjectionAwareApplicationWrapper e
 {
     private Application wrapped;
 
-    protected InjectionAwareApplicationWrapper(Application wrapped)
+    private boolean advancedQualifierRequiredForDependencyInjection;
+
+    protected InjectionAwareApplicationWrapper(Application wrapped, CodiCoreConfig codiCoreConfig)
     {
         this.wrapped = wrapped;
+        this.advancedQualifierRequiredForDependencyInjection =
+                codiCoreConfig.isAdvancedQualifierRequiredForDependencyInjection();
     }
 
     public Converter createConverter(String converterId)
     {
-        return tryToInjectDependencies(this.wrapped.createConverter(converterId));
+        return injectFields(this.wrapped.createConverter(converterId),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 
     public Converter createConverter(Class targetClass)
     {
-        return tryToInjectDependencies(this.wrapped.createConverter(targetClass));
+        return injectFields(this.wrapped.createConverter(targetClass),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 
     public Validator createValidator(String validatorId) throws FacesException
     {
-        return tryToInjectDependencies(this.wrapped.createValidator(validatorId));
+        return injectFields(this.wrapped.createValidator(validatorId),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 
     /*

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/CodiFacesContextWrapper.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/listener/request/CodiFacesContextWrapper.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/CodiFacesContextWrapper.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/CodiFacesContextWrapper.java Wed Dec 22 13:07:26 2010
@@ -18,8 +18,10 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf2.impl.listener.request;
 
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
 import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
 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.listener.request.BeforeAfterFacesRequestBroadcaster;
 import org.apache.myfaces.extensions.cdi.jsf2.impl.scope.conversation.RedirectedConversationAwareExternalContext;
 
@@ -43,6 +45,8 @@ class CodiFacesContextWrapper extends Fa
 
     private BeanManager beanManager;
 
+    private CodiCoreConfig codiCoreConfig;
+
     private BeforeAfterFacesRequestBroadcaster beforeAfterFacesRequestBroadcaster;
 
     CodiFacesContextWrapper(FacesContext wrappedFacesContext)
@@ -61,6 +65,8 @@ class CodiFacesContextWrapper extends Fa
     {
         this.beanManager = BeanManagerProvider.getInstance().getBeanManager();
 
+        this.codiCoreConfig = CodiUtils.getOrCreateScopedInstanceOfBeanByClass(this.beanManager, CodiCoreConfig.class);
+        
         initBroadcaster();
 
         broadcastBeforeFacesRequestEvent();
@@ -69,7 +75,7 @@ class CodiFacesContextWrapper extends Fa
     @Override
     public Application getApplication()
     {
-        return new InjectionAwareApplicationWrapper(wrappedFacesContext.getApplication());
+        return new InjectionAwareApplicationWrapper(wrappedFacesContext.getApplication(), this.codiCoreConfig);
     }
 
     private void broadcastBeforeFacesRequestEvent()

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/InjectionAwareApplicationWrapper.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/listener/request/InjectionAwareApplicationWrapper.java?rev=1051882&r1=1051881&r2=1051882&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/InjectionAwareApplicationWrapper.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/listener/request/InjectionAwareApplicationWrapper.java Wed Dec 22 13:07:26 2010
@@ -18,7 +18,8 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf2.impl.listener.request;
 
-import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.tryToInjectDependencies;
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;
+import static org.apache.myfaces.extensions.cdi.core.impl.util.CodiUtils.injectFields;
 
 import javax.faces.application.ApplicationWrapper;
 import javax.faces.application.Application;
@@ -35,9 +36,13 @@ class InjectionAwareApplicationWrapper e
 {
     private Application wrapped;
 
-    protected InjectionAwareApplicationWrapper(Application wrapped)
+    private boolean advancedQualifierRequiredForDependencyInjection;
+
+    protected InjectionAwareApplicationWrapper(Application wrapped, CodiCoreConfig codiCoreConfig)
     {
         this.wrapped = wrapped;
+        this.advancedQualifierRequiredForDependencyInjection =
+                codiCoreConfig.isAdvancedQualifierRequiredForDependencyInjection();
     }
 
     public Application getWrapped()
@@ -48,18 +53,21 @@ class InjectionAwareApplicationWrapper e
     @Override
     public Converter createConverter(String converterId)
     {
-        return tryToInjectDependencies(this.wrapped.createConverter(converterId));
+        return injectFields(this.wrapped.createConverter(converterId),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 
     @Override
     public Converter createConverter(Class targetClass)
     {
-        return tryToInjectDependencies(this.wrapped.createConverter(targetClass));
+        return injectFields(this.wrapped.createConverter(targetClass),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 
     @Override
     public Validator createValidator(String validatorId) throws FacesException
     {
-        return tryToInjectDependencies(this.wrapped.createValidator(validatorId));
+        return injectFields(this.wrapped.createValidator(validatorId),
+                this.advancedQualifierRequiredForDependencyInjection);
     }
 }