You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2015/11/02 23:20:59 UTC

[2/8] tomee git commit: better handling of creational contexts for web components

better handling of creational contexts for web components


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3035c836
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3035c836
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3035c836

Branch: refs/heads/tomee-7.0.0-M1
Commit: 3035c83604755cacf8073d6cbcbd0992bd6ddcf9
Parents: 59e366a
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Mon Nov 2 10:22:16 2015 -0800
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Mon Nov 2 10:22:16 2015 -0800

----------------------------------------------------------------------
 .../main/java/org/apache/openejb/core/WebContext.java | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3035c836/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java b/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
index 55d98c1..073be91 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
@@ -25,7 +25,6 @@ import org.apache.openejb.cdi.ConstructorInjectionBean;
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.config.WebBeansContext;
 
-import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.naming.Context;
@@ -132,7 +131,7 @@ public class WebContext {
     public <T> Instance newWeakableInstance(final Class<T> beanClass) throws OpenEJBException {
         final WebBeansContext webBeansContext = getWebBeansContext();
         final ConstructorInjectionBean<Object> beanDefinition = getConstructorInjectionBean(beanClass, webBeansContext);
-        final CreationalContext<Object> creationalContext;
+        CreationalContext<Object> creationalContext;
         final Object o;
         if (webBeansContext == null) {
             creationalContext = null;
@@ -155,6 +154,9 @@ public class WebContext {
         if (webBeansContext != null) {
             final InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition);
             bean.getInjectionTarget().inject(beanInstance, creationalContext);
+            if (shouldBeReleased(bean.getScope())) {
+                creationalContexts.put(beanInstance, creationalContext);
+            }
         }
         return new Instance(beanInstance, creationalContext);
     }
@@ -229,9 +231,7 @@ public class WebContext {
                 final InjectionTargetBean<Object> bean = InjectionTargetBean.class.cast(beanDefinition);
                 bean.getInjectionTarget().inject(beanInstance, creationalContext);
 
-                // if the bean is dependent simply cleanup the creational context once it is created
-                final Class<? extends Annotation> scope = beanDefinition.getScope();
-                if (scope == null || Dependent.class.equals(scope)) {
+                if (shouldBeReleased(beanDefinition.getScope())) {
                     creationalContexts.put(beanInstance, creationalContext);
                 }
             }
@@ -242,6 +242,10 @@ public class WebContext {
         }
     }
 
+    private boolean shouldBeReleased(final Class<? extends Annotation> scope) {
+        return scope == null || !getWebBeansContext().getBeanManagerImpl().isNormalScope(scope);
+    }
+
     public void setBindings(final Map<String, Object> bindings) {
         this.bindings = bindings;
     }