[webbeans-commits] Webbeans SVN: r530 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/bean and 5 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Dec 15 08:52:46 EST 2008


Author: pete.muir at jboss.org
Date: 2008-12-15 08:52:46 -0500 (Mon, 15 Dec 2008)
New Revision: 530

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/InstanceBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/examples/Tests.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
Log:
Active/inactive dependent scope as spec requires

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -49,7 +49,6 @@
 import org.jboss.webbeans.bean.AbstractBean;
 import org.jboss.webbeans.bean.proxy.ProxyPool;
 import org.jboss.webbeans.contexts.ContextMap;
-import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.event.EventManager;
 import org.jboss.webbeans.introspector.AnnotatedItem;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
@@ -445,21 +444,13 @@
     */
    public <T> T getInstance(Bean<T> bean)
    {
-      try
+      if (MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal())
       {
-         DependentContext.INSTANCE.setActive(true);
-         if (MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal())
-         {
-            return (T) proxyPool.getClientProxy(bean);
-         }
-         else
-         {
-            return getContext(bean.getScopeType()).get(bean, true);
-         }
+         return (T) proxyPool.getClientProxy(bean);
       }
-      finally
+      else
       {
-         DependentContext.INSTANCE.setActive(false);
+         return getContext(bean.getScopeType()).get(bean, true);
       }
    }
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -33,6 +33,7 @@
 
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.MetaDataCache;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.ejb.EJB;
 import org.jboss.webbeans.ejb.EjbMetaData;
 import org.jboss.webbeans.introspector.AnnotatedField;
