提交 8ca4c619 编写于 作者: R Ronny Bräunlich 提交者: Frederik Heremans

ACT-1555: accepted 2 pull-requests, tests now fixed

上级 64e0058a
......@@ -14,6 +14,7 @@ package org.activiti.cdi.impl.util;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
......@@ -40,11 +41,11 @@ public class ProgrammaticBeanLookup {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Object lookup(String name, BeanManager bm) {
Iterator<Bean< ? >> iter = bm.getBeans(name).iterator();
if (!iter.hasNext()) {
Set<Bean< ? >> beans = bm.getBeans(name);
if (beans.isEmpty()) {
throw new IllegalStateException("CDI BeanManager cannot find an instance of requested type '" + name + "'");
}
Bean bean = iter.next();
Bean bean = bm.resolve(beans);
CreationalContext ctx = bm.createCreationalContext(bean);
// select one beantype randomly. A bean has a non-empty set of beantypes.
Type type = (Type) bean.getTypes().iterator().next();
......
package org.activiti.cdi.test.impl.beans;
import javax.enterprise.inject.Specializes;
import org.activiti.cdi.test.impl.util.ProgrammaticBeanLookupTest.TestBean;
@Specializes
public class SpecializedTestBean extends TestBean {
}
package org.activiti.cdi.test.impl.util;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
import javax.enterprise.inject.Alternative;
import javax.inject.Named;
import org.activiti.cdi.impl.util.ActivitiServices;
import org.activiti.cdi.impl.util.ProgrammaticBeanLookup;
import org.activiti.cdi.test.impl.beans.SpecializedTestBean;
import org.jboss.arquillian.container.test.api.Deployer;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
*
* @author Ronny Bräunlich
*
*/
@RunWith(Arquillian.class)
public class ProgrammaticBeanLookupTest {
/**
* Because of all alternatives and specializations I have to handle
* deployment myself
*/
@ArquillianResource
private Deployer deployer;
@Deployment(name = "normal", managed = false)
public static JavaArchive createDeployment() {
return ShrinkWrap
.create(JavaArchive.class)
.addClass(ProgrammaticBeanLookup.class)
.addClass(ActivitiServices.class)
.addAsManifestResource(
"org/activiti/cdi/test/impl/util/beans.xml",
"beans.xml");
}
@Deployment(name = "withAlternative", managed = false)
public static JavaArchive createDeploymentWithAlternative() {
return ShrinkWrap
.create(JavaArchive.class)
.addClass(ProgrammaticBeanLookup.class)
.addClass(ActivitiServices.class)
.addClass(AlternativeTestBean.class)
.addAsManifestResource(
"org/activiti/cdi/test/impl/util/beansWithAlternative.xml",
"beans.xml");
}
@Deployment(name = "withSpecialization", managed = false)
public static JavaArchive createDeploymentWithSpecialization() {
return ShrinkWrap
.create(JavaArchive.class)
.addClass(ProgrammaticBeanLookup.class)
.addClass(ActivitiServices.class)
.addClass(SpecializedTestBean.class)
.addAsManifestResource(
"org/activiti/cdi/test/impl/util/beans.xml",
"beans.xml");
}
@Test
public void testLookupBean() {
deployer.deploy("normal");
Object lookup = ProgrammaticBeanLookup.lookup("testOnly");
assertThat(lookup.getClass(), is(TestBean.class.getClass()));
deployer.undeploy("normal");
}
@Test
public void testLookupShouldFindAlternative() {
deployer.deploy("withAlternative");
Object lookup = ProgrammaticBeanLookup.lookup("testOnly");
assertThat(lookup.getClass().getName(),
is(equalTo(AlternativeTestBean.class.getName())));
deployer.undeploy("withAlternative");
}
@Test
public void testLookupShouldFindSpecialization() {
deployer.deploy("withSpecialization");
Object lookup = ProgrammaticBeanLookup.lookup("testOnly");
assertThat(lookup.getClass().getName(),
is(equalTo(SpecializedTestBean.class.getName())));
deployer.undeploy("withSpecialization");
}
@Named("testOnly")
public static class TestBean {
}
@Alternative
@Named("testOnly")
public static class AlternativeTestBean extends TestBean {
}
}
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
<alternatives>
<class>org.activiti.cdi.test.impl.util.ProgrammaticBeanLookupTest$AlternativeTestBean</class>
</alternatives>
</beans>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册