diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java index 6a0120a4751d3959a5cccf3f302d9a3f6b136ddb..fe08325bf7116ac9e21b257d0c54d55ed6ee3351 100644 --- a/src/main/java/de/thm/arsnova/controller/SessionController.java +++ b/src/main/java/de/thm/arsnova/controller/SessionController.java @@ -65,7 +65,7 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE) public final void deleteSession(@PathVariable final String sessionkey) { - User user = userService.getCurrentUser(); + final User user = userService.getCurrentUser(); sessionService.deleteSession(sessionkey, user); } @@ -73,13 +73,8 @@ public class SessionController extends AbstractController { @RequestMapping(value = "/{sessionkey}/online", method = RequestMethod.POST) @ResponseStatus(HttpStatus.CREATED) public final LoggedIn registerAsOnlineUser(@PathVariable final String sessionkey) { - User user = userService.getCurrentUser(); - LoggedIn loggedIn = sessionService.registerAsOnlineUser(user, sessionkey); - if (loggedIn != null) { - return loggedIn; - } - - throw new RuntimeException(); + final User user = userService.getCurrentUser(); + return sessionService.registerAsOnlineUser(user, sessionkey); } @DeprecatedApi @@ -92,18 +87,18 @@ public class SessionController extends AbstractController { @ResponseStatus(HttpStatus.CREATED) public final Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) { if (session != null && session.isCourseSession()) { - List<Course> courses = new ArrayList<Course>(); - Course course = new Course(); + final List<Course> courses = new ArrayList<Course>(); + final Course course = new Course(); course.setId(session.getCourseId()); courses.add(course); - int sessionCount = sessionService.countSessions(courses); + final int sessionCount = sessionService.countSessions(courses); if (sessionCount > 0) { - String appendix = " (" + String.valueOf(sessionCount + 1) + ")"; + final String appendix = " (" + String.valueOf(sessionCount + 1) + ")"; session.setName(session.getName() + appendix); session.setShortName(session.getShortName() + appendix); } } - Session newSession = sessionService.saveSession(session); + final Session newSession = sessionService.saveSession(session); if (newSession == null) { response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); @@ -128,7 +123,7 @@ public class SessionController extends AbstractController { @RequestParam(value = "sortby", defaultValue = "name") final String sortby, final HttpServletResponse response ) { - User user = userService.getCurrentUser(); + final User user = userService.getCurrentUser(); List<Session> sessions = null; /* TODO implement all parameter combinations, implement use of user parameter */ @@ -162,7 +157,7 @@ public class SessionController extends AbstractController { final HttpServletResponse response ) { if (lock != null) { - return this.sessionService.setActive(sessionkey, lock); + return sessionService.setActive(sessionkey, lock); } response.setStatus(HttpStatus.NOT_FOUND.value()); return null; diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 850d72623c43542c15e42e9be8aca33be1a4c099..ae2db78d7e8f4a5cf37e61d6d4cfc7d0b8a75259 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -151,7 +151,7 @@ public class CouchDBDao implements IDatabaseDao { final ViewResults results = getDatabase().view(view); if (results.getJSONArray("rows").optJSONObject(0) == null) { - return null; + throw new NotFoundException(); } return (Session) JSONObject.toBean( results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"), @@ -339,8 +339,7 @@ public class CouchDBDao implements IDatabaseDao { results.getJSONArray("rows").optJSONObject(0).optJSONObject("value"), Question.class ); - JSONArray possibleAnswers = new JSONArray(); - possibleAnswers = results.getJSONArray("rows").optJSONObject(0).optJSONObject("value") + final JSONArray possibleAnswers = results.getJSONArray("rows").optJSONObject(0).optJSONObject("value") .getJSONArray("possibleAnswers"); final Collection<PossibleAnswer> answers = JSONArray.toCollection( possibleAnswers, @@ -972,7 +971,7 @@ public class CouchDBDao implements IDatabaseDao { return result; } - private class ExtendedView extends View { + private static class ExtendedView extends View { private String keys; @@ -1246,7 +1245,12 @@ public class CouchDBDao implements IDatabaseDao { return collectQuestionIds(view); } - private List<String> collectUnansweredQuestionIds(final Session session, final User user, final List<String> questions, final NovaView view) { + private List<String> collectUnansweredQuestionIds( + final Session session, + final User user, + final List<String> questions, + final NovaView view + ) { final ViewResults answeredQuestions = getDatabase().view(view); final List<String> answered = new ArrayList<String>(); diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java index d76f77cf95d2b0af14dcc48d9598894427723b06..77cf14b0b22473bea502ea32ea782b357c8a7c0c 100644 --- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java +++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java @@ -53,15 +53,10 @@ public class ApplicationPermissionEvaluator implements PermissionEvaluator { } private boolean checkSessionPermission(final String username, final Serializable targetId, final Object permission) { - try { - if (permission instanceof String && (permission.equals("owner") || permission.equals("write"))) { - return dao.getSession(targetId.toString()).getCreator().equals(username); - } else if (permission instanceof String && permission.equals("read")) { - return dao.getSession(targetId.toString()).isActive(); - } - } - catch (final NullPointerException e) { - e.printStackTrace(); + if (permission instanceof String && (permission.equals("owner") || permission.equals("write"))) { + return dao.getSession(targetId.toString()).getCreator().equals(username); + } else if (permission instanceof String && permission.equals("read")) { + return dao.getSession(targetId.toString()).isActive(); } return false; } diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 30d9601231702c1bfeeed74af76b649d9b5c9676..5b6deb1cf714259edbff28ed393bfd2cf14dea93 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -205,7 +205,7 @@ public class SessionService implements ISessionService { final Session session = this.joinSession(sessionkey); if (session == null) { - return null; + throw new NotFoundException(); } if (session.getCreator().equals(user.getUsername())) { databaseDao.updateSessionOwnerActivity(session); diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java index 73b5e79d4236370e7f8aaeee212ec028cd1020aa..9d776a08ea06ce91ca5e218d6209d83dbc1a11b4 100644 --- a/src/main/java/de/thm/arsnova/services/UserService.java +++ b/src/main/java/de/thm/arsnova/services/UserService.java @@ -56,11 +56,11 @@ public class UserService implements IUserService { @Scheduled(fixedDelay = DEFAULT_SCHEDULER_DELAY_MS) public final void removeInactiveUsersFromLegacyMap() { - List<String> usernames = databaseDao.getActiveUsers(MAX_USER_INACTIVE_SECONDS); - Set<String> affectedSessions = new HashSet<String>(); + final List<String> usernames = databaseDao.getActiveUsers(MAX_USER_INACTIVE_SECONDS); + final Set<String> affectedSessions = new HashSet<String>(); - for (Entry<User, String> e : user2sessionLegacy.entrySet()) { - User key = e.getKey(); + for (final Entry<User, String> e : user2sessionLegacy.entrySet()) { + final User key = e.getKey(); if (usernames != null && !usernames.contains(key.getUsername())) { if (null != e.getValue()) { affectedSessions.add(e.getValue()); @@ -71,14 +71,14 @@ public class UserService implements IUserService { } } - for (String sessionKeyword : affectedSessions) { + for (final String sessionKeyword : affectedSessions) { socketIoServer.reportActiveUserCountForSession(sessionKeyword); } } @Override public User getCurrentUser() { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null || authentication.getPrincipal() == null) { return null; } @@ -88,13 +88,13 @@ public class UserService implements IUserService { if (authentication instanceof OAuthAuthenticationToken) { user = getOAuthUser(authentication, user); } else if (authentication instanceof CasAuthenticationToken) { - CasAuthenticationToken token = (CasAuthenticationToken) authentication; + final CasAuthenticationToken token = (CasAuthenticationToken) authentication; user = new User(token.getAssertion().getPrincipal()); } else if (authentication instanceof AnonymousAuthenticationToken) { - AnonymousAuthenticationToken token = (AnonymousAuthenticationToken) authentication; + final AnonymousAuthenticationToken token = (AnonymousAuthenticationToken) authentication; user = new User(token); } else if (authentication instanceof UsernamePasswordAuthenticationToken) { - UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication; + final UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication; user = new User(token); } @@ -105,28 +105,28 @@ public class UserService implements IUserService { return user; } - private User getOAuthUser(Authentication authentication, User user) { - OAuthAuthenticationToken token = (OAuthAuthenticationToken) authentication; + private User getOAuthUser(final Authentication authentication, User user) { + final OAuthAuthenticationToken token = (OAuthAuthenticationToken) authentication; if (token.getUserProfile() instanceof Google2Profile) { - Google2Profile profile = (Google2Profile) token.getUserProfile(); + final Google2Profile profile = (Google2Profile) token.getUserProfile(); user = new User(profile); } else if (token.getUserProfile() instanceof TwitterProfile) { - TwitterProfile profile = (TwitterProfile) token.getUserProfile(); + final TwitterProfile profile = (TwitterProfile) token.getUserProfile(); user = new User(profile); } else if (token.getUserProfile() instanceof FacebookProfile) { - FacebookProfile profile = (FacebookProfile) token.getUserProfile(); + final FacebookProfile profile = (FacebookProfile) token.getUserProfile(); user = new User(profile); } return user; } @Override - public User getUser2SocketId(UUID socketId) { + public User getUser2SocketId(final UUID socketId) { return socketid2user.get(socketId); } @Override - public void putUser2SocketId(UUID socketId, User user) { + public void putUser2SocketId(final UUID socketId, final User user) { socketid2user.put(socketId, user); } @@ -136,12 +136,12 @@ public class UserService implements IUserService { } @Override - public void removeUser2SocketId(UUID socketId) { + public void removeUser2SocketId(final UUID socketId) { socketid2user.remove(socketId); } @Override - public boolean isUserInSession(User user, String keyword) { + public boolean isUserInSession(final User user, final String keyword) { if (keyword == null) { return false; } @@ -157,14 +157,14 @@ public class UserService implements IUserService { } @Override - public Set<User> getUsersInSession(String keyword) { - Set<User> result = new HashSet<User>(); - for (Entry<User, String> e : user2session.entrySet()) { + public Set<User> getUsersInSession(final String keyword) { + final Set<User> result = new HashSet<User>(); + for (final Entry<User, String> e : user2session.entrySet()) { if (e.getValue().equals(keyword)) { result.add(e.getKey()); } } - for (Entry<User, String> e : user2sessionLegacy.entrySet()) { + for (final Entry<User, String> e : user2sessionLegacy.entrySet()) { if (e.getValue().equals(keyword)) { result.add(e.getKey()); } @@ -174,14 +174,14 @@ public class UserService implements IUserService { } @Override - public int getUsersInSessionCount(String keyword) { + public int getUsersInSessionCount(final String keyword) { return getUsersInSession(keyword).size(); } @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public void addCurrentUserToSessionMap(String keyword) { - User user = getCurrentUser(); + public void addCurrentUserToSessionMap(final String keyword) { + final User user = getCurrentUser(); if (user == null) { throw new UnauthorizedException(); } @@ -190,15 +190,15 @@ public class UserService implements IUserService { @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public void addUserToSessionBySocketId(UUID socketId, String keyword) { - User user = socketid2user.get(socketId); + public void addUserToSessionBySocketId(final UUID socketId, final String keyword) { + final User user = socketid2user.get(socketId); user2session.put(user, keyword); } @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public void removeUserFromSessionBySocketId(UUID socketId) { - User user = socketid2user.get(socketId); + public void removeUserFromSessionBySocketId(final UUID socketId) { + final User user = socketid2user.get(socketId); if (null == user) { LOGGER.warn("null == user for socket {}", socketId); @@ -208,13 +208,13 @@ public class UserService implements IUserService { } @Override - public String getSessionForUser(String username) { - for (Entry<User, String> entry : user2session.entrySet()) { + public String getSessionForUser(final String username) { + for (final Entry<User, String> entry : user2session.entrySet()) { if (entry.getKey().getUsername().equals(username)) { return entry.getValue(); } } - for (Entry<User, String> entry : user2sessionLegacy.entrySet()) { + for (final Entry<User, String> entry : user2sessionLegacy.entrySet()) { if (entry.getKey().getUsername().equals(username)) { return entry.getValue(); } @@ -229,7 +229,7 @@ public class UserService implements IUserService { } @Override - public void removeUserFromMaps(User user) { + public void removeUserFromMaps(final User user) { if (user != null) { user2session.remove(user); user2sessionLegacy.remove(user);