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;