Updated Branches:
  refs/heads/master fb8ef1c51 -> 30e9e1023

DELTASPIKE-488 improved compatibility


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/30e9e102
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/30e9e102
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/30e9e102

Branch: refs/heads/master
Commit: 30e9e10235dd54205d362ff2e609be3b7987645f
Parents: fb8ef1c
Author: gpetracek <gpetra...@apache.org>
Authored: Mon Jan 6 12:22:51 2014 +0100
Committer: gpetracek <gpetra...@apache.org>
Committed: Mon Jan 6 12:24:35 2014 +0100

----------------------------------------------------------------------
 .../GroupedConversationArtifactProducer.java    |  6 ++++--
 .../GroupedConversationContext.java             |  2 +-
 .../core/impl/util/ConversationUtils.java       | 20 ++++++++++++++++++--
 3 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/30e9e102/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationArtifactProducer.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationArtifactProducer.java
 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationArtifactProducer.java
index fe387c7..5ecaf36 100644
--- 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationArtifactProducer.java
+++ 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationArtifactProducer.java
@@ -26,6 +26,7 @@ import 
org.apache.deltaspike.core.spi.scope.conversation.GroupedConversationMana
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.inject.Inject;
 
@@ -44,9 +45,10 @@ public class GroupedConversationArtifactProducer
 
     @Produces
     @Dependent
-    public GroupedConversation getGroupedConversation(InjectionPoint 
injectionPoint)
+    public GroupedConversation getGroupedConversation(InjectionPoint 
injectionPoint, BeanManager beanManager)
     {
-        ConversationKey conversationKey = 
ConversationUtils.convertToConversationKey(injectionPoint.getBean());
+        ConversationKey conversationKey =
+            
ConversationUtils.convertToConversationKey(injectionPoint.getBean(), 
beanManager);
         return new InjectableGroupedConversation(conversationKey, 
getGroupedConversationManager());
     }
 }

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/30e9e102/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationContext.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationContext.java
 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationContext.java
index 55bc043..ea9b612 100644
--- 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationContext.java
+++ 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/scope/conversation/GroupedConversationContext.java
@@ -64,7 +64,7 @@ public class GroupedConversationContext extends 
AbstractContext implements Group
     @Override
     protected ContextualStorage getContextualStorage(Contextual<?> contextual, 
boolean createIfNotExist)
     {
-        ConversationKey conversationKey = 
ConversationUtils.convertToConversationKey(contextual);
+        ConversationKey conversationKey = 
ConversationUtils.convertToConversationKey(contextual, this.beanManager);
         return 
this.conversationBeanHolder.getContextualStorage(this.beanManager, 
conversationKey, createIfNotExist);
     }
 

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/30e9e102/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ConversationUtils.java
----------------------------------------------------------------------
diff --git 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ConversationUtils.java
 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ConversationUtils.java
index 08e4028..c24d538 100644
--- 
a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ConversationUtils.java
+++ 
b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/util/ConversationUtils.java
@@ -18,12 +18,15 @@
  */
 package org.apache.deltaspike.core.impl.util;
 
+import org.apache.deltaspike.core.api.provider.BeanManagerProvider;
 import org.apache.deltaspike.core.api.scope.ConversationGroup;
 import org.apache.deltaspike.core.impl.scope.conversation.ConversationKey;
 
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.inject.Typed;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.PassivationCapable;
 import java.lang.annotation.Annotation;
 import java.util.Set;
 
@@ -36,10 +39,23 @@ public abstract class ConversationUtils
 
     public static ConversationKey convertToConversationKey(Contextual<?> 
contextual)
     {
+        return convertToConversationKey(contextual, 
BeanManagerProvider.getInstance().getBeanManager());
+    }
+
+    public static ConversationKey convertToConversationKey(Contextual<?> 
contextual, BeanManager beanManager)
+    {
         if (!(contextual instanceof Bean))
         {
-            throw new IllegalArgumentException(
-                contextual.getClass().getName() + " is not of type " + 
Bean.class.getName());
+            if (contextual instanceof PassivationCapable)
+            {
+                contextual = BeanManagerProvider.getInstance().getBeanManager()
+                    .getPassivationCapableBean(((PassivationCapable) 
contextual).getId());
+            }
+            else
+            {
+                throw new IllegalArgumentException(
+                        contextual.getClass().getName() + " is not of type " + 
Bean.class.getName());
+            }
         }
 
         Bean<?> bean = (Bean<?>) contextual;

Reply via email to