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);