Skip to content

Commit bd8bfd0

Browse files
committed
Add distinct OnJoin/OnLeave/OnUpdate commands to match TypeScript SSE Client
1 parent 711a77b commit bd8bfd0

File tree

8 files changed

+114
-38
lines changed

8 files changed

+114
-38
lines changed

src/AndroidClient/app/app.iml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,6 @@
6767
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6868
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6969
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
77-
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7870
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
7971
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
8072
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -83,6 +75,14 @@
8375
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
8476
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8577
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
85+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8686
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8787
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8888
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package net.servicestack.client.sse;
2+
3+
public interface ServerEventJoinCallback {
4+
void execute(ServerEventJoin e);
5+
}
6+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package net.servicestack.client.sse;
2+
3+
public interface ServerEventLeaveCallback {
4+
void execute(ServerEventLeave e);
5+
}
6+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package net.servicestack.client.sse;
2+
3+
public interface ServerEventUpdateCallback {
4+
void execute(ServerEventUpdate e);
5+
}

src/AndroidClient/client/src/main/java/net/servicestack/client/sse/ServerEventsClient.java

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public class ServerEventsClient implements Closeable {
5252

5353
protected ServerEventConnectCallback onConnect;
5454
protected ServerEventMessageCallback onMessage;
55+
protected ServerEventJoinCallback onJoin;
56+
protected ServerEventLeaveCallback onLeave;
57+
protected ServerEventUpdateCallback onUpdate;
5558
protected ServerEventMessageCallback onCommand;
5659
protected ServerEventMessageCallback onHeartbeat;
5760
protected ExceptionCallback onException;
@@ -156,6 +159,21 @@ public ServerEventsClient setOnMessage(ServerEventMessageCallback onMessage) {
156159
return this;
157160
}
158161

162+
public ServerEventsClient setOnJoin(ServerEventJoinCallback onJoin) {
163+
this.onJoin = onJoin;
164+
return this;
165+
}
166+
167+
public ServerEventsClient setOnLeave(ServerEventLeaveCallback onLeave) {
168+
this.onLeave = onLeave;
169+
return this;
170+
}
171+
172+
public ServerEventsClient setOnUpdate(ServerEventUpdateCallback onUpdate) {
173+
this.onUpdate = onUpdate;
174+
return this;
175+
}
176+
159177
public ServerEventsClient setOnCommand(ServerEventMessageCallback onCommand) {
160178
this.onCommand = onCommand;
161179
return this;
@@ -377,6 +395,42 @@ private synchronized void internalStop() {
377395
stopBackgroundThread();
378396
}
379397

398+
private void onJoinReceived(ServerEventJoin e) {
399+
if (Log.isDebugEnabled())
400+
Log.d("[SSE-CLIENT] OnJoinReceived: ("
401+
+ e.getClass().getSimpleName() + ") #"
402+
+ e.getEventId() + " on #"
403+
+ getConnectionDisplayName() + " ("
404+
+ Utils.join(channels, ",") + ")");
405+
406+
if (onJoin != null)
407+
onJoin.execute(e);
408+
}
409+
410+
private void onLeaveReceived(ServerEventLeave e) {
411+
if (Log.isDebugEnabled())
412+
Log.d("[SSE-CLIENT] OnLeaveReceived: ("
413+
+ e.getClass().getSimpleName() + ") #"
414+
+ e.getEventId() + " on #"
415+
+ getConnectionDisplayName() + " ("
416+
+ Utils.join(channels, ",") + ")");
417+
418+
if (onLeave != null)
419+
onLeave.execute(e);
420+
}
421+
422+
private void onUpdateReceived(ServerEventUpdate e) {
423+
if (Log.isDebugEnabled())
424+
Log.d("[SSE-CLIENT] OnUpdateReceived: ("
425+
+ e.getClass().getSimpleName() + ") #"
426+
+ e.getEventId() + " on #"
427+
+ getConnectionDisplayName() + " ("
428+
+ Utils.join(channels, ",") + ")");
429+
430+
if (onUpdate != null)
431+
onUpdate.execute(e);
432+
}
433+
380434
private void onCommandReceived(ServerEventMessage e) {
381435
if (Log.isDebugEnabled())
382436
Log.d("[SSE-CLIENT] OnCommandReceived: ("
@@ -570,15 +624,24 @@ protected void processOnConnectMessage(ServerEventMessage e) {
570624
}
571625

572626
protected void processOnJoinMessage(ServerEventMessage e) {
573-
onCommandReceived(new ServerEventJoin().populate(e, JsonUtils.toJsonObject(e.getJson())));
627+
ServerEventJoin m = new ServerEventJoin();
628+
m.populate(e, JsonUtils.toJsonObject(e.getJson()));
629+
onJoinReceived(m);
630+
onCommandReceived(m);
574631
}
575632

576633
protected void processOnLeaveMessage(ServerEventMessage e) {
577-
onCommandReceived(new ServerEventLeave().populate(e, JsonUtils.toJsonObject(e.getJson())));
634+
ServerEventLeave m = new ServerEventLeave();
635+
m.populate(e, JsonUtils.toJsonObject(e.getJson()));
636+
onLeaveReceived(m);
637+
onCommandReceived(m);
578638
}
579639

580640
protected void processOnUpdateMessage(ServerEventMessage e) {
581-
onCommandReceived(new ServerEventUpdate().populate(e, JsonUtils.toJsonObject(e.getJson())));
641+
ServerEventUpdate m = new ServerEventUpdate();
642+
m.populate(e, JsonUtils.toJsonObject(e.getJson()));
643+
onUpdateReceived(m);
644+
onCommandReceived(m);
582645
}
583646

584647
protected void processOnHeartbeatMessage(ServerEventMessage e) {

src/AndroidClient/client/src/test/java/net/servicestack/client/ServerEventClientTests.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,15 @@ public void test_Does_fire_onJoin_events_for_multiple_Channels() throws Exceptio
8383
try (ServerEventsClient client = createServerEventsClient("http://chat.servicestack.net", channels))
8484
{
8585
client
86-
.setOnCommand(e -> {
87-
System.out.print("onCommand: " + e);
86+
.setOnJoin(e -> {
87+
System.out.print("onJoin: " + e);
8888

89-
if (e instanceof ServerEventJoin) {
90-
ServerEventJoin joinMsg = (ServerEventJoin)e;
91-
joinMsgs.add(joinMsg);
89+
joinMsgs.add(e);
90+
assertEquals(channels[joinMsgs.size() - 1], e.getChannel());
91+
assertEquals(client.getConnectionInfo().getDisplayName(), e.getDisplayName());
9292

93-
assertEquals(channels[joinMsgs.size() - 1], joinMsg.getChannel());
94-
assertEquals(client.getConnectionInfo().getDisplayName(), joinMsg.getDisplayName());
95-
96-
if (joinMsgs.size() == channels.length)
97-
signal.countDown();
98-
}
93+
if (joinMsgs.size() == channels.length)
94+
signal.countDown();
9995
})
10096
.start();
10197

src/AndroidClient/kotlin/kotlin.iml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,6 @@
6868
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6969
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
7070
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
77-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
78-
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7971
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
8072
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
8173
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -84,6 +76,14 @@
8476
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
8577
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8678
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
85+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
86+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8787
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
8888
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8989
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />

src/AndroidClient/techstackskotlin/techstackskotlin.iml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,6 @@
6767
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
6868
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
6969
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
70-
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
71-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
72-
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
73-
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
74-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
75-
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
76-
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
77-
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
7870
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
7971
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
8072
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
@@ -83,6 +75,14 @@
8375
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
8476
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
8577
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
78+
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
79+
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
80+
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
81+
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
82+
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
83+
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
84+
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
85+
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8686
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
8787
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
8888
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />

0 commit comments

Comments
 (0)