Skip to content

Commit

Permalink
Add register methods
Browse files Browse the repository at this point in the history
git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@303 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
pmuir committed Nov 13, 2008
1 parent 95eef7f commit 4aebe52
Show file tree
Hide file tree
Showing 2 changed files with 124 additions and 27 deletions.
Expand Up @@ -7,6 +7,8 @@
import java.util.HashSet;
import java.util.Set;

import javax.webbeans.manager.Bean;

import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bean.AbstractClassBean;
Expand All @@ -27,6 +29,23 @@ protected Bootstrap(ManagerImpl manager)
this.manager = manager;
}

/**
* Register any beans defined by the provided classes with the manager
*/
public void registerBeans(Class<?>...classes)
{
Set<AbstractBean<?, ?>> beans = discoverBeans(classes);
for (Bean<?> bean : beans)
{
manager.addBean(bean);
}
}

/**
* Discover any beans defined by the provided classes
*
* Beans discovered are not registered with the manager
*/
public Set<AbstractBean<?, ?>> discoverBeans(Class<?>... classes)
{
Set<AbstractBean<?, ?>> beans = new HashSet<AbstractBean<?, ?>>();
Expand Down
132 changes: 105 additions & 27 deletions webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java
@@ -1,9 +1,16 @@
package org.jboss.webbeans.test;

import java.util.HashSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import javax.webbeans.manager.Bean;

import org.jboss.webbeans.bean.AbstractBean;
import org.jboss.webbeans.bean.EnterpriseBean;
import org.jboss.webbeans.bean.ProducerMethodBean;
import org.jboss.webbeans.bean.SimpleBean;
import org.jboss.webbeans.ejb.DefaultEnterpriseBeanLookup;
import org.jboss.webbeans.test.beans.Elephant;
import org.jboss.webbeans.test.beans.Panther;
import org.jboss.webbeans.test.beans.Salmon;
Expand Down Expand Up @@ -39,64 +46,135 @@ public void testMultipleSimpleBean()
{
Set<AbstractBean<?, ?>> beans = bootstrap.discoverBeans(Tuna.class, Salmon.class, SeaBass.class, Sole.class);
assert beans.size() == 4;
Set<Class<?>> classes = new HashSet<Class<?>>();
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (AbstractBean<?, ?> bean : beans)
{
classes.add(bean.getType());
classes.put(bean.getType(), bean);
}
assert classes.contains(Tuna.class);
assert classes.contains(Salmon.class);
assert classes.contains(SeaBass.class);
assert classes.contains(Sole.class);
assert classes.containsKey(Tuna.class);
assert classes.containsKey(Salmon.class);
assert classes.containsKey(SeaBass.class);
assert classes.containsKey(Sole.class);

assert classes.get(Tuna.class) instanceof SimpleBean;
assert classes.get(Salmon.class) instanceof SimpleBean;
assert classes.get(SeaBass.class) instanceof SimpleBean;
assert classes.get(Sole.class) instanceof SimpleBean;
}

@Test(groups="bootstrap")
public void testProducerMethodBean()
{
Set<AbstractBean<?, ?>> beans = bootstrap.discoverBeans(TarantulaProducer.class);
assert beans.size() == 2;
Set<Class<?>> classes = new HashSet<Class<?>>();
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (AbstractBean<?, ?> bean : beans)
{
classes.add(bean.getType());
classes.put(bean.getType(), bean);
}
assert classes.contains(TarantulaProducer.class);
assert classes.contains(Tarantula.class);
assert classes.containsKey(TarantulaProducer.class);
assert classes.containsKey(Tarantula.class);

assert classes.get(TarantulaProducer.class) instanceof SimpleBean;
assert classes.get(Tarantula.class) instanceof ProducerMethodBean;
}

@Test(groups="bootstrap")
public void testMultipleEnterpriseBean()
{
Set<AbstractBean<?, ?>> beans = bootstrap.discoverBeans(Hound.class, Elephant.class, Panther.class, Tiger.class);
assert beans.size() == 4;
Set<Class<?>> classes = new HashSet<Class<?>>();
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (AbstractBean<?, ?> bean : beans)
{
classes.add(bean.getType());
classes.put(bean.getType(), bean);
}
assert classes.contains(Hound.class);
assert classes.contains(Elephant.class);
assert classes.contains(Panther.class);
assert classes.contains(Tiger.class);
assert classes.containsKey(Hound.class);
assert classes.containsKey(Elephant.class);
assert classes.containsKey(Panther.class);
assert classes.containsKey(Tiger.class);

assert classes.get(Hound.class) instanceof EnterpriseBean;
assert classes.get(Elephant.class) instanceof EnterpriseBean;
assert classes.get(Panther.class) instanceof EnterpriseBean;
assert classes.get(Tiger.class) instanceof EnterpriseBean;
}

@Test(groups="bootstrap")
public void testMultipleEnterpriseAndSimpleBean()
{
Set<AbstractBean<?, ?>> beans = bootstrap.discoverBeans(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class);
assert beans.size() == 8;
Set<Class<?>> classes = new HashSet<Class<?>>();
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (AbstractBean<?, ?> bean : beans)
{
classes.add(bean.getType());
classes.put(bean.getType(), bean);
}
assert classes.containsKey(Hound.class);
assert classes.containsKey(Elephant.class);
assert classes.containsKey(Panther.class);
assert classes.containsKey(Tiger.class);
assert classes.containsKey(Tuna.class);
assert classes.containsKey(Salmon.class);
assert classes.containsKey(SeaBass.class);
assert classes.containsKey(Sole.class);

assert classes.get(Hound.class) instanceof EnterpriseBean;
assert classes.get(Elephant.class) instanceof EnterpriseBean;
assert classes.get(Panther.class) instanceof EnterpriseBean;
assert classes.get(Tiger.class) instanceof EnterpriseBean;
assert classes.get(Tuna.class) instanceof SimpleBean;
assert classes.get(Salmon.class) instanceof SimpleBean;
assert classes.get(SeaBass.class) instanceof SimpleBean;
assert classes.get(Sole.class) instanceof SimpleBean;
}

@Test(groups="bootstrap")
public void testRegisterProducerMethodBean()
{
bootstrap.registerBeans(TarantulaProducer.class);
assert manager.getBeans().size() == 3;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (Bean<?> bean : manager.getBeans())
{
classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
}
assert classes.containsKey(TarantulaProducer.class);
assert classes.containsKey(Tarantula.class);


assert classes.get(TarantulaProducer.class) instanceof SimpleBean;
assert classes.get(Tarantula.class) instanceof ProducerMethodBean;
}

@Test(groups="bootstrap")
public void testRegisterMultipleEnterpriseAndSimpleBean()
{
bootstrap.registerBeans(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class);
assert manager.getBeans().size() == 9;
Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();
for (Bean<?> bean : manager.getBeans())
{

classes.put(((AbstractBean<?, ?>) bean).getType(), bean);
}
assert classes.contains(Hound.class);
assert classes.contains(Elephant.class);
assert classes.contains(Panther.class);
assert classes.contains(Tiger.class);
assert classes.contains(Tuna.class);
assert classes.contains(Salmon.class);
assert classes.contains(SeaBass.class);
assert classes.contains(Sole.class);
assert classes.containsKey(DefaultEnterpriseBeanLookup.class);
assert classes.containsKey(Hound.class);
assert classes.containsKey(Elephant.class);
assert classes.containsKey(Panther.class);
assert classes.containsKey(Tiger.class);
assert classes.containsKey(Tuna.class);
assert classes.containsKey(Salmon.class);
assert classes.containsKey(SeaBass.class);
assert classes.containsKey(Sole.class);

assert classes.get(Hound.class) instanceof EnterpriseBean;
assert classes.get(Elephant.class) instanceof EnterpriseBean;
assert classes.get(Panther.class) instanceof EnterpriseBean;
assert classes.get(Tiger.class) instanceof EnterpriseBean;
assert classes.get(Tuna.class) instanceof SimpleBean;
assert classes.get(Salmon.class) instanceof SimpleBean;
assert classes.get(SeaBass.class) instanceof SimpleBean;
assert classes.get(Sole.class) instanceof SimpleBean;
}
}

0 comments on commit 4aebe52

Please sign in to comment.