diff --git a/cdi/events/pom.xml b/cdi/events/pom.xml new file mode 100644 index 000000000..050b5a491 --- /dev/null +++ b/cdi/events/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + org.javaee7.cdi + cdi-samples + 1.0-SNAPSHOT + ../pom.xml + + + events + diff --git a/cdi/events/src/main/java/org/javaee7/cdi/events/EventReceiver.java b/cdi/events/src/main/java/org/javaee7/cdi/events/EventReceiver.java new file mode 100644 index 000000000..8a28a1b43 --- /dev/null +++ b/cdi/events/src/main/java/org/javaee7/cdi/events/EventReceiver.java @@ -0,0 +1,8 @@ +package org.javaee7.cdi.events; + +/** + * @author Radim Hanus + */ +public interface EventReceiver { + String getGreet(); +} diff --git a/cdi/events/src/main/java/org/javaee7/cdi/events/EventSender.java b/cdi/events/src/main/java/org/javaee7/cdi/events/EventSender.java new file mode 100644 index 000000000..ecf31716d --- /dev/null +++ b/cdi/events/src/main/java/org/javaee7/cdi/events/EventSender.java @@ -0,0 +1,8 @@ +package org.javaee7.cdi.events; + +/** + * @author Radim Hanus + */ +public interface EventSender { + void send(String message); +} diff --git a/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingReceiver.java b/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingReceiver.java new file mode 100644 index 000000000..f7ff59d20 --- /dev/null +++ b/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingReceiver.java @@ -0,0 +1,22 @@ +package org.javaee7.cdi.events; + +import javax.enterprise.context.SessionScoped; +import javax.enterprise.event.Observes; +import java.io.Serializable; + +/** + * @author Radim Hanus + */ +@SessionScoped +public class GreetingReceiver implements EventReceiver, Serializable { + private String greet = "Willkommen"; + + void receive(@Observes String greet) { + this.greet = greet; + } + + @Override + public String getGreet() { + return greet; + } +} diff --git a/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingSender.java b/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingSender.java new file mode 100644 index 000000000..15b43692c --- /dev/null +++ b/cdi/events/src/main/java/org/javaee7/cdi/events/GreetingSender.java @@ -0,0 +1,17 @@ +package org.javaee7.cdi.events; + +import javax.enterprise.event.Event; +import javax.inject.Inject; + +/** + * @author Radim Hanus + */ +public class GreetingSender implements EventSender { + @Inject + private Event event; + + @Override + public void send(String message) { + event.fire(message); + } +} diff --git a/cdi/events/src/test/java/org/javaee7/cdi/events/GreetingTest.java b/cdi/events/src/test/java/org/javaee7/cdi/events/GreetingTest.java new file mode 100644 index 000000000..2c065c436 --- /dev/null +++ b/cdi/events/src/test/java/org/javaee7/cdi/events/GreetingTest.java @@ -0,0 +1,52 @@ +package org.javaee7.cdi.events; + +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.arquillian.junit.Arquillian; +import org.jboss.shrinkwrap.api.Archive; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.Test; +import org.junit.runner.RunWith; + +import javax.inject.Inject; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +/** + * @author Radim Hanus + */ +@RunWith(Arquillian.class) +public class GreetingTest { + @Deployment + public static Archive deploy() { + return ShrinkWrap.create(JavaArchive.class) + .addClasses(EventReceiver.class, EventSender.class, GreetingReceiver.class, GreetingSender.class) + .addAsManifestResource("beans.xml"); + } + + @Inject + private EventSender sender; + + @Inject + private EventReceiver receiver; + + @Test + public void test() throws Exception { + assertThat(sender, is(notNullValue())); + assertThat(sender, instanceOf(GreetingSender.class)); + + assertThat(receiver, is(notNullValue())); + assertThat(receiver, instanceOf(GreetingReceiver.class)); + + // default greet + assertEquals("Willkommen", receiver.getGreet()); + // send a new greet + sender.send("Welcome"); + // receiver must not belongs to the dependent pseudo-scope since we are checking the result + assertEquals("Welcome", receiver.getGreet()); + } +} diff --git a/cdi/events/src/test/resources/arquillian.xml b/cdi/events/src/test/resources/arquillian.xml new file mode 100644 index 000000000..30b3e876c --- /dev/null +++ b/cdi/events/src/test/resources/arquillian.xml @@ -0,0 +1,16 @@ + + + + + + + + + ${serverRoot:target/wildfly-8.0.0.CR1} + ${serverProfile:standalone-full.xml} + + + + diff --git a/cdi/events/src/test/resources/beans.xml b/cdi/events/src/test/resources/beans.xml new file mode 100644 index 000000000..aa8e57744 --- /dev/null +++ b/cdi/events/src/test/resources/beans.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/cdi/pom.xml b/cdi/pom.xml index d3c0e357f..b6ee7feee 100644 --- a/cdi/pom.xml +++ b/cdi/pom.xml @@ -34,5 +34,6 @@ alternatives-priority nobeans-el-injection nobeans-el-injection-flowscoped + events