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