diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java index bf2002bf26be458347f3be477fd1c08641efc40c..770ee1c8f6d49c4cbee0308cb635aa8caa048ee9 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java +++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java @@ -442,7 +442,7 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, StackedContro // cast should be save, only assessable nodes are selectable if((repoTutor && coachedGroups.isEmpty()) || (callback.mayAssessAllUsers() || callback.mayViewAllUsersAssessments())) { identitiesList = getAllAssessableIdentities(); - doUserChooseWithData(ureq, this.identitiesList, null, currentCourseNode); + doUserChooseWithData(ureq, identitiesList, null, currentCourseNode); } else { doGroupChoose(ureq); } @@ -705,6 +705,12 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, StackedContro localUserCourseEnvironmentCache, initialLaunchDates, course, courseNode); wrappedIdentities.add(aiw); } + + if(userListCtr == null) { + //takes too long -> controller disposed + return; + } + // Add the wrapped identities to the table data model AssessedIdentitiesTableDataModel tdm = new AssessedIdentitiesTableDataModel(wrappedIdentities, courseNode, ureq.getLocale(), isAdministrativeUser, mode == MODE_USERFOCUS); tdm.addColumnDescriptors(userListCtr, CMD_CHOOSE_USER, mode == MODE_NODEFOCUS || mode == MODE_GROUPFOCUS || mode == MODE_USERFOCUS); diff --git a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java index f36b51f184ae767f1a90b55b777dfe89c8e3414f..f81899e959f3c292cde15a19c9db80cfe0a2764f 100644 --- a/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java +++ b/src/main/java/org/olat/course/assessment/NewCachePersistingAssessmentManager.java @@ -247,6 +247,18 @@ public class NewCachePersistingAssessmentManager extends BasicManager implements for (Property property:loadedProperties) { addPropertyToCache(m, property); } + + //If property not found, prefill with default value. + if(!m.containsKey(ATTEMPTS)) { + m.put(ATTEMPTS, INTEGER_ZERO); + } + if(!m.containsKey(SCORE)) { + m.put(SCORE, FLOAT_ZERO); + } + if(!m.containsKey(LAST_MODIFIED)) { + m.put(LAST_MODIFIED, null); + } + // we use a putSilent here (no invalidation notifications to other cluster nodes), since // we did not generate new data, but simply asked to reload it. if (prepareForNewData) {