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 -> {