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/07/14 16:52:52 UTC

svn commit: r1146738 - 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/scope/conversation/ jee-...

Author: gpetracek
Date: Thu Jul 14 14:52:51 2011
New Revision: 1146738

URL: http://svn.apache.org/viewvc?rev=1146738&view=rev
Log:
EXTCDI-207 implicit sub-groups for conversation groups

Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationSubGroup.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/util/ConversationUtils.java

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationSubGroup.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/ConversationSubGroup.java?rev=1146738&r1=1146737&r2=1146738&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationSubGroup.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationSubGroup.java Thu Jul 14 14:52:51 2011
@@ -55,8 +55,14 @@ import static java.lang.annotation.Reten
 public @interface ConversationSubGroup
 {
     /**
+     * Optionally defines the base conversation group
+     * @return base conversation group or ConversationSubGroup if the subgroup inherits from the base conversation group
+     */
+    Class<?> of() default ConversationSubGroup.class;
+
+    /**
      * Beans of the group which should be closed
      * @return beans of the group which should be closed
      */
-    Class<?>[] value();
+    Class<?>[] groups();
 }
\ No newline at end of file

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=1146738&r1=1146737&r2=1146738&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 Thu Jul 14 14:52:51 2011
@@ -140,7 +140,7 @@ class JsfWindowContext implements Editab
         Class<?>[] subGroups = null;
         if(conversationSubGroup != null)
         {
-            subGroups = conversationSubGroup.value();
+            subGroups = conversationSubGroup.groups();
             conversationGroupKey = convertToSubGroup(conversationGroupKey);
         }
 
@@ -206,7 +206,7 @@ class JsfWindowContext implements Editab
         Class<?>[] subGroups = null;
         if(conversationSubGroup != null)
         {
-            subGroups = conversationSubGroup.value();
+            subGroups = conversationSubGroup.groups();
             conversationGroupKey = convertToSubGroup(conversationGroupKey);
         }
 
@@ -229,7 +229,7 @@ class JsfWindowContext implements Editab
         Class<?>[] subGroups = null;
         if(conversationSubGroup != null)
         {
-            subGroups = conversationSubGroup.value();
+            subGroups = conversationSubGroup.groups();
             conversationGroupKey = convertToSubGroup(conversationGroupKey);
         }
 

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=1146738&r1=1146737&r2=1146738&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 Thu Jul 14 14:52:51 2011
@@ -20,6 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationGroup;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationSubGroup;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowContext;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
@@ -713,12 +714,27 @@ public abstract class ConversationUtils
 
     public static Class<?> convertToSubGroup(Class<?> conversationGroupKey)
     {
-        Class<?> result = conversationGroupKey.getSuperclass();
+        ConversationSubGroup conversationSubGroup = conversationGroupKey.getAnnotation(ConversationSubGroup.class);
 
-        if(result == null && conversationGroupKey.getInterfaces().length == 1)
+        Class<?> result = conversationSubGroup.of();
+
+        if(!ConversationSubGroup.class.equals(result))
+        {
+            return result;
+        }
+
+        result = conversationGroupKey.getSuperclass();
+
+        if((result == null || Object.class.getName().equals(result.getName())) &&
+                conversationGroupKey.getInterfaces().length == 1)
         {
             result = conversationGroupKey.getInterfaces()[0];
         }
+
+        if(Object.class.getName().equals(result.getName()))
+        {
+            return null;
+        }
         return result;
     }
 }