Skip to content

Commit 6b1ada2

Browse files
committed
Merge pull request #181 from rhanus/master
Tests for declaring selected alternatives
2 parents df6904b + 0c2791b commit 6b1ada2

File tree

13 files changed

+245
-0
lines changed

13 files changed

+245
-0
lines changed

cdi/alternatives-priority/pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<parent>
5+
<groupId>org.javaee7.cdi</groupId>
6+
<artifactId>cdi-samples</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<relativePath>../pom.xml</relativePath>
9+
</parent>
10+
11+
<artifactId>alternatives-priority</artifactId>
12+
</project>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import javax.annotation.Priority;
4+
import javax.enterprise.inject.Alternative;
5+
6+
/**
7+
* @author Arun Gupta
8+
* @author Radim Hanus
9+
*/
10+
@Priority(1000)
11+
@Alternative
12+
public class FancyGreeting implements Greeting {
13+
@Override
14+
public String greet(String name) {
15+
return "Nice to meet you, hello" + name;
16+
}
17+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
/**
4+
* @author Arun Gupta
5+
* @author Radim Hanus
6+
*/
7+
public interface Greeting {
8+
public String greet(String name);
9+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import javax.annotation.Priority;
4+
import javax.enterprise.inject.Alternative;
5+
6+
/**
7+
* @author Radim Hanus
8+
*/
9+
@Priority(2000)
10+
@Alternative
11+
public class PriorityGreeting implements Greeting {
12+
@Override
13+
public String greet(String name) {
14+
return "Hey " + name + " I should be selected since I've got the highest priority !";
15+
}
16+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import javax.annotation.Priority;
4+
import javax.enterprise.inject.Alternative;
5+
import javax.enterprise.inject.Produces;
6+
7+
/**
8+
* @author Radim Hanus
9+
*/
10+
@Priority(3000)
11+
public class ProducerMethodGreeting {
12+
13+
@Produces
14+
@Alternative
15+
public Greeting getGreeting() {
16+
return new SimpleGreeting();
17+
}
18+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import javax.enterprise.inject.Alternative;
4+
5+
/**
6+
* @author Arun Gupta
7+
* @author Radim Hanus
8+
*/
9+
@Alternative
10+
public class SimpleGreeting implements Greeting {
11+
@Override
12+
public String greet(String name) {
13+
return "Hello " + name;
14+
}
15+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import org.jboss.arquillian.container.test.api.Deployment;
4+
import org.jboss.arquillian.junit.Arquillian;
5+
import org.jboss.shrinkwrap.api.Archive;
6+
import org.jboss.shrinkwrap.api.ShrinkWrap;
7+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
11+
import javax.inject.Inject;
12+
13+
import static org.hamcrest.CoreMatchers.*;
14+
import static org.junit.Assert.assertThat;
15+
16+
/**
17+
* @author Alexis Hassler
18+
* @author Radim Hanus
19+
*/
20+
@RunWith(Arquillian.class)
21+
public class GreetingTest {
22+
@Deployment
23+
public static Archive<?> deploy() {
24+
return ShrinkWrap.create(JavaArchive.class)
25+
.addClasses(Greeting.class, SimpleGreeting.class, FancyGreeting.class, PriorityGreeting.class)
26+
.addAsManifestResource("beans-empty.xml", "beans.xml");
27+
}
28+
29+
@Inject
30+
Greeting bean;
31+
32+
@Test
33+
public void should_bean_be_injected() throws Exception {
34+
assertThat(bean, is(notNullValue()));
35+
}
36+
37+
@Test
38+
public void should_bean_be_priority() throws Exception {
39+
// because it has the highest priority from Priority annotated alternatives
40+
assertThat(bean, instanceOf(PriorityGreeting.class));
41+
}
42+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import org.jboss.arquillian.container.test.api.Deployment;
4+
import org.jboss.arquillian.junit.Arquillian;
5+
import org.jboss.shrinkwrap.api.Archive;
6+
import org.jboss.shrinkwrap.api.ShrinkWrap;
7+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
11+
import javax.enterprise.inject.spi.Bean;
12+
import javax.enterprise.inject.spi.BeanManager;
13+
import javax.inject.Inject;
14+
import java.util.Set;
15+
16+
import static org.junit.Assert.assertTrue;
17+
18+
/**
19+
* @author Radim Hanus
20+
*/
21+
@RunWith(Arquillian.class)
22+
public class MixedGreetingTest {
23+
@Deployment
24+
public static Archive<?> deploy() {
25+
return ShrinkWrap.create(JavaArchive.class)
26+
.addClasses(Greeting.class, SimpleGreeting.class, FancyGreeting.class)
27+
.addAsManifestResource("beans-alternatives.xml", "beans.xml");
28+
}
29+
30+
@Inject
31+
BeanManager beanManager;
32+
33+
@Test
34+
public void should_be_ambiguous() throws Exception {
35+
Set<Bean<?>> beans = beanManager.getBeans(Greeting.class);
36+
assertTrue(beans.size() == 2);
37+
}
38+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.javaee7.cdi.alternatives.priority;
2+
3+
import org.jboss.arquillian.container.test.api.Deployment;
4+
import org.jboss.arquillian.junit.Arquillian;
5+
import org.jboss.shrinkwrap.api.Archive;
6+
import org.jboss.shrinkwrap.api.ShrinkWrap;
7+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
11+
import javax.inject.Inject;
12+
13+
import static org.hamcrest.CoreMatchers.*;
14+
import static org.junit.Assert.assertThat;
15+
16+
/**
17+
* @author Radim Hanus
18+
*/
19+
@RunWith(Arquillian.class)
20+
public class ProducerMethodGreetingTest {
21+
@Deployment
22+
public static Archive<?> deploy() {
23+
return ShrinkWrap.create(JavaArchive.class)
24+
.addClasses(Greeting.class, SimpleGreeting.class, FancyGreeting.class, PriorityGreeting.class, ProducerMethodGreeting.class)
25+
.addAsManifestResource("beans-empty.xml", "beans.xml");
26+
}
27+
28+
@Inject
29+
Greeting bean;
30+
31+
@Test
32+
public void should_bean_be_injected() throws Exception {
33+
assertThat(bean, is(notNullValue()));
34+
}
35+
36+
@Test
37+
public void should_bean_be_simple() throws Exception {
38+
// because it has the highest priority from Priority annotated alternatives
39+
assertThat(bean, instanceOf(SimpleGreeting.class));
40+
}
41+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns="http://jboss.org/schema/arquillian"
5+
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
6+
7+
<defaultProtocol type="Servlet 3.0"/>
8+
9+
<container qualifier="test" default="true">
10+
<configuration>
11+
<property name="jbossHome">${serverRoot:target/wildfly-8.0.0.CR1}</property>
12+
<property name="serverConfig">${serverProfile:standalone-full.xml}</property>
13+
</configuration>
14+
</container>
15+
16+
</arquillian>

0 commit comments

Comments
 (0)