You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/03/11 18:23:27 UTC
svn commit: r1080683 - in /myfaces/extensions/cdi/trunk:
core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/
jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/
Author: gpetracek
Date: Fri Mar 11 17:23:27 2011
New Revision: 1080683
URL: http://svn.apache.org/viewvc?rev=1080683&view=rev
Log:
EXTCDI-156 bean-class to conversation-group cache
Modified:
myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessScoped.java
myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowScoped.java
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/ConversationUtils.java
Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessScoped.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessScoped.java?rev=1080683&r1=1080682&r2=1080683&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessScoped.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessScoped.java Fri Mar 11 17:23:27 2011
@@ -38,6 +38,10 @@ import static java.lang.annotation.Eleme
@Inherited
@Documented
+//internal hint:
+//this scope doesn't support conversation-groups.
+//if such a support is requested, we lose one of the caches.
+
//cdi annotations
@NormalScope(passivating=true)
public @interface ViewAccessScoped
Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowScoped.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowScoped.java?rev=1080683&r1=1080682&r2=1080683&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowScoped.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowScoped.java Fri Mar 11 17:23:27 2011
@@ -38,6 +38,10 @@ import static java.lang.annotation.Eleme
@Inherited
@Documented
+//internal hint:
+//this scope doesn't support conversation-groups.
+//if such a support is requested, we lose one of the caches.
+
//cdi annotations
@NormalScope(passivating=true)
public @interface WindowScoped
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=1080683&r1=1080682&r2=1080683&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 Mar 11 17:23:27 2011
@@ -70,6 +70,9 @@ public abstract class ConversationUtils
private static Map<Class, Class<? extends Annotation>> conversationGroupToScopeCache =
new ConcurrentHashMap<Class, Class<? extends Annotation>>();
+ private static Map<Class, Class> beanClassToConversationGroupCache =
+ new ConcurrentHashMap<Class, Class>();
+
private static final String REDIRECT_PERFORMED_KEY = WindowHandler.class.getName() + "redirect:KEY";
private ConversationUtils()
@@ -84,22 +87,40 @@ public abstract class ConversationUtils
*/
public static Class getConversationGroup(Bean<?> bean)
{
- Class<? extends Annotation> scopeType = bean.getScope();
+ Class beanClass = bean.getBeanClass();
+ Class foundGroup = beanClassToConversationGroupCache.get(beanClass);
- //TODO check if we should support conversation groups for @WindowScoped
- if(WindowScoped.class.isAssignableFrom(scopeType))
+ if(foundGroup != null)
{
- return WindowScoped.class;
+ return foundGroup;
}
- ConversationGroup conversationGroupAnnotation = findConversationGroupAnnotation(bean);
+ try
+ {
+ Class<? extends Annotation> scopeType = bean.getScope();
+
+ //TODO check if we should support conversation groups for @WindowScoped
+ if(WindowScoped.class.isAssignableFrom(scopeType))
+ {
+ foundGroup = WindowScoped.class;
+ return foundGroup;
+ }
+
+ ConversationGroup conversationGroupAnnotation = findConversationGroupAnnotation(bean);
- if(conversationGroupAnnotation == null)
+ if(conversationGroupAnnotation == null)
+ {
+ foundGroup = beanClass;
+ return foundGroup;
+ }
+
+ foundGroup = conversationGroupAnnotation.value();
+ return foundGroup;
+ }
+ finally
{
- return bean.getBeanClass();
+ beanClassToConversationGroupCache.put(beanClass, foundGroup);
}
-
- return conversationGroupAnnotation.value();
}
private static ConversationGroup findConversationGroupAnnotation(Bean<?> bean)