Skip to content

Commit 861e9ed

Browse files
jcanaconadsantajuancgalvis
authored
chore(next): add native support for Cloud Events (#115)
* Add CloudEvent specification to commands and events listeners and gateways * Exclude cloud events --------- Co-authored-by: Angel David Santa Giraldo <[email protected]> Co-authored-by: jcanacon <jcanacon> Co-authored-by: Juan C Galvis <[email protected]>
1 parent 7aa3dbd commit 861e9ed

File tree

84 files changed

+795
-863
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+795
-863
lines changed

acceptance/async-tests/src/test/java/org/reactivecommons/test/DynamicRegistryTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.reactivecommons.api.domain.DomainEvent;
55
import org.reactivecommons.api.domain.DomainEventBus;
66
import org.reactivecommons.async.api.DynamicRegistry;
7+
import org.reactivecommons.async.api.handlers.DomainEventHandler;
78
import org.reactivecommons.async.api.handlers.EventHandler;
89
import org.reactivecommons.async.impl.config.annotations.EnableDomainEventBus;
910
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
@@ -36,7 +37,7 @@ class DynamicRegistryTest {
3637
@Test
3738
void shouldReceiveResponse() {
3839
UnicastProcessor<String> result = UnicastProcessor.create();
39-
EventHandler<String> fn = message -> fromRunnable(() -> result.onNext(message.getData()));
40+
DomainEventHandler<String> fn = message -> fromRunnable(() -> result.onNext(message.getData()));
4041

4142
dynamicRegistry.listenEvent("test.event", fn, String.class).block();
4243
final Publisher<Void> emit = eventBus.emit(new DomainEvent<>("test.event", "42", "Hello"));

acceptance/async-tests/src/test/java/org/reactivecommons/test/SimpleDirectCommunicationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.reactivecommons.async.api.DirectAsyncGateway;
77
import org.reactivecommons.async.api.HandlerRegistry;
88
import org.reactivecommons.async.api.handlers.CommandHandler;
9+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
910
import org.reactivecommons.async.impl.config.annotations.EnableDirectAsyncGateway;
1011
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
1112
import org.springframework.beans.factory.annotation.Autowired;
@@ -81,7 +82,7 @@ public UnicastProcessor<Command<Long>> listener() {
8182
return UnicastProcessor.create();
8283
}
8384

84-
private CommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
85+
private DomainCommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
8586
return command -> {
8687
listener.onNext(command);
8788
return empty();

acceptance/async-tests/src/test/java/org/reactivecommons/test/SimpleEventNotificationTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.reactivecommons.api.domain.DomainEvent;
55
import org.reactivecommons.api.domain.DomainEventBus;
66
import org.reactivecommons.async.api.HandlerRegistry;
7+
import org.reactivecommons.async.api.handlers.DomainEventHandler;
78
import org.reactivecommons.async.api.handlers.EventHandler;
89
import org.reactivecommons.async.impl.config.annotations.EnableDomainEventBus;
910
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
@@ -65,7 +66,7 @@ public UnicastProcessor<DomainEvent<Long>> listener() {
6566
return UnicastProcessor.create();
6667
}
6768

68-
private EventHandler<Long> handle(UnicastProcessor<DomainEvent<Long>> listener) {
69+
private DomainEventHandler<Long> handle(UnicastProcessor<DomainEvent<Long>> listener) {
6970
return command -> {
7071
listener.onNext(command);
7172
return empty();

acceptance/async-tests/src/test/java/org/reactivecommons/test/perf/BlockingCommandHandlePerfTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.reactivecommons.async.api.DirectAsyncGateway;
66
import org.reactivecommons.async.api.HandlerRegistry;
77
import org.reactivecommons.async.api.handlers.CommandHandler;
8+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
89
import org.reactivecommons.async.impl.config.annotations.EnableDirectAsyncGateway;
910
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
1011
import org.springframework.beans.factory.annotation.Autowired;
@@ -89,7 +90,7 @@ public UnicastProcessor<Command<Long>> listener() {
8990
return UnicastProcessor.create();
9091
}
9192

92-
private CommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
93+
private DomainCommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
9394
return command -> {
9495
return fromRunnable(() -> {
9596
// out.println("Received at: " + System.currentTimeMillis()/1000);

acceptance/async-tests/src/test/java/org/reactivecommons/test/perf/ParallelOnBlockingInSubscriptionTimeTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.reactivecommons.async.api.DirectAsyncGateway;
77
import org.reactivecommons.async.api.HandlerRegistry;
88
import org.reactivecommons.async.api.handlers.CommandHandler;
9+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
910
import org.reactivecommons.async.impl.config.annotations.EnableDirectAsyncGateway;
1011
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
1112
import org.springframework.beans.factory.annotation.Autowired;
@@ -91,7 +92,7 @@ public UnicastProcessor<Command<Long>> listener() {
9192
return UnicastProcessor.create();
9293
}
9394

94-
private CommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
95+
private DomainCommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
9596
return command -> {
9697
// out.println("Received at: " + System.currentTimeMillis()/1000);
9798
try {

acceptance/async-tests/src/test/java/org/reactivecommons/test/perf/SimpleCommandHandlePerfTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.reactivecommons.async.api.DirectAsyncGateway;
77
import org.reactivecommons.async.api.HandlerRegistry;
88
import org.reactivecommons.async.api.handlers.CommandHandler;
9+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
910
import org.reactivecommons.async.impl.config.annotations.EnableDirectAsyncGateway;
1011
import org.reactivecommons.async.impl.config.annotations.EnableMessageListeners;
1112
import org.springframework.beans.factory.annotation.Autowired;
@@ -88,7 +89,7 @@ public UnicastProcessor<Command<Long>> listener() {
8889
return UnicastProcessor.create();
8990
}
9091

91-
private CommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
92+
private DomainCommandHandler<Long> handle(UnicastProcessor<Command<Long>> listener) {
9293
return command -> {
9394
out.println("Received at: " + System.currentTimeMillis() / 1000);
9495
out.println("Received in: " + Thread.currentThread().getName());
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.reactivecommons.async.api;
22

3-
import org.reactivecommons.async.api.handlers.CommandHandler;
3+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
44

5-
public interface DefaultCommandHandler<T> extends CommandHandler<T> {
5+
public interface DefaultCommandHandler<T> extends DomainCommandHandler<T> {
66
}

async/async-commons-api/src/main/java/org/reactivecommons/async/api/DirectAsyncGateway.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ public interface DirectAsyncGateway {
1717

1818
Mono<Void> sendCommand(CloudEvent command, String targetName);
1919

20+
Mono<Void> sendCommand(CloudEvent command, String targetName, long delayMillis);
21+
2022
Mono<Void> sendCommand(CloudEvent command, String targetName, String domain);
2123

24+
Mono<Void> sendCommand(CloudEvent command, String targetName, long delayMillis, String domain);
25+
2226
<T, R> Mono<R> requestReply(AsyncQuery<T> query, String targetName, Class<R> type);
2327

2428
<T, R> Mono<R> requestReply(AsyncQuery<T> query, String targetName, Class<R> type, String domain);

async/async-commons-api/src/main/java/org/reactivecommons/async/api/DynamicRegistry.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.reactivecommons.async.api;
22

3+
import org.reactivecommons.async.api.handlers.DomainEventHandler;
34
import org.reactivecommons.async.api.handlers.EventHandler;
45
import org.reactivecommons.async.api.handlers.QueryHandler;
56
import org.reactivecommons.async.api.handlers.QueryHandlerDelegate;
@@ -8,7 +9,7 @@
89
public interface DynamicRegistry {
910

1011
@Deprecated
11-
<T> Mono<Void> listenEvent(String eventName, EventHandler<T> fn, Class<T> eventClass);
12+
<T> Mono<Void> listenEvent(String eventName, DomainEventHandler<T> fn, Class<T> eventClass);
1213

1314
<T, R> void serveQuery(String resource, QueryHandler<T, R> handler, Class<R> queryClass);
1415

async/async-commons-api/src/main/java/org/reactivecommons/async/api/HandlerRegistry.java

Lines changed: 71 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package org.reactivecommons.async.api;
22

33
import io.cloudevents.CloudEvent;
4-
import io.cloudevents.core.provider.EventFormatProvider;
5-
import io.cloudevents.jackson.JsonFormat;
64
import lombok.AccessLevel;
75
import lombok.Getter;
86
import lombok.NoArgsConstructor;
9-
import org.reactivecommons.async.api.handlers.CommandHandler;
10-
import org.reactivecommons.async.api.handlers.EventHandler;
7+
import org.reactivecommons.async.api.handlers.CloudCommandHandler;
8+
import org.reactivecommons.async.api.handlers.CloudEventHandler;
9+
import org.reactivecommons.async.api.handlers.DomainCommandHandler;
10+
import org.reactivecommons.async.api.handlers.DomainEventHandler;
1111
import org.reactivecommons.async.api.handlers.QueryHandler;
1212
import org.reactivecommons.async.api.handlers.QueryHandlerDelegate;
1313
import org.reactivecommons.async.api.handlers.registered.RegisteredCommandHandler;
@@ -24,11 +24,11 @@
2424
@NoArgsConstructor(access = AccessLevel.PACKAGE)
2525
public class HandlerRegistry {
2626
public static final String DEFAULT_DOMAIN = "app";
27-
private final Map<String, List<RegisteredEventListener<?>>> domainEventListeners = new ConcurrentHashMap<>();
28-
private final List<RegisteredEventListener<?>> dynamicEventHandlers = new CopyOnWriteArrayList<>();
29-
private final List<RegisteredEventListener<?>> eventNotificationListener = new CopyOnWriteArrayList<>();
27+
private final Map<String, List<RegisteredEventListener<?, ?>>> domainEventListeners = new ConcurrentHashMap<>();
28+
private final List<RegisteredEventListener<?, ?>> dynamicEventHandlers = new CopyOnWriteArrayList<>();
29+
private final List<RegisteredEventListener<?, ?>> eventNotificationListener = new CopyOnWriteArrayList<>();
3030
private final List<RegisteredQueryHandler<?, ?>> handlers = new CopyOnWriteArrayList<>();
31-
private final List<RegisteredCommandHandler<?>> commandHandlers = new CopyOnWriteArrayList<>();
31+
private final List<RegisteredCommandHandler<?, ?>> commandHandlers = new CopyOnWriteArrayList<>();
3232

3333

3434
public static HandlerRegistry register() {
@@ -37,75 +37,103 @@ public static HandlerRegistry register() {
3737
return instance;
3838
}
3939

40-
public <T> HandlerRegistry listenDomainEvent(String domain, String eventName, EventHandler<T> handler, Class<T> eventClass) {
40+
public <T> HandlerRegistry listenDomainEvent(String domain, String eventName, DomainEventHandler<T> handler, Class<T> eventClass) {
4141
domainEventListeners.computeIfAbsent(domain, ignored -> new CopyOnWriteArrayList<>())
42-
.add(new RegisteredEventListener<>(eventName, handler, eventClass));
42+
.add(new RegisteredEventListener<>(eventName, handler, eventClass));
4343
return this;
4444
}
4545

46-
public <T> HandlerRegistry listenEvent(String eventName, EventHandler<T> handler, Class<T> eventClass) {
46+
public HandlerRegistry listenDomainCloudEvent(String domain, String eventName, CloudEventHandler handler) {
47+
domainEventListeners.computeIfAbsent(domain, ignored -> new CopyOnWriteArrayList<>())
48+
.add(new RegisteredEventListener<>(eventName, handler, CloudEvent.class));
49+
return this;
50+
}
51+
52+
public <T> HandlerRegistry listenEvent(String eventName, DomainEventHandler<T> handler, Class<T> eventClass) {
4753
domainEventListeners.computeIfAbsent(DEFAULT_DOMAIN, ignored -> new CopyOnWriteArrayList<>())
48-
.add(new RegisteredEventListener<>(eventName, handler, eventClass));
54+
.add(new RegisteredEventListener<>(eventName, handler, eventClass));
4955
return this;
5056
}
5157

52-
public <T> HandlerRegistry listenEvent(String eventName, EventHandler<T> handler) {
53-
return listenEvent(eventName, handler, inferGenericParameterType(handler));
58+
public HandlerRegistry listenCloudEvent(String eventName, CloudEventHandler handler) {
59+
domainEventListeners.computeIfAbsent(DEFAULT_DOMAIN, ignored -> new CopyOnWriteArrayList<>())
60+
.add(new RegisteredEventListener<>(eventName, handler, CloudEvent.class));
61+
return this;
5462
}
5563

56-
public <T> HandlerRegistry listenNotificationEvent(String eventName, EventHandler<T> handler, Class<T> eventClass) {
64+
public <T> HandlerRegistry listenNotificationEvent(String eventName, DomainEventHandler<T> handler, Class<T> eventClass) {
5765
eventNotificationListener.add(new RegisteredEventListener<>(eventName, handler, eventClass));
5866
return this;
5967
}
6068

61-
public <T> HandlerRegistry handleDynamicEvents(String eventNamePattern, EventHandler<T> handler, Class<T> eventClass) {
69+
public HandlerRegistry listenNotificationCloudEvent(String eventName, CloudEventHandler handler) {
70+
eventNotificationListener.add(new RegisteredEventListener<>(eventName, handler, CloudEvent.class));
71+
return this;
72+
}
73+
74+
public <T> HandlerRegistry handleDynamicEvents(String eventNamePattern, DomainEventHandler<T> handler, Class<T> eventClass) {
6275
dynamicEventHandlers.add(new RegisteredEventListener<>(eventNamePattern, handler, eventClass));
6376
return this;
6477
}
6578

66-
public <T> HandlerRegistry handleDynamicEvents(String eventNamePattern, EventHandler<T> handler) {
67-
return handleDynamicEvents(eventNamePattern, handler, inferGenericParameterType(handler));
79+
public HandlerRegistry handleDynamicCloudEvents(String eventNamePattern, CloudEventHandler handler) {
80+
dynamicEventHandlers.add(new RegisteredEventListener<>(eventNamePattern, handler, CloudEvent.class));
81+
return this;
6882
}
6983

70-
public <T> HandlerRegistry handleCommand(String commandName, CommandHandler<T> fn, Class<T> commandClass) {
84+
public <T> HandlerRegistry handleCommand(String commandName, DomainCommandHandler<T> fn, Class<T> commandClass) {
7185
commandHandlers.add(new RegisteredCommandHandler<>(commandName, fn, commandClass));
7286
return this;
7387
}
7488

75-
public <T> HandlerRegistry handleCommand(String commandName, CommandHandler<T> fn) {
76-
commandHandlers.add(new RegisteredCommandHandler<>(commandName, fn, inferGenericParameterType(fn)));
89+
public HandlerRegistry handleCloudEventCommand(String commandName, CloudCommandHandler handler) {
90+
commandHandlers.add(new RegisteredCommandHandler<>(commandName, handler, CloudEvent.class));
7791
return this;
7892
}
7993

80-
public <T, R> HandlerRegistry serveQuery(String resource, QueryHandler<T, R> handler) {
81-
return serveQuery(resource, handler, inferGenericParameterType(handler));
94+
public <T, R> HandlerRegistry serveQuery(String resource, QueryHandler<T, R> handler, Class<R> queryClass) {
95+
handlers.add(new RegisteredQueryHandler<>(resource, (ignored, message) -> handler.handle(message), queryClass));
96+
return this;
8297
}
8398

84-
public <T, R> HandlerRegistry serveQuery(String resource, QueryHandler<T, R> handler, Class<R> queryClass) {
85-
if(queryClass == CloudEvent.class){
86-
handlers.add(new RegisteredQueryHandler<>(resource, (ignored, message) ->
87-
{
88-
CloudEvent query = EventFormatProvider
89-
.getInstance()
90-
.resolveFormat(JsonFormat.CONTENT_TYPE)
91-
.deserialize(message);
99+
public <R> HandlerRegistry serveQuery(String resource, QueryHandlerDelegate<Void, R> handler, Class<R> queryClass) {
100+
handlers.add(new RegisteredQueryHandler<>(resource, handler, queryClass));
101+
return this;
102+
}
92103

93-
return handler.handle((R) query);
104+
public <R> HandlerRegistry serveCloudEventQuery(String resource, QueryHandler<R, CloudEvent> handler) {
105+
handlers.add(new RegisteredQueryHandler<>(resource, (ignored, message) -> handler.handle(message), CloudEvent.class));
106+
return this;
107+
}
94108

95-
} , byte[].class));
96-
}
97-
else{
98-
handlers.add(new RegisteredQueryHandler<>(resource, (ignored, message) -> handler.handle(message), queryClass));
99-
}
109+
public <R> HandlerRegistry serveCloudEventQuery(String resource, QueryHandlerDelegate<Void, CloudEvent> handler) {
110+
handlers.add(new RegisteredQueryHandler<>(resource, handler, CloudEvent.class));
100111
return this;
101112
}
102113

103-
public <R> HandlerRegistry serveQuery(String resource, QueryHandlerDelegate<Void, R> handler, Class<R> queryClass) {
104-
handlers.add(new RegisteredQueryHandler<>(resource, handler, queryClass));
114+
115+
@Deprecated(forRemoval = true)
116+
public <T> HandlerRegistry listenEvent(String eventName, DomainEventHandler<T> handler) {
117+
return listenEvent(eventName, handler, inferGenericParameterType(handler));
118+
}
119+
120+
@Deprecated(forRemoval = true)
121+
public <T> HandlerRegistry handleDynamicEvents(String eventNamePattern, DomainEventHandler<T> handler) {
122+
return handleDynamicEvents(eventNamePattern, handler, inferGenericParameterType(handler));
123+
}
124+
125+
@Deprecated(forRemoval = true)
126+
public <T> HandlerRegistry handleCommand(String commandName, DomainCommandHandler<T> handler) {
127+
commandHandlers.add(new RegisteredCommandHandler<>(commandName, handler, inferGenericParameterType(handler)));
105128
return this;
106129
}
107130

131+
@Deprecated(forRemoval = true)
132+
public <T, R> HandlerRegistry serveQuery(String resource, QueryHandler<T, R> handler) {
133+
return serveQuery(resource, handler, inferGenericParameterType(handler));
134+
}
108135

136+
@Deprecated(forRemoval = true)
109137
@SuppressWarnings("unchecked")
110138
private <T, R> Class<R> inferGenericParameterType(QueryHandler<T, R> handler) {
111139
try {
@@ -117,8 +145,9 @@ private <T, R> Class<R> inferGenericParameterType(QueryHandler<T, R> handler) {
117145
}
118146
}
119147

148+
@Deprecated(forRemoval = true)
120149
@SuppressWarnings("unchecked")
121-
private <T> Class<T> inferGenericParameterType(CommandHandler<T> handler) {
150+
private <T> Class<T> inferGenericParameterType(DomainCommandHandler<T> handler) {
122151
try {
123152
ParameterizedType genericSuperclass = (ParameterizedType) handler.getClass().getGenericInterfaces()[0];
124153
return (Class<T>) genericSuperclass.getActualTypeArguments()[0];
@@ -128,7 +157,8 @@ private <T> Class<T> inferGenericParameterType(CommandHandler<T> handler) {
128157
}
129158
}
130159

131-
private <T> Class<T> inferGenericParameterType(EventHandler<T> handler) {
160+
@Deprecated(forRemoval = true)
161+
private <T> Class<T> inferGenericParameterType(DomainEventHandler<T> handler) {
132162
try {
133163
ParameterizedType genericSuperclass = (ParameterizedType) handler.getClass().getGenericInterfaces()[0];
134164
return (Class<T>) genericSuperclass.getActualTypeArguments()[0];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.reactivecommons.async.api.handlers;
2+
3+
import io.cloudevents.CloudEvent;
4+
5+
public interface CloudCommandHandler extends CommandHandler<CloudEvent> {
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.reactivecommons.async.api.handlers;
2+
3+
import io.cloudevents.CloudEvent;
4+
5+
public interface CloudEventHandler extends EventHandler<CloudEvent> {
6+
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
package org.reactivecommons.async.api.handlers;
22

3-
import org.reactivecommons.api.domain.Command;
4-
5-
public interface CommandHandler<T> extends GenericHandler<Void, Command<T>> {
3+
public interface CommandHandler<T> extends GenericHandler<Void, T> {
64
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.reactivecommons.async.api.handlers;
2+
3+
import org.reactivecommons.api.domain.Command;
4+
5+
public interface DomainCommandHandler<T> extends CommandHandler<Command<T>> {
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.reactivecommons.async.api.handlers;
2+
3+
import org.reactivecommons.api.domain.DomainEvent;
4+
5+
public interface DomainEventHandler<T> extends EventHandler<DomainEvent<T>>{
6+
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
package org.reactivecommons.async.api.handlers;
22

3-
import org.reactivecommons.api.domain.DomainEvent;
4-
5-
public interface EventHandler<T> extends GenericHandler<Void, DomainEvent<T>> {
3+
public interface EventHandler<T> extends GenericHandler<Void, T> {
64
}

async/async-commons-api/src/main/java/org/reactivecommons/async/api/handlers/registered/RegisteredCommandHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
@RequiredArgsConstructor
88
@Getter
9-
public class RegisteredCommandHandler<T> {
9+
public class RegisteredCommandHandler<T,D> {
1010
private final String path;
11-
private final CommandHandler<T> handler;
11+
private final CommandHandler<D> handler;
1212
private final Class<T> inputClass;
1313
}

async/async-commons-api/src/main/java/org/reactivecommons/async/api/handlers/registered/RegisteredEventListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
@RequiredArgsConstructor
88
@Getter
9-
public class RegisteredEventListener<T> {
9+
public class RegisteredEventListener<T, D> {
1010
private final String path;
11-
private final EventHandler<T> handler;
11+
private final EventHandler<D> handler;
1212
private final Class<T> inputClass;
1313
}

0 commit comments

Comments
 (0)