@@ -9,6 +9,15 @@ public class ItemEventBroadcaster {
99
1010 private final Set <WsContext > clients = ConcurrentHashMap .newKeySet ();
1111
12+ private enum EventType {
13+ ITEM_UPDATED ,
14+ ITEMS_CHANGED ,
15+ USER_UPDATED ,
16+ USER_BANNED ,
17+ USER_DELETED ,
18+ USERS_CHANGED
19+ }
20+
1221 public void register (Javalin app ) {
1322 app .ws (
1423 "/api/events" ,
@@ -20,30 +29,41 @@ public void register(Javalin app) {
2029 }
2130
2231 public void broadcastItemUpdated (String itemId ) {
23- broadcast ("{ \" type \" : \" ITEM_UPDATED\" , \ " itemId\" : \" " + escapeJson ( itemId ) + " \" }" );
32+ broadcast (createEvent ( EventType . ITEM_UPDATED , "itemId" , itemId ));
2433 }
2534
2635 public void broadcastItemsChanged () {
27- broadcast ("{ \" type \" : \" ITEMS_CHANGED\" }" );
36+ broadcast (createEvent ( EventType . ITEMS_CHANGED ) );
2837 }
2938
3039 public void broadcastUserUpdated (String userId ) {
31- broadcast ("{ \" type \" : \" USER_UPDATED\" , \ " userId\" : \" " + escapeJson ( userId ) + " \" }" );
40+ broadcast (createEvent ( EventType . USER_UPDATED , "userId" , userId ));
3241 broadcastUsersChanged ();
3342 }
3443
3544 public void broadcastUserBanned (String userId ) {
36- broadcast ("{ \" type \" : \" USER_BANNED\" , \ " userId\" : \" " + escapeJson ( userId ) + " \" }" );
45+ broadcast (createEvent ( EventType . USER_BANNED , "userId" , userId ));
3746 broadcastUsersChanged ();
3847 }
3948
4049 public void broadcastUserDeleted (String userId ) {
41- broadcast ("{ \" type \" : \" USER_DELETED\" , \ " userId\" : \" " + escapeJson ( userId ) + " \" }" );
50+ broadcast (createEvent ( EventType . USER_DELETED , "userId" , userId ));
4251 broadcastUsersChanged ();
4352 }
4453
4554 public void broadcastUsersChanged () {
46- broadcast ("{\" type\" :\" USERS_CHANGED\" }" );
55+ broadcast (createEvent (EventType .USERS_CHANGED ));
56+ }
57+
58+ private String createEvent (EventType type ) {
59+ return "{\" type\" :\" " + type .name () + "\" }" ;
60+ }
61+
62+ private String createEvent (EventType type , String key , String value ) {
63+ return "{"
64+ + "\" type\" :\" " + type .name () + "\" ,"
65+ + "\" " + escapeJson (key ) + "\" :\" " + escapeJson (value ) + "\" "
66+ + "}" ;
4767 }
4868
4969 private void broadcast (String message ) {
@@ -59,4 +79,4 @@ private void broadcast(String message) {
5979 private String escapeJson (String value ) {
6080 return value == null ? "" : value .replace ("\\ " , "\\ \\ " ).replace ("\" " , "\\ \" " );
6181 }
62- }
82+ }
0 commit comments