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/11/05 04:48:33 UTC

svn commit: r1031421 - in /myfaces/extensions/cdi/trunk: core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/ core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/ core/impl/src/main/java/org/apache/myfaces/extension...

Author: gpetracek
Date: Fri Nov  5 03:48:32 2010
New Revision: 1031421

URL: http://svn.apache.org/viewvc?rev=1031421&view=rev
Log:
EXTCDI-6 cleanup and unified approach for custom configs/implementations

Added:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/Custom.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/
      - copied from r1030384, myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/DefaultConfigResolver.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomLiteral.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomizableImplementationUtils.java
Removed:
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/config/
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/ConfigProducer.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/ConfigStorage.java
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/ApplicationCache.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/CustomImplementationParser.java
Modified:
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/examples/codi/jsf12/listener/phase/ConfigDemoBean.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/DefaultWindowContextConfig.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextManager.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextQuotaHandler.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowHandler.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/InstanceProducer.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfAwareConversationFactory.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/RequestCache.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/ServerSideWindowHandler.java

Added: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/Custom.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/Custom.java?rev=1031421&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/Custom.java (added)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/Custom.java Fri Nov  5 03:48:32 2010
@@ -0,0 +1,40 @@
+/*
+ * 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;
+
+import javax.inject.Qualifier;
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Documented;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import static java.lang.annotation.ElementType.*;
+
+/**
+ * Qualifier which is used for custom implementations which should be used by CODI
+ *
+ * @author Gerhard Petracek
+ */
+@Target({PARAMETER, FIELD, METHOD, CONSTRUCTOR, TYPE})
+@Retention(RUNTIME)
+@Documented
+
+@Qualifier
+public @interface Custom
+{
+}
\ No newline at end of file

Added: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/DefaultConfigResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/DefaultConfigResolver.java?rev=1031421&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/DefaultConfigResolver.java (added)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/resolver/DefaultConfigResolver.java Fri Nov  5 03:48:32 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.impl.resolver;
+
+import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
+import org.apache.myfaces.extensions.cdi.core.api.config.CodiConfig;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.*;
+
+import javax.enterprise.context.ApplicationScoped;
+
+/**
+ * @author Gerhard Petracek
+ */
+@ApplicationScoped
+public class DefaultConfigResolver implements ConfigResolver
+{
+    private static final long serialVersionUID = -4410313406799415118L;
+
+    public <T extends CodiConfig> T resolve(Class<T> targetType)
+    {
+        return resolveCustomizableImplementation(targetType);
+    }
+}

Added: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomLiteral.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomLiteral.java?rev=1031421&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomLiteral.java (added)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomLiteral.java Fri Nov  5 03:48:32 2010
@@ -0,0 +1,33 @@
+/*
+ * 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.impl.utils;
+
+import org.apache.myfaces.extensions.cdi.core.api.Custom;
+
+import javax.enterprise.util.AnnotationLiteral;
+
+/**
+ * Literal for the {@link org.apache.myfaces.extensions.cdi.core.api.Custom} annotation.
+ *
+ * @author Gerhard Petracek
+ */
+public class CustomLiteral extends AnnotationLiteral<Custom> implements Custom
+{
+    private static final long serialVersionUID = -2986588961156398003L;
+}
\ No newline at end of file

