EXTCDI-312 support for weld 2.0.x

git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/cdi/trunk@1556414 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
index 78f65eb..11a4248 100644
--- a/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
+++ b/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/scope/conversation/ConversationContextAdapter.java
@@ -20,6 +20,7 @@
 

 import org.apache.myfaces.extensions.cdi.core.api.config.CodiCoreConfig;

 import org.apache.myfaces.extensions.cdi.core.api.config.view.DefaultErrorView;

+import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;

 import org.apache.myfaces.extensions.cdi.core.api.security.AccessDeniedException;

 import org.apache.myfaces.extensions.cdi.core.api.security.event.InvalidBeanCreationEvent;

 import org.apache.myfaces.extensions.cdi.core.api.security.SecurityViolation;

@@ -29,6 +30,7 @@
 import javax.enterprise.context.spi.CreationalContext;

 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.HashSet;

 import java.util.Set;

@@ -71,6 +73,12 @@
      */

     public <T> T get(Contextual<T> component, CreationalContext<T> creationalContext)

     {

+        if (component instanceof PassivationCapable && !(component instanceof Bean))

+        {

+            component = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()

+                .getPassivationCapableBean(((PassivationCapable) component).getId());

+        }

+

         if (component instanceof Bean)

         {

             //since the basic use-case is related to topics like security,

@@ -99,6 +107,12 @@
             return null;

         }

 

+        if (component instanceof PassivationCapable && !(component instanceof Bean))

+        {

+            component = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()

+                .getPassivationCapableBean(((PassivationCapable) component).getId());

+        }

+

         if (component instanceof Bean)

         {

             return this.conversationContext.resolve((Bean<T>)component);

diff --git a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
index 837601e..fc13df9 100644
--- a/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
+++ b/jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/transaction/context/TransactionBeanEntry.java
@@ -18,9 +18,12 @@
  */
 package org.apache.myfaces.extensions.cdi.jpa.impl.transaction.context;
 
+import org.apache.myfaces.extensions.cdi.core.api.provider.BeanManagerProvider;
+
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.PassivationCapable;
 import java.lang.annotation.Annotation;
 import java.util.Collections;
 import java.util.Set;
@@ -37,6 +40,12 @@
 
     public TransactionBeanEntry(Contextual<T> bean, T contextualInstance, CreationalContext<T> creationalContext)
     {
+        if (bean instanceof PassivationCapable && !(bean instanceof Bean))
+        {
+            bean = (Contextual<T>) BeanManagerProvider.getInstance().getBeanManager()
+                .getPassivationCapableBean(((PassivationCapable) bean).getId());
+        }
+
         this.bean = bean;
 
         this.contextualInstance = contextualInstance;