[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