Added: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomizableImplementationUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomizableImplementationUtils.java?rev=1031421&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomizableImplementationUtils.java (added)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/utils/CustomizableImplementationUtils.java Fri Nov  5 03:48:32 2010
@@ -0,0 +1,142 @@
+/*
+ * 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.impl.utils;
+
+import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
+import org.apache.myfaces.extensions.cdi.core.api.Custom;
+import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.ClassDeactivation.isClassActivated;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.context.NormalScope;
+import javax.inject.Singleton;
+import java.util.Set;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @author Gerhard Petracek
+ */
+public class CustomizableImplementationUtils
+{
+    private static final Custom CUSTOM = new CustomLiteral();
+
+    private static Map<ClassLoader, Map<Class, Bean<?>>> beanCache
+            = new ConcurrentHashMap<ClassLoader, Map<Class, Bean<?>>>();
+
+    public static <T> T resolveCustomizableImplementation(Class<T> targetType)
+    {
+        Bean<T> foundBean = resolveCustomizableBean(targetType);
+
+        if(foundBean == null)
+        {
+            return null;
+        }
+        return CodiUtils.getOrCreateScopedInstanceOfBean(foundBean);
+    }
+
+    public static <T> Bean<T> resolveCustomizableBean(Class<T> targetType)
+    {
+        Bean<T> bean = getCachedBean(targetType);
+
+        if(bean != null)
+        {
+            return bean;
+        }
+
+        BeanManager beanManager = BeanManagerProvider.getInstance().getBeanManager();
+
+        Set<?> customBeans = beanManager.getBeans(targetType, CUSTOM);
+
+        if (customBeans.isEmpty())
+        {
+            customBeans = getDefaultImplementation(beanManager, targetType);
+        }
+
+        if(customBeans.size() > 1)
+        {
+            for(Object foundBean : customBeans)
+            {
+                if(foundBean instanceof Bean)
+                {
+                    if(isClassActivated(((Bean)foundBean).getBeanClass()))
+                    {
+                        //noinspection unchecked
+                        bean = (Bean<T>)foundBean;
+                        break;
+                    }
+                }
+            }
+        }
+
+        if (customBeans.size() == 1)
+        {
+            //noinspection unchecked
+            bean = (Bean<T>) customBeans.iterator().next();
+        }
+
+        if(bean != null)
+        {
+            if(bean.getScope().isAnnotationPresent(NormalScope.class) || Singleton.class.equals(bean.getScope()))
+            {
+                cacheBean(targetType, bean);
+            }
+        }
+        else
+        {
+            //TODO log warning
+        }
+        return bean;
+    }
+
+    public static <T> Bean<T> getCachedBean(Class<T> targetType)
+    {
+        Map<Class, Bean<?>> beanMap = beanCache.get(getClassLoader());
+
+        if(beanMap == null)
+        {
+            return null;
+        }
+        //noinspection unchecked
+        return (Bean<T>)beanMap.get(targetType);
+    }
+
+    private static <T> void cacheBean(Class<T> targetType, Bean<T> bean)
+    {
+        Map<Class, Bean<?>> beanMap = beanCache.get(getClassLoader());
+
+        if(beanMap == null)
+        {
+            beanMap = new ConcurrentHashMap<Class, Bean<?>>();
+            beanCache.put(getClassLoader(), beanMap);
+        }
+        beanMap.put(targetType, bean);
+    }
+
+    private static Set<Bean<?>> getDefaultImplementation(BeanManager beanManager, Class defaultImplementation)
+    {
+        return beanManager.getBeans(defaultImplementation);
+    }
+
+    private static ClassLoader getClassLoader()
+    {
+        return ClassUtils.getClassLoader(null);
+    }
+}

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/examples/codi/jsf12/listener/phase/ConfigDemoBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/examples/codi/jsf12/listener/phase/ConfigDemoBean.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/examples/codi/jsf12/listener/phase/ConfigDemoBean.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/examples/codi/jsf12/listener/phase/ConfigDemoBean.java Fri Nov  5 03:48:32 2010
@@ -18,7 +18,6 @@
  */
 package org.apache.myfaces.examples.codi.jsf12.listener.phase;
 
-import org.apache.myfaces.extensions.cdi.core.api.config.CodiConfig;
 import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
 import org.apache.myfaces.extensions.cdi.jsf.impl.config.DefaultWindowContextConfig;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
@@ -26,7 +25,6 @@ import org.apache.myfaces.extensions.cdi
 import javax.enterprise.inject.Model;
 import javax.enterprise.inject.Typed;
 import javax.inject.Inject;
-import java.util.Set;
 
 //just an internal demo
 @Model
@@ -36,9 +34,6 @@ public class ConfigDemoBean extends Defa
     private static final long serialVersionUID = -6915243682321970384L;
 
     @Inject
-    private Set<CodiConfig> codiConfig;
-
-    @Inject
     private ConfigResolver configResolver;
 
     public ConfigDemoBean()
@@ -46,12 +41,11 @@ public class ConfigDemoBean extends Defa
     }
 
     @Inject
