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;
}