diff --git a/pom.xml b/pom.xml
index 99b11afc..a3ce4601 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
jar
- 1.4.0-SNAPSHOT
+ 1.4.1-SNAPSHOT
${sebserver-version}
${sebserver-version}
UTF-8
diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/LmsAPITemplateAdapter.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/LmsAPITemplateAdapter.java
index 71f79253..9a647c34 100644
--- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/LmsAPITemplateAdapter.java
+++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/LmsAPITemplateAdapter.java
@@ -202,7 +202,7 @@ public class LmsAPITemplateAdapter implements LmsAPITemplate {
throw new RuntimeException("No course API Access: " + testCourseAccessAPI);
}
return testCourseAccessAPI;
- });
+ }).getOrThrow();
}
@Override
diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/mockup/MockCourseAccessAPI.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/mockup/MockCourseAccessAPI.java
index a92c65a7..37e32ff0 100644
--- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/mockup/MockCourseAccessAPI.java
+++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/mockup/MockCourseAccessAPI.java
@@ -92,25 +92,25 @@ public class MockCourseAccessAPI implements CourseAccessAPI {
null,
"http://lms.mockup.com/api/"));
- if (webserviceInfo.hasProfile("dev")) {
- for (int i = 12; i < 50; i++) {
- this.mockups.add(new QuizData(
- "quiz10" + i, institutionId, lmsSetupId, lmsType, "Demo Quiz 10 " + i + " (MOCKUP)",
- i + "_Starts in a minute and ends after five minutes",
- DateTime.now(DateTimeZone.UTC).plus(Constants.MINUTE_IN_MILLIS)
- .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
- DateTime.now(DateTimeZone.UTC).plus(6 * Constants.MINUTE_IN_MILLIS)
- .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
- "http://lms.mockup.com/api/"));
- this.mockups.add(new QuizData(
- "quiz11" + i, institutionId, lmsSetupId, lmsType, "Demo Quiz 11 " + i + " (MOCKUP)",
- i + "_Starts in a minute and ends never",
- DateTime.now(DateTimeZone.UTC).plus(Constants.MINUTE_IN_MILLIS)
- .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
- null,
- "http://lms.mockup.com/api/"));
- }
- }
+// if (webserviceInfo.hasProfile("dev")) {
+// for (int i = 12; i < 50; i++) {
+// this.mockups.add(new QuizData(
+// "quiz10" + i, institutionId, lmsSetupId, lmsType, "Demo Quiz 10 " + i + " (MOCKUP)",
+// i + "_Starts in a minute and ends after five minutes",
+// DateTime.now(DateTimeZone.UTC).plus(Constants.MINUTE_IN_MILLIS)
+// .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
+// DateTime.now(DateTimeZone.UTC).plus(6 * Constants.MINUTE_IN_MILLIS)
+// .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
+// "http://lms.mockup.com/api/"));
+// this.mockups.add(new QuizData(
+// "quiz11" + i, institutionId, lmsSetupId, lmsType, "Demo Quiz 11 " + i + " (MOCKUP)",
+// i + "_Starts in a minute and ends never",
+// DateTime.now(DateTimeZone.UTC).plus(Constants.MINUTE_IN_MILLIS)
+// .toString(Constants.DEFAULT_DATE_TIME_FORMAT),
+// null,
+// "http://lms.mockup.com/api/"));
+// }
+// }
}
@Override
diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/legacy/MoodleRestTemplateFactory.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/legacy/MoodleRestTemplateFactory.java
index 5de31e82..f3b803ae 100644
--- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/legacy/MoodleRestTemplateFactory.java
+++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/lms/impl/moodle/legacy/MoodleRestTemplateFactory.java
@@ -137,7 +137,7 @@ public class MoodleRestTemplateFactory {
log.warn("Failed to get access token for LMS: {}({})",
lmsSetup.name,
lmsSetup.id,
- result.getError());
+ result.getError().getMessage());
}
return result;
})
diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/ExamUpdateHandler.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/ExamUpdateHandler.java
index a3dd4a3c..d911846c 100644
--- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/ExamUpdateHandler.java
+++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/session/impl/ExamUpdateHandler.java
@@ -88,6 +88,31 @@ class ExamUpdateHandler {
final Set failedOrMissing = new HashSet<>(exams.keySet());
final String updateId = this.createUpdateId();
+ // test overall LMS access
+ try {
+ this.lmsAPIService
+ .getLmsAPITemplate(lmsSetupId)
+ .getOrThrow()
+ .checkCourseAPIAccess();
+ } catch (final Exception e) {
+ log.warn("No LMS access, mark all exams of the LMS as not connected to LMS");
+ if (!failedOrMissing.isEmpty()) {
+ failedOrMissing
+ .stream()
+ .forEach(quizId -> {
+ try {
+ final Exam exam = exams.get(quizId);
+ if (exam.lmsAvailable == null || exam.isLmsAvailable()) {
+ this.examDAO.markLMSAvailability(quizId, false, updateId);
+ }
+ } catch (final Exception ee) {
+ log.error("Failed to mark exam: {} as not connected to LMS", quizId, ee);
+ }
+ });
+ }
+ return failedOrMissing;
+ }
+
this.lmsAPIService
.getLmsAPITemplate(lmsSetupId)
.map(template -> {