-    public ConfigDemoBean(Set<CodiConfig> codiConfig, ConfigResolver configResolver)
+    public ConfigDemoBean(ConfigResolver configResolver)
     {
-        this.codiConfig = codiConfig;
         this.configResolver = configResolver;
 
-        if(this.codiConfig.isEmpty() || this.configResolver.resolve(JsfAwareWindowContextConfig.class) == null)
+        if(this.configResolver.resolve(JsfAwareWindowContextConfig.class) == null)
         {
             throw new IllegalStateException("invalid config");
         }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/DefaultWindowContextConfig.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/DefaultWindowContextConfig.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/DefaultWindowContextConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/DefaultWindowContextConfig.java Fri Nov  5 03:48:32 2010
@@ -20,15 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
 import org.apache.myfaces.extensions.cdi.core.impl.utils.CodiUtils;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.DefaultWindowContextQuotaHandler;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.DefaultWindowHandler;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.JsfAwareConversationFactory;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.ConversationFactory;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowContextFactory;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowContextManagerFactory;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowContextQuotaHandler;
-import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowHandler;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.faces.context.FacesContext;
@@ -164,36 +156,6 @@ public class DefaultWindowContextConfig 
         return getAttribute(DISABLE_INITIAL_REDIRECT, Boolean.class);
     }
 
-    public ConversationFactory getConversationFactory()
-    {
-        lazyInit();
-        return getAttribute(ConversationFactory.class.getName(), ConversationFactory.class);
-    }
-
-    public WindowContextFactory getWindowContextFactory()
-    {
-        lazyInit();
-        return getAttribute(WindowContextFactory.class.getName(), WindowContextFactory.class);
-    }
-
-    public WindowContextManagerFactory getWindowContextManagerFactory()
-    {
-        lazyInit();
-        return getAttribute(WindowContextManagerFactory.class.getName(), WindowContextManagerFactory.class);
-    }
-
-    public WindowContextQuotaHandler getWindowContextQuotaHandler()
-    {
-        lazyInit();
-        return getAttribute(WindowContextQuotaHandler.class.getName(), WindowContextQuotaHandler.class);
-    }
-
-    public WindowHandler getWindowHandler()
-    {
-        lazyInit();
-        return getAttribute(WindowHandler.class.getName(), WindowHandler.class);
-    }
-
     private void lazyInit()
     {
         if (configInitialized == null)
@@ -219,13 +181,6 @@ public class DefaultWindowContextConfig 
         initDisableInitialRedirect(facesContext);
         initConversatonEvents(facesContext);
         initActionUrlEncoding(facesContext);
-
-        //init custom implementations
-        initWindowContextManagerFactory(facesContext);
-        initWindowContextFactory(facesContext);
-        initConversationFactory(facesContext);
-        initWindowContextQuotaHandler(facesContext);
-        initWindowHandler(facesContext);
     }
 
     private void initUrlParameterEnabled(FacesContext facesContext)
@@ -343,52 +298,6 @@ public class DefaultWindowContextConfig 
                 ADD_WINDOW_ID_TO_ACTION_URL_ENABLED_DEFAULT);
     }
 
