Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java =================================================================== diff -u -r9b4a3799f9589dbda9a792e10a4ebd649db1e3db -r21b039b2df601c1311f0fdaac761f00a44613a8b --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java (.../LearnerController.java) (revision 9b4a3799f9589dbda9a792e10a4ebd649db1e3db) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/LearnerController.java (.../LearnerController.java) (revision 21b039b2df601c1311f0fdaac761f00a44613a8b) @@ -193,8 +193,7 @@ redirectToURL(response, url); } catch (Exception e) { - log - .error("An error occurred while learner " + learner + " attempting to join the lesson.", e); + log.error("An error occurred while learner " + learner + " attempting to join the lesson.", e); return "error"; } @@ -209,6 +208,10 @@ throws IOException, ServletException { // fetch necessary parameters long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + Lesson lesson = lessonService.getLesson(lessonID); + if (!lesson.getAllowLearnerRestart()) { + throw new ServletException("Lesson with ID " + lessonID + " does not allow learners to restart it."); + } User user = LearningWebUtil.getUser(learnerService); Integer userID = user.getUserId(); @@ -222,8 +225,8 @@ // make a copy of attempted and completed activities Date archiveDate = new Date(); LearnerProgress learnerProgress = learnerService.getProgress(userID, lessonID); - Map attemptedActivities = new HashMap(learnerProgress.getAttemptedActivities()); - Map completedActivities = new HashMap(); + Map attemptedActivities = new HashMap<>(learnerProgress.getAttemptedActivities()); + Map completedActivities = new HashMap<>(); for (Entry entry : learnerProgress.getCompletedActivities().entrySet()) { CompletedActivityProgressArchive activityArchive = new CompletedActivityProgressArchive( entry.getValue().getStartDate(), entry.getValue().getFinishDate());