@@ -219,13 +220,21 @@
    @Override
    public T create()
    {
-      T instance = (T) manager.getInstanceByType(EnterpriseBeanLookup.class).lookup(ejbMetaData.getEjbName());
-      bindDecorators();
-      bindInterceptors();
-      injectEjbAndCommonFields();
-      injectBoundFields(instance, manager);
-      callInitializers(instance);
-      return instance;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         T instance = (T) manager.getInstanceByType(EnterpriseBeanLookup.class).lookup(ejbMetaData.getEjbName());
+         bindDecorators();
+         bindInterceptors();
+         injectEjbAndCommonFields();
+         injectBoundFields(instance, manager);
+         callInitializers(instance);
+         return instance;
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**
@@ -238,12 +247,17 @@
    {
       try
       {
+         DependentContext.INSTANCE.setActive(true);
          getRemoveMethod().invoke(instance);
       }
       catch (Exception e) 
       {
          log.error("Error destroying " + toString(), e);
       }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -21,6 +21,7 @@
 import javax.webbeans.Event;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.event.EventImpl;
 import org.jboss.webbeans.introspector.AnnotatedItem;
 import org.jboss.webbeans.util.Names;
@@ -55,13 +56,29 @@
    @Override
    public Event<T> create()
    {
-      return new EventImpl<T>(getTypeParameter(), manager, getBindingTypesArray());
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         return new EventImpl<T>(getTypeParameter(), manager, getBindingTypesArray());
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    @Override
    public void destroy(Event<T> instance)
    {
-      // TODO Implement any EventBean destruction needed
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         // TODO Implement any EventBean destruction needed
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/InstanceBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/InstanceBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/InstanceBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -22,6 +22,7 @@
 
 import org.jboss.webbeans.InstanceImpl;
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedItem;
 
 /**
@@ -54,13 +55,29 @@
    @Override
    public Instance<T> create()
    {
-      return new InstanceImpl<T>(getTypeParameter(), manager, getBindingTypesArray());
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         return new InstanceImpl<T>(getTypeParameter(), manager, getBindingTypesArray());
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    @Override
    public void destroy(Instance<T> instance)
    {
-      // TODO Implement any cleanup needed
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         // TODO Implement any cleanup needed
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -20,6 +20,7 @@
 import java.lang.reflect.Field;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedField;
 import org.jboss.webbeans.introspector.jlr.AnnotatedFieldImpl;
 import org.jboss.webbeans.util.Names;
@@ -70,15 +71,31 @@
    @Override
    public T create()
    {
-      T instance = field.get(getReceiver());
-      checkReturnValue(instance);
-      return instance;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         T instance = field.get(getReceiver());
+         checkReturnValue(instance);
+         return instance;
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    @Override
    public void destroy(T instance)
    {
-      // TODO Implement any cleanup needed
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         // TODO Implement any cleanup needed
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -27,6 +27,7 @@
 import javax.webbeans.Observes;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.introspector.AnnotatedParameter;
 import org.jboss.webbeans.introspector.jlr.AnnotatedMethodImpl;
@@ -78,15 +79,31 @@
    @Override
    public T create()
    {
-      T instance = method.invoke(getReceiver(), manager);
-      checkReturnValue(instance);
-      return instance;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         T instance = method.invoke(getReceiver(), manager);
+         checkReturnValue(instance);
+         return instance;
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    @Override
    public void destroy(T instance)
    {
-      // TODO Implement any cleanup needed
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         // TODO Implement any cleanup needed
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -28,6 +28,7 @@
 import javax.webbeans.manager.Manager;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedConstructor;
 import org.jboss.webbeans.introspector.AnnotatedField;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
@@ -77,14 +78,22 @@
    @Override
    public T create()
    {
-      T instance = constructor.newInstance(manager);
-      bindDecorators();
-      bindInterceptors();
-      injectEjbAndCommonFields();
-      injectBoundFields(instance, manager);
-      callInitializers(instance);
-      callPostConstruct(instance);
-      return instance;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         T instance = constructor.newInstance(manager);
+         bindDecorators();
+         bindInterceptors();
+         injectEjbAndCommonFields();
+         injectBoundFields(instance, manager);
+         callInitializers(instance);
+         callPostConstruct(instance);
+         return instance;
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**
@@ -97,12 +106,17 @@
    {
       try
       {
+         DependentContext.INSTANCE.setActive(true);
          callPreDestroy(instance);
       }
       catch (Exception e) 
       {
          log.error("Error destroying " + toString(), e);
       }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/contexts/DependentContext.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -17,6 +17,8 @@
 
 package org.jboss.webbeans.contexts;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 import javax.webbeans.ContextNotActiveException;
 import javax.webbeans.Dependent;
 import javax.webbeans.manager.Contextual;
@@ -33,13 +35,23 @@
 
    public static final DependentContext INSTANCE = new DependentContext();
    
+   private ThreadLocal<AtomicInteger> reentrantActiveCount;
+   
    /**
     * Constructor
     */
    public DependentContext()
    {
       super(Dependent.class);
-      setActive(false);
+      super.setActive(false);
+      this.reentrantActiveCount = new ThreadLocal<AtomicInteger>()
+      {
+         @Override
+         protected AtomicInteger initialValue()
+         {
+            return new AtomicInteger(0);
+         }
+      };
    }
 
    /**
@@ -67,4 +79,23 @@
       return active + "dependent context " + count; 
    }
    
+   @Override
+   public void setActive(boolean active)
+   {
+      if (active)
+      {
+         if (reentrantActiveCount.get().incrementAndGet() == 1)
+         {
+            super.setActive(true);
+         }
+      }
+      else
+      {
+         if (reentrantActiveCount.get().decrementAndGet() == 0)
+         {
+            super.setActive(false);
+         }
+      }
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -24,6 +24,7 @@
 import javax.el.ELResolver;
 
 import org.jboss.webbeans.CurrentManager;
+import org.jboss.webbeans.contexts.DependentContext;
 
 public class WebBeansELResolver extends ELResolver
 {
@@ -63,12 +64,20 @@
    {
       if (base == null && property != null)
       {
-         Object value = CurrentManager.rootManager().getInstanceByName(property.toString());
-         if (value != null)
+         try
          {
-            context.setPropertyResolved(true);
+            DependentContext.INSTANCE.setActive(true);
+            Object value = CurrentManager.rootManager().getInstanceByName(property.toString());
+            if (value != null)
+            {
+               context.setPropertyResolved(true);
+            }
+            return value;
          }
-         return value;
+         finally
+         {
+            DependentContext.INSTANCE.setActive(false);
+         }
       }
       else
       {

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/event/EventManager.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -30,6 +30,7 @@
 import javax.webbeans.Observer;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.transaction.UserTransaction;
 import org.jboss.webbeans.util.Reflections;
 import org.jboss.webbeans.util.Strings;
@@ -215,17 +216,25 @@
     */
    public <T> void notifyObservers(Set<Observer<T>> observers, T event)
    {
-      for (Observer<T> observer : observers)
+      try
       {
-         if (isTransactionActive() && ((ObserverImpl<?>) observer).isTransactional())
+         DependentContext.INSTANCE.setActive(true);
+         for (Observer<T> observer : observers)
          {
-            deferEvent(event, observer);
+            if (isTransactionActive() && ((ObserverImpl<?>) observer).isTransactional())
+            {
+               deferEvent(event, observer);
+            }
+            else
+            {
+               observer.notify(event);
+            }
          }
-         else
-         {
-            observer.notify(event);
-         }
       }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    /**

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/examples/Tests.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/examples/Tests.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/examples/Tests.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -8,6 +8,7 @@
 
 import org.jboss.webbeans.bean.ProducerMethodBean;
 import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.test.AbstractTest;
 import org.jboss.webbeans.util.BeanFactory;
 import org.testng.annotations.Test;
@@ -18,27 +19,35 @@
    public void testGameGenerator() throws Exception {
      setupGameGenerator();
      
-     Game game1 = manager.getInstanceByType(Game.class);
-     Game game2 = manager.getInstanceByType(Game.class);
-     assert game1!=game2;
-     assert game1.getNumber()!=game2.getNumber();
-     Generator gen1 = manager.getInstanceByType(Generator.class);
-     Generator gen2 = manager.getInstanceByType(Generator.class);
-     assert gen1.getRandom()!=null;
-     assert gen1.getRandom()==gen2.getRandom();
+     try
+     {
+        DependentContext.INSTANCE.setActive(true);
+        Game game1 = manager.getInstanceByType(Game.class);
+        Game game2 = manager.getInstanceByType(Game.class);
+        assert game1!=game2;
+        assert game1.getNumber()!=game2.getNumber();
+        Generator gen1 = manager.getInstanceByType(Generator.class);
+        Generator gen2 = manager.getInstanceByType(Generator.class);
+        assert gen1.getRandom()!=null;
+        assert gen1.getRandom()==gen2.getRandom();
+     }
+     finally
+     {
+        DependentContext.INSTANCE.setActive(false);
+     }
    }
 
    private void setupGameGenerator() throws NoSuchMethodException
    {
       SimpleBean<Game> gameBean = BeanFactory.createSimpleBean(Game.class, manager);
-        SimpleBean<Generator> generatorBean = BeanFactory.createSimpleBean(Generator.class, manager);
-        Method method = Generator.class.getDeclaredMethod("next");
-        method.setAccessible(true);
-        ProducerMethodBean<Integer> nextBean = BeanFactory.createProducerMethodBean(int.class, method, generatorBean, manager);
+      SimpleBean<Generator> generatorBean = BeanFactory.createSimpleBean(Generator.class, manager);
+      Method method = Generator.class.getDeclaredMethod("next");
+      method.setAccessible(true);
+      ProducerMethodBean<Integer> nextBean = BeanFactory.createProducerMethodBean(int.class, method, generatorBean, manager);
         
-        manager.addBean(gameBean);
-        manager.addBean(generatorBean);
-        manager.addBean(nextBean);
+      manager.addBean(gameBean);
+      manager.addBean(generatorBean);
+      manager.addBean(nextBean);
    }
    
    @Test
@@ -47,24 +56,40 @@
       
       manager.setEnabledDeploymentTypes(Arrays.asList(Standard.class, Production.class, Mock.class));
       
-      TextTranslator tt2 = manager.getInstanceByType(TextTranslator.class);
-      assert "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.".equals( tt2.translate("Hello world. How's tricks?") );
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         TextTranslator tt2 = manager.getInstanceByType(TextTranslator.class);
+         assert "Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.".equals( tt2.translate("Hello world. How's tricks?") );
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }      
    }
 
    @Test
    public void testSentenceTranslator() throws Exception {
       setupTextTranslator();
       
-      TextTranslator tt1 = manager.getInstanceByType(TextTranslator.class);
-      try {
-         tt1.translate("hello world");
-         assert false;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         TextTranslator tt1 = manager.getInstanceByType(TextTranslator.class);
+         try 
+         {
+            tt1.translate("hello world");
+            assert false;
+         }
+         catch (UnsupportedOperationException uoe)
+         {
+            //expected
+         }
       }
-      catch (UnsupportedOperationException uoe)
+      finally
       {
-         //expected
+         DependentContext.INSTANCE.setActive(false);
       }
-      
    }
    
    private void setupTextTranslator()

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ClientProxyTest.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -10,6 +10,7 @@
 import javax.webbeans.UnproxyableDependencyException;
 import javax.webbeans.manager.Bean;
 
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.test.beans.Fox;
 import org.jboss.webbeans.test.beans.Tuna;
 import org.jboss.webbeans.test.beans.TunedTuna;
@@ -37,8 +38,16 @@
    public void testClientProxyNotUsedForPseudoScope()
    {
       Bean<Fox> foxBean = BeanFactory.createSimpleBean(Fox.class, manager);
-      Fox fox = manager.getInstance(foxBean);
-      assert !Reflections.isProxy(fox);
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         Fox fox = manager.getInstance(foxBean);
+         assert !Reflections.isProxy(fox);
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    private byte[] serializeBean(Object instance) throws IOException {

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -5,6 +5,7 @@
 import javax.webbeans.AmbiguousDependencyException;
 import javax.webbeans.manager.Bean;
 
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedClass;
 import org.jboss.webbeans.introspector.AnnotatedField;
 import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
@@ -71,7 +72,15 @@
       manager.addBean(seaBassBean);
       manager.addBean(plaiceBean);
       
-      assert manager.getInstanceByName("salmon") instanceof Salmon;
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         assert manager.getInstanceByName("salmon") instanceof Salmon;
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
    
    @Test(groups={"stub", "resolution", "el"}) @SpecAssertion(section="4.10")

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/NewEventTest.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -15,6 +15,7 @@
 import org.jboss.webbeans.bean.EventBean;
 import org.jboss.webbeans.bean.SimpleBean;
 import org.jboss.webbeans.bindings.InitializedBinding;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedField;
 import org.jboss.webbeans.test.beans.BananaSpider;
 import org.jboss.webbeans.test.beans.RecluseSpider;
@@ -573,8 +574,16 @@
    public void testDuplicateBindingsToFireFails()
    {
       webBeansBootstrap.registerBeans(SweeWaxbill.class);
-      SweeWaxbill bean = manager.getInstanceByType(SweeWaxbill.class);
-      bean.methodThatFiresEvent();
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         SweeWaxbill bean = manager.getInstanceByType(SweeWaxbill.class);
+         bean.methodThatFiresEvent();
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    @Test(groups = { "events" }, expectedExceptions={ DuplicateBindingTypeException.class })
@@ -582,8 +591,16 @@
    public void testDuplicateBindingsToObservesFails()
    {
       webBeansBootstrap.registerBeans(SweeWaxbill.class);
-      SweeWaxbill bean = manager.getInstanceByType(SweeWaxbill.class);
-      bean.methodThatRegistersObserver();
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         SweeWaxbill bean = manager.getInstanceByType(SweeWaxbill.class);
+         bean.methodThatRegistersObserver();
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
    }
 
    @Test(groups = { "stub", "events" })

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java	2008-12-15 12:43:39 UTC (rev 529)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ObserverTest.java	2008-12-15 13:52:46 UTC (rev 530)
@@ -6,6 +6,7 @@
 import javax.webbeans.Observes;
 
 import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.contexts.DependentContext;
 import org.jboss.webbeans.introspector.AnnotatedMethod;
 import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
 import org.jboss.webbeans.introspector.jlr.AnnotatedMethodImpl;
@@ -76,7 +77,16 @@
    {
       SampleEvent event = new SampleEvent();
       notified = false;
-      observer.notify(event);
+      // The Dependent context isn't automatically activated when calling ObserverImpl.notify, only when through the EventManager
+      try
+      {
+         DependentContext.INSTANCE.setActive(true);
+         observer.notify(event);
+      }
+      finally
+      {
+         DependentContext.INSTANCE.setActive(false);
+      }
       assert notified == true;
    }
 




More information about the weld-commits mailing list