From daa5e53e8aba11a4138876e38b9d1abf7569c051 Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Mon, 14 Oct 2024 19:24:54 +0700 Subject: [PATCH] [Event] (Add) try handle generic event --- .../com/miti99/test/event/GenericEvent.java | 3 +++ .../com/miti99/test/event/SimpleEvent.java | 3 +++ .../com/miti99/test/listener/AListener.java | 14 +++++++++++ .../com/miti99/test/listener/BListener.java | 15 ++++++++++++ .../miti99/test/listener/SimpleListener.java | 13 ++++++++++ .../com/miti99/test/publisher/APublisher.java | 24 +++++++++++++++++++ .../com/miti99/test/publisher/BPublisher.java | 24 +++++++++++++++++++ .../test/publisher/SimplePublisher.java | 23 ++++++++++++++++++ .../src/main/java/com/miti99/test/type/A.java | 3 +++ .../src/main/java/com/miti99/test/type/B.java | 3 +++ 10 files changed, 125 insertions(+) create mode 100644 quarkus/src/main/java/com/miti99/test/event/GenericEvent.java create mode 100644 quarkus/src/main/java/com/miti99/test/event/SimpleEvent.java create mode 100644 quarkus/src/main/java/com/miti99/test/listener/AListener.java create mode 100644 quarkus/src/main/java/com/miti99/test/listener/BListener.java create mode 100644 quarkus/src/main/java/com/miti99/test/listener/SimpleListener.java create mode 100644 quarkus/src/main/java/com/miti99/test/publisher/APublisher.java create mode 100644 quarkus/src/main/java/com/miti99/test/publisher/BPublisher.java create mode 100644 quarkus/src/main/java/com/miti99/test/publisher/SimplePublisher.java create mode 100644 quarkus/src/main/java/com/miti99/test/type/A.java create mode 100644 quarkus/src/main/java/com/miti99/test/type/B.java diff --git a/quarkus/src/main/java/com/miti99/test/event/GenericEvent.java b/quarkus/src/main/java/com/miti99/test/event/GenericEvent.java new file mode 100644 index 0000000..dcd50ae --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/event/GenericEvent.java @@ -0,0 +1,3 @@ +package com.miti99.test.event; + +public record GenericEvent(T data) {} diff --git a/quarkus/src/main/java/com/miti99/test/event/SimpleEvent.java b/quarkus/src/main/java/com/miti99/test/event/SimpleEvent.java new file mode 100644 index 0000000..dfaf957 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/event/SimpleEvent.java @@ -0,0 +1,3 @@ +package com.miti99.test.event; + +public record SimpleEvent() {} diff --git a/quarkus/src/main/java/com/miti99/test/listener/AListener.java b/quarkus/src/main/java/com/miti99/test/listener/AListener.java new file mode 100644 index 0000000..86c2988 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/listener/AListener.java @@ -0,0 +1,14 @@ +package com.miti99.test.listener; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; + +@ApplicationScoped +public class AListener { + + public void onGenericEvent(@Observes GenericEvent event) { + System.out.println("AListener.onGenericEvent: " + event.data().getClass()); + } +} diff --git a/quarkus/src/main/java/com/miti99/test/listener/BListener.java b/quarkus/src/main/java/com/miti99/test/listener/BListener.java new file mode 100644 index 0000000..060fbd7 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/listener/BListener.java @@ -0,0 +1,15 @@ +package com.miti99.test.listener; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import com.miti99.test.type.B; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; + +@ApplicationScoped +public class BListener { + + public void onGenericEvent(@Observes GenericEvent event) { + System.out.println("BListener.onGenericEvent: " + event.data().getClass()); + } +} diff --git a/quarkus/src/main/java/com/miti99/test/listener/SimpleListener.java b/quarkus/src/main/java/com/miti99/test/listener/SimpleListener.java new file mode 100644 index 0000000..3b536ee --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/listener/SimpleListener.java @@ -0,0 +1,13 @@ +package com.miti99.test.listener; + +import com.miti99.test.event.SimpleEvent; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; + +@ApplicationScoped +public class SimpleListener { + + public void onEvent(@Observes SimpleEvent event) { + System.out.println("SimpleListener.onEvent"); + } +} diff --git a/quarkus/src/main/java/com/miti99/test/publisher/APublisher.java b/quarkus/src/main/java/com/miti99/test/publisher/APublisher.java new file mode 100644 index 0000000..506a874 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/publisher/APublisher.java @@ -0,0 +1,24 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import jakarta.enterprise.event.Event; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; + +@Path("/A") +public class APublisher { + + @Inject Event> eventPublisher; + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + GenericEvent event = new GenericEvent<>(new A()); + eventPublisher.fire(event); + return "fired A event"; + } +} diff --git a/quarkus/src/main/java/com/miti99/test/publisher/BPublisher.java b/quarkus/src/main/java/com/miti99/test/publisher/BPublisher.java new file mode 100644 index 0000000..9483cc9 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/publisher/BPublisher.java @@ -0,0 +1,24 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.B; +import jakarta.enterprise.event.Event; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; + +@Path("/B") +public class BPublisher { + + @Inject Event> eventPublisher; + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + GenericEvent event = new GenericEvent<>(new B()); + eventPublisher.fire(event); + return "fired B event"; + } +} diff --git a/quarkus/src/main/java/com/miti99/test/publisher/SimplePublisher.java b/quarkus/src/main/java/com/miti99/test/publisher/SimplePublisher.java new file mode 100644 index 0000000..2610fcc --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/publisher/SimplePublisher.java @@ -0,0 +1,23 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.SimpleEvent; +import jakarta.enterprise.event.Event; +import jakarta.inject.Inject; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; + +@Path("/Simple") +public class SimplePublisher { + + @Inject Event eventPublisher; + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + SimpleEvent event = new SimpleEvent(); + eventPublisher.fire(event); + return "fired simple event"; + } +} diff --git a/quarkus/src/main/java/com/miti99/test/type/A.java b/quarkus/src/main/java/com/miti99/test/type/A.java new file mode 100644 index 0000000..d9a4b15 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/type/A.java @@ -0,0 +1,3 @@ +package com.miti99.test.type; + +public class A {} diff --git a/quarkus/src/main/java/com/miti99/test/type/B.java b/quarkus/src/main/java/com/miti99/test/type/B.java new file mode 100644 index 0000000..a647918 --- /dev/null +++ b/quarkus/src/main/java/com/miti99/test/type/B.java @@ -0,0 +1,3 @@ +package com.miti99.test.type; + +public class B {}