diff --git a/src/main/java/de/thm/arsnova/controller/CourseController.java b/src/main/java/de/thm/arsnova/controller/CourseController.java index b6178e368c3c1ae0a2c0ce3cc2909c6ca5a92262..ff424e7ae51588edf39a38ea8cf575e1208665e9 100644 --- a/src/main/java/de/thm/arsnova/controller/CourseController.java +++ b/src/main/java/de/thm/arsnova/controller/CourseController.java @@ -43,8 +43,7 @@ import de.thm.arsnova.services.IUserService; @RestController public class CourseController extends AbstractController { - public static final Logger LOGGER = LoggerFactory - .getLogger(CourseController.class); + public static final Logger LOGGER = LoggerFactory.getLogger(CourseController.class); @Autowired(required = false) private ConnectorClient connectorClient; diff --git a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java index f6c9e95a191f82053457dbdcba324e6e1431a832..abd82427569fbc6fde2559989f9785c8bc79502b 100644 --- a/src/main/java/de/thm/arsnova/controller/FoodVoteController.java +++ b/src/main/java/de/thm/arsnova/controller/FoodVoteController.java @@ -39,8 +39,7 @@ import de.thm.arsnova.services.IFoodService; @RequestMapping("/canteen/menu/vote") public class FoodVoteController extends AbstractController { - public static final Logger LOGGER = LoggerFactory - .getLogger(FoodVoteController.class); + public static final Logger LOGGER = LoggerFactory.getLogger(FoodVoteController.class); @Autowired private IFoodService foodService; @@ -50,7 +49,7 @@ public class FoodVoteController extends AbstractController { @RequestBody final Object menu, final HttpServletResponse response ) { - String menustring = JSONObject.fromObject(menu).getString("menu"); + final String menustring = JSONObject.fromObject(menu).getString("menu"); foodService.vote(menustring); } diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 6552d397f2489f9e023deeb262edf3c3f50773b6..cdf7a7f7557ca6d568b11c604100472d3a65a3cb 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -39,9 +39,7 @@ import org.springframework.web.bind.annotation.RestController; import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.services.ISessionService; -import de.thm.arsnova.services.IUserService; import de.thm.arsnova.services.SessionService.SessionNameComperator; import de.thm.arsnova.services.SessionService.SessionShortNameComperator; import de.thm.arsnova.web.DeprecatedApi; @@ -55,9 +53,6 @@ public class SessionController extends AbstractController { @Autowired private ISessionService sessionService; - @Autowired - private IUserService userService; - @RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET) public final Session joinSession(@PathVariable final String sessionkey) { return sessionService.joinSession(sessionkey); @@ -65,22 +60,20 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE) public final void deleteSession(@PathVariable final String sessionkey) { - final User user = userService.getCurrentUser(); - sessionService.deleteSession(sessionkey, user); + sessionService.deleteSession(sessionkey); } @DeprecatedApi @RequestMapping(value = "/{sessionkey}/online", method = RequestMethod.POST) @ResponseStatus(HttpStatus.CREATED) public final LoggedIn registerAsOnlineUser(@PathVariable final String sessionkey) { - final User user = userService.getCurrentUser(); - return sessionService.registerAsOnlineUser(user, sessionkey); + return sessionService.registerAsOnlineUser(sessionkey); } @DeprecatedApi @RequestMapping(value = "/{sessionkey}/activeusercount", method = RequestMethod.GET) public final int countActiveUsers(@PathVariable final String sessionkey) { - return userService.getUsersInSessionCount(sessionkey); + return sessionService.activeUsers(sessionkey); } @RequestMapping(value = "/", method = RequestMethod.POST) @@ -123,14 +116,13 @@ public class SessionController extends AbstractController { @RequestParam(value = "sortby", defaultValue = "name") final String sortby, final HttpServletResponse response ) { - final User user = userService.getCurrentUser(); List<Session> sessions = null; /* TODO implement all parameter combinations, implement use of user parameter */ if (ownedOnly && !visitedOnly) { - sessions = sessionService.getMySessions(user); + sessions = sessionService.getMySessions(); } else if (visitedOnly && !ownedOnly) { - sessions = sessionService.getMyVisitedSessions(userService.getCurrentUser()); + sessions = sessionService.getMyVisitedSessions(); } else { response.setStatus(HttpStatus.NOT_IMPLEMENTED.value()); return null; diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 611f3ce91aece07210e2472c8f709316a05f80ad..e9b4c543204dc82da2d1f41d1d392237199f3038 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -25,7 +25,6 @@ import java.util.UUID; import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.entities.LoggedIn; import de.thm.arsnova.entities.Session; -import de.thm.arsnova.entities.User; public interface ISessionService { Session joinSession(String keyword); @@ -36,21 +35,23 @@ public interface ISessionService { String generateKeyword(); - List<Session> getMySessions(User user); + List<Session> getMySessions(); - List<Session> getMyVisitedSessions(User currentUser); + List<Session> getMyVisitedSessions(); - LoggedIn registerAsOnlineUser(User user, String sessionkey); + LoggedIn registerAsOnlineUser(String sessionkey); int countSessions(List<Course> courses); + int activeUsers(String sessionkey); + Session setActive(String sessionkey, Boolean lock); Session joinSession(String keyword, UUID socketId); Session updateSession(String sessionkey, Session session); - void deleteSession(String sessionkey, User user); + void deleteSession(String sessionkey); int getLearningProgress(String sessionkey); diff --git a/src/main/java/de/thm/arsnova/services/IUserService.java b/src/main/java/de/thm/arsnova/services/IUserService.java index 9016b6e5e55e6b03aada1aac8a031d02b265121c..8716c3ebcaba693e88441cd0894bd32c46ce73d0 100644 --- a/src/main/java/de/thm/arsnova/services/IUserService.java +++ b/src/main/java/de/thm/arsnova/services/IUserService.java @@ -48,8 +48,6 @@ public interface IUserService { void removeUserFromSessionBySocketId(UUID socketId); - int getUsersInSessionCount(String keyword); - void removeUserFromMaps(User user); int loggedInUsers(); diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 5b6deb1cf714259edbff28ed393bfd2cf14dea93..755858ef493c0a88b701c73637e1000068ccbe60 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -140,14 +140,14 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated()") - public final List<Session> getMySessions(final User user) { - final List<Session> mySessions = databaseDao.getMySessions(user); + public final List<Session> getMySessions() { + final List<Session> mySessions = databaseDao.getMySessions(userService.getCurrentUser()); if (connectorClient == null) { return mySessions; } final List<Session> courseSessions = databaseDao.getCourseSessions( - connectorClient.getCourses(user.getUsername()).getCourse() + connectorClient.getCourses(userService.getCurrentUser().getUsername()).getCourse() ); final Map<String, Session> allAvailableSessions = new HashMap<String, Session>(); @@ -163,8 +163,8 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated()") - public final List<Session> getMyVisitedSessions(final User user) { - return databaseDao.getMyVisitedSessions(user); + public final List<Session> getMyVisitedSessions() { + return databaseDao.getMyVisitedSessions(userService.getCurrentUser()); } @Override @@ -200,18 +200,18 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated()") - public final LoggedIn registerAsOnlineUser(final User user, final String sessionkey) { + public final LoggedIn registerAsOnlineUser(final String sessionkey) { /* HTTP polling solution (legacy) */ final Session session = this.joinSession(sessionkey); if (session == null) { throw new NotFoundException(); } - if (session.getCreator().equals(user.getUsername())) { + if (session.getCreator().equals(userService.getCurrentUser().getUsername())) { databaseDao.updateSessionOwnerActivity(session); } - return databaseDao.registerAsOnlineUser(user, session); + return databaseDao.registerAsOnlineUser(userService.getCurrentUser(), session); } @Override @@ -223,6 +223,11 @@ public class SessionService implements ISessionService { return sessions.size(); } + @Override + public int activeUsers(final String sessionkey) { + return userService.getUsersInSession(sessionkey).size(); + } + @Override public Session setActive(final String sessionkey, final Boolean lock) { final Session session = databaseDao.getSessionFromKeyword(sessionkey); @@ -241,9 +246,9 @@ public class SessionService implements ISessionService { @Override @PreAuthorize("isAuthenticated() and hasPermission(#sessionkey, 'session', 'owner')") - public void deleteSession(final String sessionkey, final User user) { + public void deleteSession(final String sessionkey) { final Session session = databaseDao.getSession(sessionkey); - for (final Question q : databaseDao.getSkillQuestions(user, session)) { + for (final Question q : databaseDao.getSkillQuestions(userService.getCurrentUser(), session)) { databaseDao.deleteQuestionWithAnswers(q); } databaseDao.deleteSession(session); diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java index f45ed6d91c416e6285feedbb57519e8bf34215f5..96785274ba47d69828fe815f27436bf06563def5 100644 --- a/src/main/java/de/thm/arsnova/services/UserService.java +++ b/src/main/java/de/thm/arsnova/services/UserService.java @@ -174,11 +174,6 @@ public class UserService implements IUserService { return result; } - @Override - public int getUsersInSessionCount(final String keyword) { - return getUsersInSession(keyword).size(); - } - @Override @Transactional(isolation = Isolation.READ_COMMITTED) public void addCurrentUserToSessionMap(final String keyword) { diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java index b08c58cfbf895f473b552e9dab4082f4647fd94b..ac52d270e6c81df25b160d71a332e448d6e23709 100644 --- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java @@ -3,8 +3,6 @@ package de.thm.arsnova.services; import java.io.Serializable; import java.util.UUID; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Component; @@ -17,8 +15,6 @@ import de.thm.arsnova.entities.User; public class UserSessionServiceImpl implements UserSessionService, Serializable { private static final long serialVersionUID = 1L; - private static final Logger LOGGER = LoggerFactory.getLogger(UserSessionServiceImpl.class); - private User user; private Session session; private UUID socketId; @@ -55,10 +51,6 @@ public class UserSessionServiceImpl implements UserSessionService, Serializable return socketId; } - private boolean hasConnectedWebSocket() { - return getSocketId() != null; - } - @Override public boolean inSession() { return isAuthenticated() diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 9090447a5695c7d313acc3f396175838b38d2e16..389b03ea4c2af948e9bbab7cddd0b2c6d6597e82 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -242,7 +242,7 @@ public class ARSnovaSocketIOServer { * @param client */ public void reportSessionDataToClient(final String sessionKey, final SocketIOClient client) { - client.sendEvent("activeUserCountData", userService.getUsersInSessionCount(sessionKey)); + client.sendEvent("activeUserCountData", sessionService.activeUsers(sessionKey)); final de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(sessionKey); client.sendEvent("feedbackData", fb.getValues()); } @@ -281,7 +281,7 @@ public class ARSnovaSocketIOServer { public void reportActiveUserCountForSession(final String sessionKey) { /* This check is needed as long as the HTTP polling solution is active simultaneously. */ - final int count = userService.getUsersInSessionCount(sessionKey); + final int count = sessionService.activeUsers(sessionKey); if (count == lastActiveUserCount) { return; } diff --git a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java index eb74960a017d79e5c629d8c136b5306997123aad..9a2694032da8a431971f3bf5a34933037cbe4e94 100644 --- a/src/test/java/de/thm/arsnova/services/SessionServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/SessionServiceTest.java @@ -177,7 +177,7 @@ public class SessionServiceTest { when(mockDatabase.getSession(anyString())).thenReturn(session); ReflectionTestUtils.setField(getTargetObject(sessionService), "databaseDao", mockDatabase); - sessionService.deleteSession(session.getKeyword(), userService.getCurrentUser()); + sessionService.deleteSession(session.getKeyword()); verify(mockDatabase).deleteQuestionWithAnswers(q1); verify(mockDatabase).deleteQuestionWithAnswers(q2); @@ -190,13 +190,13 @@ public class SessionServiceTest { @Test(expected = AuthenticationCredentialsNotFoundException.class) public void testShouldNotDeleteSessionIfUnauthorized() { setAuthenticated(false, "nobody"); - sessionService.deleteSession("12345678", userService.getCurrentUser()); + sessionService.deleteSession("12345678"); } @Test(expected = ForbiddenException.class) public void testShouldNotDeleteSessionIfNotOwner() { setAuthenticated(true, "anybody"); - sessionService.deleteSession("12345678", userService.getCurrentUser()); + sessionService.deleteSession("12345678"); } @Test