You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2012/12/05 12:57:25 UTC

svn commit: r1417373 - /openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java

Author: struberg
Date: Wed Dec  5 11:57:25 2012
New Revision: 1417373

URL: http://svn.apache.org/viewvc?rev=1417373&view=rev
Log:
OWB-734 fix edge case which happens if someone cleans up contexts from other threads

Modified:
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java

Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java?rev=1417373&r1=1417372&r2=1417373&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java Wed Dec  5 11:57:25 2012
@@ -20,6 +20,7 @@ package org.apache.webbeans.portable.cre
 
 import java.util.Set;
 
+import javax.enterprise.context.ContextNotActiveException;
 import javax.enterprise.context.spi.Context;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.BeanManager;
@@ -99,10 +100,19 @@ public abstract class AbstractProducer<T
     {
         CreationalContext<T> cc = null;
         BeanManager bm = bean.getWebBeansContext().getBeanManagerImpl();
-        Context ctx = bm.getContext(bean.getScope());
-        if (ctx instanceof AbstractContext)
+        try
         {
-            cc = ((AbstractContext) ctx).getCreationalContext(bean);
+            Context ctx = bm.getContext(bean.getScope());
+            if (ctx instanceof AbstractContext)
+            {
+                cc = ((AbstractContext) ctx).getCreationalContext(bean);
+            }
+        }
+        catch (ContextNotActiveException ccne)
+        {
+            // another dirty workaround for a quirksmode.
+            // This happens if contexts from other threads get bulk cleaned up.
+            // It's at least not worse as it was before ;)
         }
 
         if (cc == null)