You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ta...@apache.org on 2012/12/14 15:26:31 UTC
svn commit: r1421886 -
/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
Author: tandraschko
Date: Fri Dec 14 14:26:30 2012
New Revision: 1421886
URL: http://svn.apache.org/viewvc?rev=1421886&view=rev
Log:
(OWB-736) NPE while removing dependent beans
Modified:
openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=1421886&r1=1421885&r2=1421886&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java Fri Dec 14 14:26:30 2012
@@ -211,22 +211,25 @@ public class CreationalContextImpl<T> im
synchronized(this)
{
- List<DependentCreationalContext<?>> values = dependentObjects.get(ownerInstance);
- if(values != null && !values.isEmpty())
+ if (dependentObjects != null)
{
- Iterator<DependentCreationalContext<?>> it = values.iterator();
- while(it.hasNext())
+ List<DependentCreationalContext<?>> values = dependentObjects.get(ownerInstance);
+ if (values != null && !values.isEmpty())
{
- DependentCreationalContext<?> dc = it.next();
- if(dc.getDependentType().equals(DependentType.INTERCEPTOR) &&
- dc.getContextual().equals(interceptor))
+ Iterator<DependentCreationalContext<?>> it = values.iterator();
+ while (it.hasNext())
{
- return dc.getInstance();
+ DependentCreationalContext<?> dc = it.next();
+ if (dc.getDependentType().equals(DependentType.INTERCEPTOR) &&
+ dc.getContextual().equals(interceptor))
+ {
+ return dc.getInstance();
+ }
}
-
}
}
}
+
return null;
}
@@ -246,18 +249,21 @@ public class CreationalContextImpl<T> im
synchronized(this)
{
- List<DependentCreationalContext<?>> values = dependentObjects.get(ownerInstance);
- if (values != null && values.size() > 0)
+ if (dependentObjects != null)
{
- Iterator<DependentCreationalContext<?>> it = values.iterator();
- while (it.hasNext())
+ List<DependentCreationalContext<?>> values = dependentObjects.get(ownerInstance);
+ if (values != null && values.size() > 0)
{
- DependentCreationalContext<?> dc = it.next();
-
- if(dc.getDependentType().equals(DependentType.DECORATOR) &&
- dc.getContextual().equals(decorator))
+ Iterator<DependentCreationalContext<?>> it = values.iterator();
+ while (it.hasNext())
{
- return dc.getInstance();
+ DependentCreationalContext<?> dc = it.next();
+
+ if (dc.getDependentType().equals(DependentType.DECORATOR) &&
+ dc.getContextual().equals(decorator))
+ {
+ return dc.getInstance();
+ }
}
}
}
@@ -278,32 +284,35 @@ public class CreationalContextImpl<T> im
synchronized(this)
{
- Collection<List<DependentCreationalContext<?>>> values = dependentObjects.values();
- if(values != null)
+ if (dependentObjects != null)
{
- for(List<DependentCreationalContext<?>> value : values)
+ Collection<List<DependentCreationalContext<?>>> values = dependentObjects.values();
+ if (values != null)
{
- // this is kind of an emergency valve...
- int maxRemoval = value.size() * 3;
- while(!value.isEmpty() && maxRemoval > 0)
+ for (List<DependentCreationalContext<?>> value : values)
{
- // we don't use an iterator because the destroyal might register a
- // fresh PreDestroy interceptor as dependent object...
- DependentCreationalContext<T> dependent = (DependentCreationalContext<T>)value.get(0);
- dependent.getContextual().destroy((T)dependent.getInstance(), this);
+ // this is kind of an emergency valve...
+ int maxRemoval = value.size() * 3;
+ while (!value.isEmpty() && maxRemoval > 0)
+ {
+ // we don't use an iterator because the destroyal might register a
+ // fresh PreDestroy interceptor as dependent object...
+ DependentCreationalContext<T> dependent = (DependentCreationalContext<T>) value.get(0);
+ dependent.getContextual().destroy((T) dependent.getInstance(), this);
- value.remove(0);
- maxRemoval--;
- }
+ value.remove(0);
+ maxRemoval--;
+ }
- if (maxRemoval == 0)
- {
- throw new WebBeansException("infinite loop detected while destroying bean " + contextual);
+ if (maxRemoval == 0)
+ {
+ throw new WebBeansException("infinite loop detected while destroying bean " + contextual);
+ }
}
}
- }
- dependentObjects = null;
+ dependentObjects = null;
+ }
}
// the instances are managed as normal dependent instances already