Skip to content

Commit 0c809da

Browse files
authored
AGNT-598: support GENERICSYSTEMEVENTs in listeners (#812)
1 parent ab6c666 commit 0c809da

5 files changed

Lines changed: 31 additions & 1 deletion

File tree

symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/datafeed/RealTimeEventListener.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,15 @@ default void onMessageSuppressed(V4Initiator initiator, V4MessageSuppressed even
208208
default void onSymphonyElementsAction(V4Initiator initiator, V4SymphonyElementsAction event) throws EventException {
209209
}
210210

211+
/**
212+
* Called when a GENERICSYSTEMEVENT event is received.
213+
*
214+
* @param initiator Event initiator.
215+
* @param event Generic system event payload.
216+
* @throws EventException Throw this exception if this method should fail the current events processing
217+
* and re-queue the events in datafeed. Other exceptions will be caught silently.
218+
*/
219+
default void onGenericSystemEvent(V4Initiator initiator, V4GenericSystemEvent event) throws EventException {
220+
}
221+
211222
}

symphony-bdk-core/src/main/java/com/symphony/bdk/core/service/datafeed/impl/RealTimeEventType.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,12 @@ enum RealTimeEventType {
8080
}),
8181
CONNECTIONREQUESTED((listener, event) -> {
8282
listener.onConnectionRequested(event.getInitiator(), proxy(event.getPayload().getConnectionRequested(), event));
83+
}),
84+
GENERICSYSTEMEVENT((listener, event) -> {
85+
listener.onGenericSystemEvent(event.getInitiator(), proxy(event.getPayload().getGenericSystemEvent(), event));
8386
});
8487

88+
8589
private final BiConsumer<RealTimeEventListener, V4Event> execConsumer;
8690

8791
RealTimeEventType(BiConsumer<RealTimeEventListener, V4Event> consumer) {

symphony-bdk-core/src/test/java/com/symphony/bdk/core/service/datafeed/impl/DatafeedLoopV1Test.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.symphony.bdk.gen.api.model.V4ConnectionAccepted;
1919
import com.symphony.bdk.gen.api.model.V4ConnectionRequested;
2020
import com.symphony.bdk.gen.api.model.V4Event;
21+
import com.symphony.bdk.gen.api.model.V4GenericSystemEvent;
2122
import com.symphony.bdk.gen.api.model.V4Initiator;
2223
import com.symphony.bdk.gen.api.model.V4InstantMessageCreated;
2324
import com.symphony.bdk.gen.api.model.V4MessageSent;
@@ -469,7 +470,8 @@ void handleV4EventTest() {
469470
.roomMemberPromotedToOwner(new V4RoomMemberPromotedToOwner())
470471
.userLeftRoom(new V4UserLeftRoom())
471472
.userJoinedRoom(new V4UserJoinedRoom())
472-
.userRequestedToJoinRoom(new V4UserRequestedToJoinRoom());
473+
.userRequestedToJoinRoom(new V4UserRequestedToJoinRoom())
474+
.genericSystemEvent(new V4GenericSystemEvent());
473475

474476
final V4Initiator initiator = new V4Initiator().user(new V4User().username("username").userId(123456789L));
475477
for (RealTimeEventType type : types) {
@@ -516,5 +518,6 @@ public void onMessageSent(V4Initiator initiator, V4MessageSent event) {
516518
verify(spiedListener).onUserLeftRoom(eq(initiator), any(V4UserLeftRoom.class));
517519
verify(spiedListener).onUserJoinedRoom(eq(initiator), any(V4UserJoinedRoom.class));
518520
verify(spiedListener).onUserRequestedToJoinRoom(eq(initiator), any(V4UserRequestedToJoinRoom.class));
521+
verify(spiedListener).onGenericSystemEvent(eq(initiator), any(V4GenericSystemEvent.class));
519522
}
520523
}

symphony-bdk-spring/symphony-bdk-core-spring-boot-starter/src/main/java/com/symphony/bdk/spring/events/RealTimeEventsDispatcher.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.symphony.bdk.core.service.datafeed.RealTimeEventListener;
55
import com.symphony.bdk.gen.api.model.V4ConnectionAccepted;
66
import com.symphony.bdk.gen.api.model.V4ConnectionRequested;
7+
import com.symphony.bdk.gen.api.model.V4GenericSystemEvent;
78
import com.symphony.bdk.gen.api.model.V4Initiator;
89
import com.symphony.bdk.gen.api.model.V4InstantMessageCreated;
910
import com.symphony.bdk.gen.api.model.V4MessageSent;
@@ -150,4 +151,10 @@ public void onMessageSuppressed(V4Initiator initiator, V4MessageSuppressed event
150151
public void onSymphonyElementsAction(V4Initiator initiator, V4SymphonyElementsAction event) {
151152
this.publisher.publishEvent(new RealTimeEvent<>(initiator, event));
152153
}
154+
155+
@Override
156+
public void onGenericSystemEvent(V4Initiator initiator, V4GenericSystemEvent event) {
157+
this.publisher.publishEvent(new RealTimeEvent<>(initiator, event));
158+
}
159+
153160
}

symphony-bdk-test/symphony-bdk-test-jupiter/src/main/java/com/symphony/bdk/test/SymphonyBdkTestUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ public enum V4EventType {
202202
assert event.getPayload() != null;
203203
assert event.getPayload().getConnectionRequested() != null : "ConnectionRequested event must not null";
204204
listener.onConnectionRequested(event.getInitiator(), proxy(event.getPayload().getConnectionRequested(), event));
205+
}),
206+
GENERICSYSTEMEVENT((listener, event) -> {
207+
assert event.getPayload() != null;
208+
assert event.getPayload().getGenericSystemEvent() != null : "GenericSystemEvent event must not null";
209+
listener.onGenericSystemEvent(event.getInitiator(), proxy(event.getPayload().getGenericSystemEvent(), event));
205210
});
206211

207212
private final BiConsumer<RealTimeEventListener, V4Event> execConsumer;

0 commit comments

Comments
 (0)