Author: struberg
Date: Tue Jun  6 21:11:41 2017
New Revision: 1797825

URL: http://svn.apache.org/viewvc?rev=1797825&view=rev
Log:
OWB-1182 fix Instance cleanup handling

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java?rev=1797825&r1=1797824&r2=1797825&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
 Tue Jun  6 21:11:41 2017
@@ -307,10 +307,6 @@ public class InstanceImpl<T> implements
                 creationalContexts = new IdentityHashMap<Object, 
CreationalContextImpl<?>>();
             }
             creationalContexts.put(reference, creationalContext);
-            if (WebBeansUtil.isDependent(bean))
-            {
-                parentCreationalContext.addDependent(bean, reference);
-            }
             return reference;
         }
         finally
@@ -364,6 +360,17 @@ public class InstanceImpl<T> implements
         return builder.toString();
     }
 
+    public void release()
+    {
+        if (creationalContexts != null)
+        {
+            for (CreationalContextImpl<?> creationalContext : 
creationalContexts.values())
+            {
+                creationalContext.release();
+            }
+        }
+    }
+
     private static class InstanceInjectionPoint implements InjectionPoint, 
Serializable
     {
         private InjectionPoint delegate;

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java?rev=1797825&r1=1797824&r2=1797825&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InstanceProducer.java
 Tue Jun  6 21:11:41 2017
@@ -38,7 +38,8 @@ public class InstanceProducer<T> extends
     private Class<Instance<T>> returnType;
     private Set<Annotation> qualifiers;
     private WebBeansContext webBeansContext;
-    
+
+
     public InstanceProducer(Class<Instance<T>> returnType, Set<Annotation> 
qualifiers, WebBeansContext webBeansContext)
     {
         this.returnType = returnType;
@@ -55,7 +56,7 @@ public class InstanceProducer<T> extends
             InjectionPoint injectionPoint = null;
             if (creationalContext instanceof CreationalContextImpl)
             {
-                creationalContextImpl = 
(CreationalContextImpl<Instance<T>>)creationalContext;
+                creationalContextImpl = creationalContext;
             }
             else
             {
@@ -88,4 +89,12 @@ public class InstanceProducer<T> extends
             }
         }
     }
+
+    @Override
+    public void dispose(Instance<T> instance)
+    {
+        super.dispose(instance);
+
+        ((InstanceImpl<T>) instance).release();
+    }
 }


Reply via email to