From 6d2828c172b15be692d67b99cb6b6d1bc13881b9 Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Mon, 14 Oct 2024 19:39:02 +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 | 15 ++++++++++ .../com/miti99/test/listener/BListener.java | 15 ++++++++++ .../miti99/test/listener/SimpleListener.java | 14 ++++++++++ .../com/miti99/test/publisher/APublisher.java | 27 ++++++++++++++++++ .../com/miti99/test/publisher/BPublisher.java | 28 +++++++++++++++++++ .../test/publisher/SimplePublisher.java | 28 +++++++++++++++++++ .../src/main/java/com/miti99/test/type/A.java | 3 ++ .../src/main/java/com/miti99/test/type/B.java | 3 ++ 10 files changed, 139 insertions(+) create mode 100644 micronaut/src/main/java/com/miti99/test/event/GenericEvent.java create mode 100644 micronaut/src/main/java/com/miti99/test/event/SimpleEvent.java create mode 100644 micronaut/src/main/java/com/miti99/test/listener/AListener.java create mode 100644 micronaut/src/main/java/com/miti99/test/listener/BListener.java create mode 100644 micronaut/src/main/java/com/miti99/test/listener/SimpleListener.java create mode 100644 micronaut/src/main/java/com/miti99/test/publisher/APublisher.java create mode 100644 micronaut/src/main/java/com/miti99/test/publisher/BPublisher.java create mode 100644 micronaut/src/main/java/com/miti99/test/publisher/SimplePublisher.java create mode 100644 micronaut/src/main/java/com/miti99/test/type/A.java create mode 100644 micronaut/src/main/java/com/miti99/test/type/B.java diff --git a/micronaut/src/main/java/com/miti99/test/event/GenericEvent.java b/micronaut/src/main/java/com/miti99/test/event/GenericEvent.java new file mode 100644 index 0000000..dcd50ae --- /dev/null +++ b/micronaut/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/micronaut/src/main/java/com/miti99/test/event/SimpleEvent.java b/micronaut/src/main/java/com/miti99/test/event/SimpleEvent.java new file mode 100644 index 0000000..dfaf957 --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/event/SimpleEvent.java @@ -0,0 +1,3 @@ +package com.miti99.test.event; + +public record SimpleEvent() {} diff --git a/micronaut/src/main/java/com/miti99/test/listener/AListener.java b/micronaut/src/main/java/com/miti99/test/listener/AListener.java new file mode 100644 index 0000000..4fdaf49 --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/listener/AListener.java @@ -0,0 +1,15 @@ +package com.miti99.test.listener; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import io.micronaut.runtime.event.annotation.EventListener; +import jakarta.inject.Singleton; + +@Singleton +public class AListener { + + @EventListener + public void onApplicationEvent(GenericEvent event) { + System.out.println("AListener.onApplicationEvent: " + event.data().getClass()); + } +} diff --git a/micronaut/src/main/java/com/miti99/test/listener/BListener.java b/micronaut/src/main/java/com/miti99/test/listener/BListener.java new file mode 100644 index 0000000..b167470 --- /dev/null +++ b/micronaut/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.B; +import io.micronaut.runtime.event.annotation.EventListener; +import jakarta.inject.Singleton; + +@Singleton +public class BListener { + + @EventListener + public void onApplicationEvent(GenericEvent event) { + System.out.println("BListener.onApplicationEvent: " + event.data().getClass()); + } +} diff --git a/micronaut/src/main/java/com/miti99/test/listener/SimpleListener.java b/micronaut/src/main/java/com/miti99/test/listener/SimpleListener.java new file mode 100644 index 0000000..bb9ad4e --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/listener/SimpleListener.java @@ -0,0 +1,14 @@ +package com.miti99.test.listener; + +import com.miti99.test.event.SimpleEvent; +import io.micronaut.runtime.event.annotation.EventListener; +import jakarta.inject.Singleton; + +@Singleton +public class SimpleListener { + + @EventListener + public void onApplicationEvent(SimpleEvent event) { + System.out.println("SimpleListener.onApplicationEvent"); + } +} diff --git a/micronaut/src/main/java/com/miti99/test/publisher/APublisher.java b/micronaut/src/main/java/com/miti99/test/publisher/APublisher.java new file mode 100644 index 0000000..1ca2437 --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/publisher/APublisher.java @@ -0,0 +1,27 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import io.micronaut.context.event.ApplicationEventPublisher; +import io.micronaut.http.MediaType; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Produces; + +@Controller("/A") +public class APublisher { + + private final ApplicationEventPublisher> eventPublisher; + + public APublisher(ApplicationEventPublisher> eventPublisher) { + this.eventPublisher = eventPublisher; + } + + @Get + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + GenericEvent event = new GenericEvent<>(new A()); + eventPublisher.publishEvent(event); + return "fired A event"; + } +} diff --git a/micronaut/src/main/java/com/miti99/test/publisher/BPublisher.java b/micronaut/src/main/java/com/miti99/test/publisher/BPublisher.java new file mode 100644 index 0000000..42a8b4a --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/publisher/BPublisher.java @@ -0,0 +1,28 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.type.A; +import com.miti99.test.type.B; +import io.micronaut.context.event.ApplicationEventPublisher; +import io.micronaut.http.MediaType; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Produces; + +@Controller("/B") +public class BPublisher { + + private final ApplicationEventPublisher> eventPublisher; + + public BPublisher(ApplicationEventPublisher> eventPublisher) { + this.eventPublisher = eventPublisher; + } + + @Get + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + GenericEvent event = new GenericEvent<>(new B()); + eventPublisher.publishEvent(event); + return "fired B event"; + } +} diff --git a/micronaut/src/main/java/com/miti99/test/publisher/SimplePublisher.java b/micronaut/src/main/java/com/miti99/test/publisher/SimplePublisher.java new file mode 100644 index 0000000..ba2314e --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/publisher/SimplePublisher.java @@ -0,0 +1,28 @@ +package com.miti99.test.publisher; + +import com.miti99.test.event.GenericEvent; +import com.miti99.test.event.SimpleEvent; +import com.miti99.test.type.B; +import io.micronaut.context.event.ApplicationEventPublisher; +import io.micronaut.http.MediaType; +import io.micronaut.http.annotation.Controller; +import io.micronaut.http.annotation.Get; +import io.micronaut.http.annotation.Produces; + +@Controller("/Simple") +public class SimplePublisher { + + private final ApplicationEventPublisher eventPublisher; + + public SimplePublisher(ApplicationEventPublisher eventPublisher) { + this.eventPublisher = eventPublisher; + } + + @Get + @Produces(MediaType.TEXT_PLAIN) + public String hello() { + SimpleEvent event = new SimpleEvent(); + eventPublisher.publishEvent(event); + return "fired simple event"; + } +} diff --git a/micronaut/src/main/java/com/miti99/test/type/A.java b/micronaut/src/main/java/com/miti99/test/type/A.java new file mode 100644 index 0000000..d9a4b15 --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/type/A.java @@ -0,0 +1,3 @@ +package com.miti99.test.type; + +public class A {} diff --git a/micronaut/src/main/java/com/miti99/test/type/B.java b/micronaut/src/main/java/com/miti99/test/type/B.java new file mode 100644 index 0000000..a647918 --- /dev/null +++ b/micronaut/src/main/java/com/miti99/test/type/B.java @@ -0,0 +1,3 @@ +package com.miti99.test.type; + +public class B {}