-    /*
-     * custom implementations
-     */
-    private void initWindowContextManagerFactory(FacesContext facesContext)
-    {
-        initConfig(facesContext,
-                   WindowContextManagerFactory.class.getName(),
-                   new CustomImplementationParser<WindowContextManagerFactory>(),
-                   null);
-    }
-
-    private void initWindowContextFactory(FacesContext facesContext)
-    {
-        initConfig(facesContext,
-                   WindowContextFactory.class.getName(),
-                   new CustomImplementationParser<WindowContextFactory>(),
-                   null);
-    }
-
-    private void initConversationFactory(FacesContext facesContext)
-    {
-        initConfig(facesContext,
-                   ConversationFactory.class.getName(),
-                   new CustomImplementationParser<ConversationFactory>(),
-                   new JsfAwareConversationFactory());
-    }
-
-    private void initWindowContextQuotaHandler(FacesContext facesContext)
-    {
-        initConfig(facesContext,
-                   WindowContextQuotaHandler.class.getName(),
-                   new CustomImplementationParser<WindowContextQuotaHandler>(),
-                   new DefaultWindowContextQuotaHandler(getMaxWindowContextCount()));
-    }
-
-    private void initWindowHandler(FacesContext facesContext)
-    {
-        initConfig(facesContext,
-                   WindowHandler.class.getName(),
-                   new CustomImplementationParser<WindowHandler>(),
-                   new DefaultWindowHandler(isUrlParameterSupported())
-                   {
-                       private static final long serialVersionUID = 7376499174252256735L;
-                   });
-    }
-
     protected <T> void initConfig(FacesContext facesContext,
                                   String configKey,
                                   ConfigValueParser<T> configValueParser,

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextManager.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/DefaultWindowContextManager.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextManager.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextManager.java Fri Nov  5 03:48:32 2010
@@ -23,6 +23,7 @@ import org.apache.myfaces.extensions.cdi
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.event.CreateWindowContextEvent;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.event.CloseWindowContextEvent;
 import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.*;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableConversation;
 import org.apache.myfaces.extensions.cdi.jsf.impl.util.ConversationUtils;
 import org.apache.myfaces.extensions.cdi.jsf.impl.util.JsfUtils;
@@ -97,8 +98,8 @@ public class DefaultWindowContextManager
 
     protected void init()
     {
-        this.windowHandler = this.jsfAwareWindowContextConfig.getWindowHandler();
-        this.windowContextQuotaHandler = this.jsfAwareWindowContextConfig.getWindowContextQuotaHandler();
+        this.windowHandler = resolveCustomizableImplementation(WindowHandler.class);
+        this.windowContextQuotaHandler = resolveCustomizableImplementation(WindowContextQuotaHandler.class);
         this.allowUnknownWindowIds = this.jsfAwareWindowContextConfig.isUnknownWindowIdsAllowed();
         this.urlParameterSupported = this.jsfAwareWindowContextConfig.isUrlParameterSupported();
 
@@ -187,7 +188,7 @@ public class DefaultWindowContextManager
 
     private EditableWindowContext createWindowContext(String windowContextId)
     {
-        WindowContextFactory windowContextFactory = this.jsfAwareWindowContextConfig.getWindowContextFactory();
+        WindowContextFactory windowContextFactory = resolveCustomizableImplementation(WindowContextFactory.class);
 
         if(windowContextFactory != null)
         {

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextQuotaHandler.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/DefaultWindowContextQuotaHandler.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextQuotaHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowContextQuotaHandler.java Fri Nov  5 03:48:32 2010
@@ -21,25 +21,36 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowContextQuotaHandler;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableWindowContext;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableWindowContextManager;
+import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
 import static org.apache.myfaces.extensions.cdi.jsf.impl.util.ExceptionUtils.tooManyOpenWindowException;
 import org.apache.myfaces.extensions.cdi.jsf.impl.util.ConversationUtils;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
+import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
 
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import java.util.Collection;
 import java.util.Date;
 
 /**
  * @author Gerhard Petracek
  */
+@ApplicationScoped
 public class DefaultWindowContextQuotaHandler implements WindowContextQuotaHandler
 {
     private static final long serialVersionUID = 4354405166761604711L;
 
-    private final int maxWindowContextCount;
+    private int maxWindowContextCount;
 
-    public DefaultWindowContextQuotaHandler(int maxWindowContextCount)
+    public DefaultWindowContextQuotaHandler()
     {
-        this.maxWindowContextCount = maxWindowContextCount;
+    }
+
+    @Inject
+    public DefaultWindowContextQuotaHandler(ConfigResolver configResolver)
+    {
+        this.maxWindowContextCount = configResolver.resolve(JsfAwareWindowContextConfig.class)
+                .getMaxWindowContextCount();
     }
 
     public boolean checkQuota(int activeWindowContextCount)

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowHandler.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/DefaultWindowHandler.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultWindowHandler.java Fri Nov  5 03:48:32 2010
@@ -20,8 +20,10 @@ package org.apache.myfaces.extensions.cd
 
 import static org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager
         .WINDOW_CONTEXT_ID_PARAMETER_KEY;
+import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
 
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowHandler;
+import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
 import org.apache.myfaces.extensions.cdi.jsf.impl.util.RequestCache;
 import static org.apache.myfaces.extensions.cdi.jsf.impl.util.ConversationUtils
         .getExistingWindowIdSet;
@@ -30,6 +32,8 @@ import static org.apache.myfaces.extensi
 
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import java.io.IOException;
 import java.util.Set;
 import java.util.UUID;
@@ -38,18 +42,26 @@ import java.util.Map;
 /**
  * @author Gerhard Petracek
  */
+@ApplicationScoped
 public class DefaultWindowHandler implements WindowHandler
 {
     private static final long serialVersionUID = -103516988654873089L;
+
     private static final int DEFAULT_WINDOW_KEY_LENGTH = 3;
 
     private static final String WINDOW_ID_PARAMETER_KEY = WINDOW_CONTEXT_ID_PARAMETER_KEY + "=";
 
-    protected final boolean useWindowAwareUrlEncoding;
+    protected boolean useWindowAwareUrlEncoding;
+
+    protected DefaultWindowHandler()
+    {
+    }
 
-    protected DefaultWindowHandler(boolean useWindowAwareUrlEncoding)
+    @Inject
+    protected DefaultWindowHandler(ConfigResolver configResolver)
     {
-        this.useWindowAwareUrlEncoding = useWindowAwareUrlEncoding;
+        this.useWindowAwareUrlEncoding = configResolver.resolve(JsfAwareWindowContextConfig.class)
+                .isUrlParameterSupported();
     }
 
     public String encodeURL(String url)

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/InstanceProducer.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/InstanceProducer.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/InstanceProducer.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/InstanceProducer.java Fri Nov  5 03:48:32 2010
@@ -26,6 +26,7 @@ import static org.apache.myfaces.extensi
 import static org.apache.myfaces.extensions.cdi.core.impl.CoreModuleBeanNames.*;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
 import org.apache.myfaces.extensions.cdi.core.impl.utils.UnmodifiableMap;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.*;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowContextManagerFactory;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableWindowContextManager;
@@ -56,7 +57,7 @@ final class InstanceProducer
                 configResolver.resolve(JsfAwareWindowContextConfig.class);
 
         WindowContextManagerFactory windowContextManagerFactory =
-                jsfAwareWindowContextConfig.getWindowContextManagerFactory();
+                resolveCustomizableImplementation(WindowContextManagerFactory.class);
 
         if(windowContextManagerFactory != null)
         {

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfAwareConversationFactory.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/JsfAwareConversationFactory.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfAwareConversationFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfAwareConversationFactory.java Fri Nov  5 03:48:32 2010
@@ -27,10 +27,12 @@ import org.apache.myfaces.extensions.cdi
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.event.StartConversationEvent;
 
 import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.context.ApplicationScoped;
 
 /**
  * @author Gerhard Petracek
  */
+@ApplicationScoped
 public class JsfAwareConversationFactory implements ConversationFactory, BeanManagerAware
 {
     private static final long serialVersionUID = 2329113439978807663L;

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.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/JsfWindowContext.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/JsfWindowContext.java Fri Nov  5 03:48:32 2010
@@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHa
 import java.util.logging.Logger;
 
 import static org.apache.myfaces.extensions.cdi.core.impl.utils.CodiUtils.isQualifierEqual;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.*;
 import static org.apache.myfaces.extensions.cdi.jsf.impl.util.ConversationUtils.convertToScope;
 import static org.apache.myfaces.extensions.cdi.jsf.impl.util.ExceptionUtils.*;
 
@@ -203,7 +204,7 @@ public class JsfWindowContext implements
         ConversationKey conversationKey =
                 new DefaultConversationKey(scopeType, conversationGroupKey, qualifiers);
 
-        ConversationFactory conversationFactory = this.jsfAwareWindowContextConfig.getConversationFactory();
+        ConversationFactory conversationFactory = resolveCustomizableImplementation(ConversationFactory.class);
 
         if(conversationFactory instanceof BeanManagerAware)
         {

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.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/spi/JsfAwareWindowContextConfig.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/spi/JsfAwareWindowContextConfig.java Fri Nov  5 03:48:32 2010
@@ -28,15 +28,5 @@ import org.apache.myfaces.extensions.cdi
 public abstract class JsfAwareWindowContextConfig extends AbstractCodiConfig
         implements WindowContextConfig, ConversationConfig
 {
-    public abstract WindowHandler getWindowHandler();
-
-    public abstract ConversationFactory getConversationFactory();
-
-    public abstract WindowContextManagerFactory getWindowContextManagerFactory();
-
-    public abstract WindowContextFactory getWindowContextFactory();
-
-    public abstract WindowContextQuotaHandler getWindowContextQuotaHandler();
-
     public abstract boolean isInitialRedirectDisable();
 }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.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/util/ConversationUtils.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.java Fri Nov  5 03:48:32 2010
@@ -18,18 +18,15 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf.impl.util;
 
-import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
 import static org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider.getInstance;
 import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationGroup;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowContext;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
-import org.apache.myfaces.extensions.cdi.core.api.tools.DefaultAnnotation;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
-import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntryFactory;
 import org.apache.myfaces.extensions.cdi.core.impl.utils.CodiUtils;
-import org.apache.myfaces.extensions.cdi.jsf.api.Jsf;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.*;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.WindowContextIdHolderComponent;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.JsfAwareWindowContextConfig;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.WindowHandler;
@@ -61,8 +58,6 @@ public class ConversationUtils
     public static final String EXISTING_WINDOW_ID_SET_KEY =
             WindowContext.class.getName() + ":EXISTING_WINDOW_ID_LIST";
 
-    private static final Jsf JSF_QUALIFIER = DefaultAnnotation.of(Jsf.class);
-
     private static final String OLD_VIEW_ID_KEY = "oldViewId";
     private static final String NEW_VIEW_ID_KEY = "newViewId";
 
@@ -71,50 +66,6 @@ public class ConversationUtils
 
     private static final String REDIRECT_PERFORMED_KEY = WindowHandler.class.getName() + "redirect:KEY";
     
-    /**
-     * @return the descriptor of a custom
-     * {@link org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager}
-     * with the qualifier {@link org.apache.myfaces.extensions.cdi.jsf.api.Jsf} or
-     *         the descriptor of the default implementation provided by this module
-     */
-    public static Bean<WindowContextManager> resolveConversationManagerBean()
-    {
-        BeanManager beanManager = BeanManagerProvider.getInstance().getBeanManager();
-
-        Set<?> conversationManagerBeans = beanManager.getBeans(WindowContextManager.class, JSF_QUALIFIER);
-
-        if (conversationManagerBeans.isEmpty())
-        {
-            conversationManagerBeans = getDefaultConversationManager(beanManager);
-        }
-
-        if (conversationManagerBeans.size() != 1)
-        {
-            throw new IllegalStateException(conversationManagerBeans.size() + " conversation-managers were found");
-        }
-        //noinspection unchecked
-        return (Bean<WindowContextManager>) conversationManagerBeans.iterator().next();
-    }
-
-    public static Bean<BeanEntryFactory> resolveBeanEntryFactoryBean()
-    {
-        BeanManager beanManager = BeanManagerProvider.getInstance().getBeanManager();
-
-        Set<?> beanEntryFactoryBeans = beanManager.getBeans(BeanEntryFactory.class, JSF_QUALIFIER);
-
-        if (beanEntryFactoryBeans.isEmpty())
-        {
-            beanEntryFactoryBeans = getDefaultBeanEntryFactory(beanManager);
-        }
-
-        if (beanEntryFactoryBeans.size() != 1)
-        {
-            throw new IllegalStateException(beanEntryFactoryBeans.size() + " BeanEntry-Factories were found");
-        }
-        //noinspection unchecked
-        return (Bean<BeanEntryFactory>) beanEntryFactoryBeans.iterator().next();
-    }
-
     public static Class getConversationGroup(Bean<?> bean)
     {
         Class<? extends Annotation> scopeType = bean.getScope();
@@ -149,26 +100,6 @@ public class ConversationUtils
         return null;
     }
 
-    /**
-     * @param beanManager current {@link javax.enterprise.inject.spi.BeanManager}
-     * @return the descriptor of the default
-     * {@link org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager}
-     */
-    private static Set<Bean<?>> getDefaultConversationManager(BeanManager beanManager)
-    {
-        return beanManager.getBeans(WindowContextManager.class);
-    }
-
-    /**
-     * @param beanManager current {@link javax.enterprise.inject.spi.BeanManager}
-     * @return the descriptor of the default
-     * {@link org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntryFactory}
-     */
-    private static Set<Bean<?>> getDefaultBeanEntryFactory(BeanManager beanManager)
-    {
-        return beanManager.getBeans(BeanEntryFactory.class);
-    }
-
     //TODO
     public static String resolveWindowContextId(WindowHandler windowHandler,
                                                 boolean requestParameterSupported,
@@ -361,9 +292,7 @@ public class ConversationUtils
 
     private static WindowContextIdHolderComponent createComponentWithCurrentWindowContextId()
     {
-        Bean<WindowContextManager> conversationManagerBean = resolveConversationManagerBean();
-
-        WindowContextManager conversationManager = CodiUtils.getOrCreateScopedInstanceOfBean(conversationManagerBean);
+        WindowContextManager conversationManager = resolveCustomizableImplementation(WindowContextManager.class);
 
         return new WindowContextIdHolderComponent(conversationManager.getCurrentWindowContext().getId());
     }
@@ -419,7 +348,7 @@ public class ConversationUtils
 
     public static WindowHandler getWindowHandler()
     {
-        return getJsfAwareWindowContextConfig().getWindowHandler();
+        return resolveCustomizableImplementation(WindowHandler.class);
     }
 
     public static WindowContextManager getWindowContextManager()

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/RequestCache.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/util/RequestCache.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/RequestCache.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/RequestCache.java Fri Nov  5 03:48:32 2010
@@ -21,10 +21,10 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntryFactory;
 import org.apache.myfaces.extensions.cdi.core.impl.utils.CodiUtils;
+import static org.apache.myfaces.extensions.cdi.core.impl.utils.CustomizableImplementationUtils.resolveCustomizableBean;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowContext;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.ConversationKey;
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.spi.EditableConversation;
-import static org.apache.myfaces.extensions.cdi.jsf.impl.util.ConversationUtils.*;
 
 import javax.enterprise.inject.spi.Bean;
 import java.util.Map;
@@ -72,7 +72,7 @@ public class RequestCache
 
         if(windowContextManager == null)
         {
-            return resolveWindowContextManager(resolveConversationManagerBean());
+            return resolveWindowContextManager(resolveCustomizableBean(WindowContextManager.class));
         }
 
         return windowContextManager;
@@ -97,7 +97,7 @@ public class RequestCache
 
         if(beanEntryFactory == null)
         {
-            return resolveBeanEntryFactory(resolveBeanEntryFactoryBean());
+            return resolveBeanEntryFactory(resolveCustomizableBean(BeanEntryFactory.class));
         }
 
         return beanEntryFactory;

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/ServerSideWindowHandler.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/ServerSideWindowHandler.java?rev=1031421&r1=1031420&r2=1031421&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/ServerSideWindowHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/ServerSideWindowHandler.java Fri Nov  5 03:48:32 2010
@@ -21,11 +21,13 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.DefaultWindowHandler;
 
 import static org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils.tryToLoadClassForName;
+import org.apache.myfaces.extensions.cdi.core.api.resolver.ConfigResolver;
 import static org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.WindowContextManager
         .WINDOW_CONTEXT_ID_PARAMETER_KEY;
 
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
+import javax.enterprise.inject.Typed;
 import java.io.IOException;
 
 /**
@@ -34,17 +36,18 @@ import java.io.IOException;
  *
  * @author Gerhard Petracek
  */
+@Typed()
 @SuppressWarnings({"UnusedDeclaration"})
-public class ServerSideWindowHandler extends DefaultWindowHandler
+public abstract class ServerSideWindowHandler extends DefaultWindowHandler
 {
     private static final long serialVersionUID = 4040116087475343221L;
 
     //workaround for mojarra
     private final boolean useFallback;
 
-    protected ServerSideWindowHandler(boolean useWindowAwareUrlEncoding)
+    protected ServerSideWindowHandler(ConfigResolver configResolver)
     {
-        super(useWindowAwareUrlEncoding);
+        super(configResolver);
         this.useFallback = tryToLoadClassForName("org.apache.myfaces.context.FacesContextFactoryImpl") == null;
     }