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/07/12 18:23:24 UTC

svn commit: r963337 - in /myfaces/extensions/cdi/trunk: core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ je...

Author: gpetracek
Date: Mon Jul 12 16:23:24 2010
New Revision: 963337

URL: http://svn.apache.org/viewvc?rev=963337&view=rev
Log:
EXTCDI-1, EXTCDI-2 and EXTCDI-3 refactored conversation groups

Added:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/GroupedConversation.java
Removed:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ViewAccessGroup.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/WindowGroup.java
Modified:
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationGroup.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationScoped.java
    myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/DefaultGroup.java
    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/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean1.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean2.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean3.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean4.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationGroup1.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/GroupedConversationContextAdapter.java

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationGroup.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/ConversationGroup.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationGroup.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationGroup.java Mon Jul 12 16:23:24 2010
@@ -23,6 +23,7 @@ package org.apache.myfaces.extensions.cd
  *
  * @author Gerhard Petracek
  */
+@Deprecated
 public interface ConversationGroup
 {
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationScoped.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/ConversationScoped.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationScoped.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/ConversationScoped.java Mon Jul 12 16:23:24 2010
@@ -22,6 +22,7 @@ import javax.enterprise.context.NormalSc
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
+import java.lang.annotation.Documented;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.ElementType.FIELD;
@@ -35,7 +36,7 @@ import static java.lang.annotation.Reten
 @Retention(RUNTIME)
 @NormalScope
 @Inherited
+@Documented
 public @interface ConversationScoped
 {
-    Class<? extends ConversationGroup> value() default DefaultGroup.class;
 }                 

Modified: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/DefaultGroup.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/DefaultGroup.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/DefaultGroup.java (original)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/DefaultGroup.java Mon Jul 12 16:23:24 2010
@@ -23,6 +23,6 @@ package org.apache.myfaces.extensions.cd
  *
  * @author Gerhard Petracek
  */
-public interface DefaultGroup extends ConversationGroup
+public interface DefaultGroup
 {
 }
\ No newline at end of file

Added: myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/GroupedConversation.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/GroupedConversation.java?rev=963337&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/GroupedConversation.java (added)
+++ myfaces/extensions/cdi/trunk/core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/scope/conversation/GroupedConversation.java Mon Jul 12 16:23:24 2010
@@ -0,0 +1,43 @@
+/*
+ * 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.scope.conversation;
+
+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.PARAMETER;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+
+/**
+ * @author Gerhard Petracek
+ */
+@Target({PARAMETER, FIELD, METHOD, CONSTRUCTOR, TYPE})
+@Retention(RUNTIME)
+@Documented
+
+@Qualifier
+public @interface GroupedConversation
+{
+    Class<?> value() default DefaultGroup.class;
+}
\ No newline at end of file

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=963337&r1=963336&r2=963337&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 Mon Jul 12 16:23:24 2010
@@ -36,7 +36,7 @@ import static java.lang.annotation.Eleme
 @Retention(RUNTIME)
 @Documented
 
-@ConversationScoped(ViewAccessGroup.class)
+@ConversationScoped
 public @interface ViewAccessScoped
 {
 }
\ No newline at end of file

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=963337&r1=963336&r2=963337&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 Mon Jul 12 16:23:24 2010
@@ -36,7 +36,7 @@ import static java.lang.annotation.Eleme
 @Retention(RUNTIME)
 @Documented
 
-@ConversationScoped(WindowGroup.class)
+@ConversationScoped
 public @interface WindowScoped
 {
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean1.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean1.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean1.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean1.java Mon Jul 12 16:23:24 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.blank.conversation.grouped;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.GroupedConversation;
 
 import javax.inject.Named;
 import javax.annotation.PostConstruct;
@@ -29,7 +30,8 @@ import java.util.Date;
  * @author Gerhard Petracek
  */
 @Named
-@ConversationScoped(ConversationGroup1.class)
+@ConversationScoped
+@GroupedConversation(ConversationGroup1.class)
 public class ConversationDemoBean1 implements Serializable
 {
     private String value = "Hello grouped conversation1! ";

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean2.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean2.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean2.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean2.java Mon Jul 12 16:23:24 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.blank.conversation.grouped;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.GroupedConversation;
 
 import javax.inject.Named;
 import javax.annotation.PostConstruct;
@@ -29,7 +30,8 @@ import java.util.Date;
  * @author Gerhard Petracek
  */
 @Named
-@ConversationScoped(ConversationGroup1.class)
+@ConversationScoped
+@GroupedConversation(ConversationGroup1.class)
 public class ConversationDemoBean2 implements Serializable
 {
     private String value = "Hello grouped conversation2! ";

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean3.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean3.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean3.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean3.java Mon Jul 12 16:23:24 2010
@@ -19,7 +19,8 @@
 package org.apache.myfaces.blank.conversation.grouped;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowGroup;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.GroupedConversation;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 
 import javax.inject.Named;
 import javax.annotation.PostConstruct;
@@ -30,7 +31,8 @@ import java.util.Date;
  * @author Gerhard Petracek
  */
 @Named
-@ConversationScoped(WindowGroup.class)
+@ConversationScoped
+@GroupedConversation(WindowScoped.class)
 public class ConversationDemoBean3 implements Serializable
 {
     private String value = "Hello window conversation! ";

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean4.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean4.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean4.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationDemoBean4.java Mon Jul 12 16:23:24 2010
@@ -19,7 +19,8 @@
 package org.apache.myfaces.blank.conversation.grouped;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessGroup;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.GroupedConversation;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
 import org.apache.myfaces.blank.conversation.grouped.qualifier.Qualifier1;
 import org.apache.myfaces.blank.conversation.grouped.qualifier.Qualifier2;
 
@@ -33,7 +34,8 @@ import java.util.Date;
  * @author Gerhard Petracek
  */
 @Named
-@ConversationScoped(ViewAccessGroup.class)
+@ConversationScoped
+@GroupedConversation(ViewAccessScoped.class)
 public class ConversationDemoBean4 implements Serializable
 {
     private String value = "Hello view access scoped! ";

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationGroup1.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationGroup1.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationGroup1.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/conversation/grouped/ConversationGroup1.java Mon Jul 12 16:23:24 2010
@@ -18,11 +18,9 @@
  */
 package org.apache.myfaces.blank.conversation.grouped;
 
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationGroup;
-
 /**
  * @author Gerhard Petracek
  */
-interface ConversationGroup1 extends ConversationGroup
+interface ConversationGroup1
 {
 }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversation.java Mon Jul 12 16:23:24 2010
@@ -19,9 +19,7 @@
 package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.Conversation;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessGroup;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowGroup;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.BeanEntry;
 import org.apache.myfaces.extensions.cdi.core.impl.scope.conversation.spi.EditableConversation;
 import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.ConversationKey;
@@ -57,7 +55,7 @@ public class DefaultConversation impleme
     public DefaultConversation(ConversationKey conversationKey, int conversationTimeoutInMinutes)
     {
         this.conversationKey = conversationKey;
-        this.windowScoped = WindowGroup.class.isAssignableFrom(conversationKey.getConversationGroup());
+        this.windowScoped = WindowScoped.class.isAssignableFrom(conversationKey.getConversationGroup());
 
         tryToProcessViewAccessScope();
 
@@ -173,14 +171,8 @@ public class DefaultConversation impleme
 
     private void tryToProcessViewAccessScope()
     {
-        Class<?> groupKey = this.conversationKey.getConversationGroup();
-        ConversationScoped conversationScoped = groupKey.getAnnotation(ConversationScoped.class);
-        if (conversationScoped != null && ViewAccessGroup.class.isAssignableFrom(conversationScoped.value()))
-        {
-            this.lastViewId = getCurrentViewId();
-        }
         //workaround
-        else if(conversationScoped == null && this.conversationKey instanceof DefaultConversationKey &&
+        if(this.conversationKey instanceof DefaultConversationKey &&
                  ((DefaultConversationKey)this.conversationKey).isViewAccessScopedAnnotationPresent())
         {
             this.lastViewId = getCurrentViewId();

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/DefaultConversationKey.java Mon Jul 12 16:23:24 2010
@@ -20,8 +20,7 @@ package org.apache.myfaces.extensions.cd
 
 import org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation.spi.ConversationKey;
 import org.apache.myfaces.extensions.cdi.core.api.tools.annotate.DefaultAnnotation;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowGroup;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessGroup;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
 
 import javax.enterprise.inject.Default;
@@ -39,14 +38,15 @@ class DefaultConversationKey implements 
     private static final long serialVersionUID = 3577945095460042939L;
 
     private static final String INVALID_WINDOW_SCOPE_DEFINITION =
-            ": It isn't allowed to use qualifiers in combination with " + WindowGroup.class.getName();
+            ": It isn't allowed to use qualifiers in combination with " + WindowScoped.class.getName();
 
     private static final String INVALID_VIEW_ACCESS_SCOPE_DEFINITION =
-            ": It isn't allowed to use qualifiers in combination with " + WindowGroup.class.getName();
+            ": It isn't allowed to use qualifiers in combination with " + WindowScoped.class.getName();
 
     private final Class<?> groupKey;
     private final Set<Annotation> qualifiers = new HashSet<Annotation>();
 
+    //workaround
     private static final ViewAccessScoped VIEW_ACCESS_SCOPED = DefaultAnnotation.of(ViewAccessScoped.class);
 
     //workaround
@@ -96,12 +96,13 @@ class DefaultConversationKey implements 
 
     private boolean isWindowScope()
     {
-        return WindowGroup.class.isAssignableFrom(this.groupKey.getClass());
+        return WindowScoped.class.isAssignableFrom(this.groupKey.getClass());
     }
 
+    @Deprecated
     private boolean isViewAccessScope()
     {
-        return ViewAccessGroup.class.isAssignableFrom(this.groupKey.getClass());
+        return ViewAccessScoped.class.isAssignableFrom(this.groupKey.getClass());
     }
 
     private boolean isDefaultQualifier()

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/GroupedConversationContextAdapter.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/GroupedConversationContextAdapter.java?rev=963337&r1=963336&r2=963337&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/GroupedConversationContextAdapter.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/scope/conversation/GroupedConversationContextAdapter.java Mon Jul 12 16:23:24 2010
@@ -19,10 +19,8 @@
 package org.apache.myfaces.extensions.cdi.javaee.jsf.impl.scope.conversation;
 
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.Conversation;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ConversationScoped;
+import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.GroupedConversation;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.DefaultGroup;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowGroup;
-import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessGroup;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.WindowScoped;
 import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
 import org.apache.myfaces.extensions.cdi.core.api.tools.annotate.DefaultAnnotation;
@@ -102,54 +100,74 @@ public class GroupedConversationContextA
 
         Set<Annotation> qualifiers = bean.getQualifiers();
 
+        conversationGroup = tryToConvertViewAccessScope(bean, conversationGroup, qualifiers);
+
+        return conversationManager.getCurrentWindowContext()
+                .getConversation(conversationGroup, qualifiers.toArray(new Annotation[qualifiers.size()]));
+    }
+
+    private Class tryToConvertViewAccessScope(Bean<?> bean, Class conversationGroup, Set<Annotation> qualifiers)
+    {
         //workaround to keep the existing api
         if(ViewAccessScoped.class.isAssignableFrom(conversationGroup))
         {
-            if(bean.getStereotypes().contains(ViewAccessScoped.class))
-            {
-                //TODO maybe we have to add a real qualifier instead
-                qualifiers.add(DefaultAnnotation.of(ViewAccessScoped.class));
-                conversationGroup = bean.getBeanClass();
-            }
+            //TODO maybe we have to add a real qualifier instead
+            qualifiers.add(DefaultAnnotation.of(ViewAccessScoped.class));
+            conversationGroup = bean.getBeanClass();
         }
-        return conversationManager.getCurrentWindowContext()
-                .getConversation(conversationGroup, qualifiers.toArray(new Annotation[qualifiers.size()]));
+        return conversationGroup;
     }
 
     private Class getConversationGroup(Bean<?> bean)
     {
-        ConversationScoped conversationAnnotation = bean.getBeanClass().getAnnotation(ConversationScoped.class);
-
         if(bean.getStereotypes().contains(WindowScoped.class))
         {
-            return WindowGroup.class;
+            return WindowScoped.class;
         }
 
-        if(conversationAnnotation == null)
+        if(bean.getStereotypes().contains(ViewAccessScoped.class))
         {
-            //in this case we have e.g. a producer method -> there is no official api to get the method
-            //-> it isn't possible to extract the group
-            //TODO if we keep the group approach we should perform a check via reflection here and throw an exception
-            //(if the user used a group) or we use a workaround (via reflection)
-
-            //due to the target api we can't forward the stereotypes - we just have 2 supported stereotypes
-            //here we know that we have the 2nd supported stereotype
-            // (the rest is analyzed later on - see DefaultConversation)
             return ViewAccessScoped.class;
         }
 
-        Class groupClass = conversationAnnotation.value();
+        GroupedConversation groupedConversationAnnotation = findGroupedConversationAnnotation(bean);
+
+        if(groupedConversationAnnotation == null)
+        {
+            return bean.getBeanClass();
+        }
+
+        Class groupClass = groupedConversationAnnotation.value();
 
-        if(DefaultGroup.class.isAssignableFrom(groupClass) || ViewAccessGroup.class.isAssignableFrom(groupClass))
+        if(DefaultGroup.class.isAssignableFrom(groupClass))
         {
             return bean.getBeanClass();
         }
 
-        if(WindowGroup.class.isAssignableFrom(groupClass))
+        if(WindowScoped.class.isAssignableFrom(groupClass))
+        {
+            return WindowScoped.class;
+        }
+
+        if(ViewAccessScoped.class.isAssignableFrom(groupClass))
         {
-            return WindowGroup.class;
+            return ViewAccessScoped.class;
         }
 
         return groupClass;
     }
+
+    private GroupedConversation findGroupedConversationAnnotation(Bean<?> bean)
+    {
+        Set<Annotation> qualifiers = bean.getQualifiers();
+
+        for(Annotation qualifier : qualifiers)
+        {
+            if(GroupedConversation.class.isAssignableFrom(qualifier.annotationType()))
+            {
+                return (GroupedConversation)qualifier;
+            }
+        }
+        return null;
+    }
 }
\ No newline at end of file