From d808266129148336cd2fe45035db5f52f3ff54ec Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Thu, 6 Jun 2013 09:39:01 +0200 Subject: [PATCH] Handle session and user destinated events --- .../de/thm/arsnova/events/ARSnovaEvent.java | 26 +++++++++++++++++++ .../de/thm/arsnova/events/package-info.java | 1 + .../services/UserSessionServiceImpl.java | 13 +++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/thm/arsnova/events/package-info.java diff --git a/src/main/java/de/thm/arsnova/events/ARSnovaEvent.java b/src/main/java/de/thm/arsnova/events/ARSnovaEvent.java index 70af1a5a..66886aa1 100644 --- a/src/main/java/de/thm/arsnova/events/ARSnovaEvent.java +++ b/src/main/java/de/thm/arsnova/events/ARSnovaEvent.java @@ -2,19 +2,37 @@ package de.thm.arsnova.events; import org.springframework.context.ApplicationEvent; +import de.thm.arsnova.entities.User; + public class ARSnovaEvent extends ApplicationEvent { private static final long serialVersionUID = 1L; private String sessionKey; + private User user; private String eventName; private Object data; + private Destination destination; + public enum Destination { + USER, + SESSION + }; + public ARSnovaEvent(Object source, String sKey, String eName, Object d) { super(source); this.data = d; this.eventName = eName; this.sessionKey = sKey; + this.destination = Destination.SESSION; + } + + public ARSnovaEvent(Object source, User recipient, String eName, Object d) { + super(source); + this.data = d; + this.eventName = eName; + this.user = recipient; + this.destination = Destination.USER; } public String getSessionKey() { @@ -28,4 +46,12 @@ public class ARSnovaEvent extends ApplicationEvent { public Object getData() { return data; } + + public User getRecipient() { + return user; + } + + public Destination getDestinationType() { + return destination; + } } diff --git a/src/main/java/de/thm/arsnova/events/package-info.java b/src/main/java/de/thm/arsnova/events/package-info.java new file mode 100644 index 00000000..ff9ff756 --- /dev/null +++ b/src/main/java/de/thm/arsnova/events/package-info.java @@ -0,0 +1 @@ +package de.thm.arsnova.events; diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java index 08fe6404..5264ea76 100644 --- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; import de.thm.arsnova.events.ARSnovaEvent; +import de.thm.arsnova.events.ARSnovaEvent.Destination; import de.thm.arsnova.socket.ARSnovaSocketIOServer; @Component @@ -56,11 +57,21 @@ public class UserSessionServiceImpl implements UserSessionService { @Override public void sendEventViaWebSocket(ARSnovaSocketIOServer server, ARSnovaEvent event) { if ( - hasConnectedWebSocket() + event.getDestinationType() == Destination.SESSION + && hasConnectedWebSocket() && event != null && session != null && event.getSessionKey().equals(session.getKeyword()) ) { server.sendToClient(getSocketId(), event); } + + if ( + event.getDestinationType() == Destination.USER + && hasConnectedWebSocket() + && event != null && user != null + && event.getRecipient().getUsername().equals(user.getUsername()) + ) { + server.sendToClient(getSocketId(), event); + } } } -- GitLab