[Event] (Add) try handle generic event

This commit is contained in:
tiennm99 committed 2024-10-14 19:39:02 +07:00
1 parent daa5e53e8a
commit 6d2828c172
10 files changed
+139

No files matched your search

@@ -0,0 +1,3 @@
package com.miti99.test.event;
public record GenericEvent<T>(T data) {}
@@ -0,0 +1,3 @@
package com.miti99.test.event;
public record SimpleEvent() {}
@@ -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<A> event) {
System.out.println("AListener.onApplicationEvent: " + event.data().getClass());
}
}
@@ -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<B> event) {
System.out.println("BListener.onApplicationEvent: " + event.data().getClass());
}
}
@@ -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");
}
}
@@ -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<GenericEvent<A>> eventPublisher;
public APublisher(ApplicationEventPublisher<GenericEvent<A>> eventPublisher) {
this.eventPublisher = eventPublisher;
}
@Get
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
GenericEvent<A> event = new GenericEvent<>(new A());
eventPublisher.publishEvent(event);
return "fired A event";
}
}
@@ -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<GenericEvent<B>> eventPublisher;
public BPublisher(ApplicationEventPublisher<GenericEvent<B>> eventPublisher) {
this.eventPublisher = eventPublisher;
}
@Get
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
GenericEvent<B> event = new GenericEvent<>(new B());
eventPublisher.publishEvent(event);
return "fired B event";
}
}
@@ -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<SimpleEvent> eventPublisher;
public SimplePublisher(ApplicationEventPublisher<SimpleEvent> eventPublisher) {
this.eventPublisher = eventPublisher;
}
@Get
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
SimpleEvent event = new SimpleEvent();
eventPublisher.publishEvent(event);
return "fired simple event";
}
}
@@ -0,0 +1,3 @@
package com.miti99.test.type;
public class A {}
@@ -0,0 +1,3 @@
package com.miti99.test.type;
public class B {}