From 518c03a4f86fb4c0882f5db4e549f9c4733cda09 Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Tue, 11 Jun 2013 08:43:07 +0200
Subject: [PATCH] Remove websocket sessionId from map on session destroy

---
 .../java/de/thm/arsnova/services/UserService.java  |  2 +-
 .../arsnova/services/UserSessionServiceImpl.java   | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index c76517ef5..d7e017981 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -258,7 +258,7 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 			File tmpDir = new File(System.getProperty("java.io.tmpdir"));
 			File store = new File(tmpDir, "arsnova.bin");
 			if (!store.exists()) {
-				if (! store.createNewFile()) {
+				if (!store.createNewFile()) {
 					LOGGER.info("Could not create store file");
 				}
 			}
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
index e10a7b6c6..fcbdcbc79 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
@@ -3,8 +3,11 @@ package de.thm.arsnova.services;
 import java.io.Serializable;
 import java.util.UUID;
 
+import javax.annotation.PreDestroy;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
 import org.springframework.stereotype.Component;
@@ -26,6 +29,17 @@ public class UserSessionServiceImpl implements UserSessionService, Serializable
 	private Session session;
 	private UUID socketId;
 
+	@Autowired
+	private IUserService userService;
+	
+	@PreDestroy
+	public void tearDown() {
+		if ( socketId != null ) {
+			LOGGER.info("Removing websocket session {}", socketId);
+			userService.removeUser2SocketId(socketId);
+		}
+	}
+	
 	@Override
 	public void setUser(User u) {
 		this.user = u;
-- 
GitLab