From 177e66e5aa9f49e32a70511cd54dab84ebed9f86 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 20 Jul 2017 11:15:24 +0200
Subject: [PATCH] OO-2918: use the loaded repository entries instead of the one
 in the candidate session

---
 .../qti21/ui/AssessmentEntryOutcomesListener.java | 15 ++++++++++-----
 .../qti21/ui/AssessmentTestDisplayController.java |  2 +-
 .../ui/QTI21AssessmentDetailsController.java      |  2 +-
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java
index 93ecfed65f5..0a7bd1e8fe0 100644
--- a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java
+++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java
@@ -51,14 +51,20 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener {
 	private AssessmentEntry assessmentEntry;
 	private final AssessmentService assessmentService;
 	
+	private final RepositoryEntry entry;
+	private final RepositoryEntry testEntry;
+	
 	private final boolean authorMode;
 	private final boolean needManualCorrection;
 
 	private AtomicBoolean start = new AtomicBoolean(true);
 	private AtomicBoolean close = new AtomicBoolean(true);
 	
-	public AssessmentEntryOutcomesListener(AssessmentEntry assessmentEntry, boolean needManualCorrection,
+	public AssessmentEntryOutcomesListener(RepositoryEntry entry, RepositoryEntry testEntry,
+			AssessmentEntry assessmentEntry, boolean needManualCorrection,
 			AssessmentService assessmentService, boolean authorMode) {
+		this.entry = entry;
+		this.testEntry = testEntry;
 		this.assessmentEntry = assessmentEntry;
 		this.assessmentService = assessmentService;
 		this.authorMode = authorMode;
@@ -67,10 +73,11 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener {
 
 	@Override
 	public void decorateConfirmation(AssessmentTestSession candidateSession, DigitalSignatureOptions options, Date timestamp, Locale locale) {
-		decorateResourceConfirmation(candidateSession, options, timestamp, locale);
+		decorateResourceConfirmation(entry, testEntry, candidateSession, options, timestamp, locale);
 	}
 	
-	public static void decorateResourceConfirmation(AssessmentTestSession candidateSession, DigitalSignatureOptions options, Date timestamp, Locale locale) {
+	public static void decorateResourceConfirmation(RepositoryEntry entry, RepositoryEntry testEntry, AssessmentTestSession candidateSession,
+			DigitalSignatureOptions options, Date timestamp, Locale locale) {
 		MailBundle bundle = new MailBundle();
 		bundle.setToId(candidateSession.getIdentity());
 		String fullname = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(candidateSession.getIdentity());
@@ -78,8 +85,6 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener {
 
 		
 		Translator translator = Util.createPackageTranslator(QTI21RuntimeController.class, locale);
-		RepositoryEntry entry = candidateSession.getRepositoryEntry();
-		RepositoryEntry testEntry = candidateSession.getTestEntry();
 		String[] args = new String[] {
 				entry.getDisplayname(),		// {0}
 				entry.getKey().toString(),	// {1}
diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java
index 1d49aa9a32a..4c57f68c40a 100644
--- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java
@@ -310,7 +310,7 @@ public class AssessmentTestDisplayController extends BasicController implements
 		AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(assessedIdentity, anonymousIdentifier, entry, subIdent, testEntry);
 		if(outcomesListener == null) {
 			boolean manualCorrections = AssessmentTestHelper.needManualCorrection(resolvedAssessmentTest);
-			outcomesListener = new AssessmentEntryOutcomesListener(assessmentEntry, manualCorrections, assessmentService, authorMode);
+			outcomesListener = new AssessmentEntryOutcomesListener(entry, testEntry, assessmentEntry, manualCorrections, assessmentService, authorMode);
 		}
 
 		AssessmentTestSession lastSession = qtiService.getResumableAssessmentTestSession(assessedIdentity, anonymousIdentifier, entry, subIdent, testEntry, authorMode);
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
index 00dbae27454..6cbf6f56dc0 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
@@ -434,7 +434,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 		DigitalSignatureOptions options = new DigitalSignatureOptions(digitalSignature, sendMail, entry, testEntry);
 		if(digitalSignature) {
 			if(courseNode == null) {
-				 AssessmentEntryOutcomesListener.decorateResourceConfirmation(session, options, null, getLocale());
+				 AssessmentEntryOutcomesListener.decorateResourceConfirmation(entry, testEntry, session, options, null, getLocale());
 			} else {
 				CourseEnvironment courseEnv = CourseFactory.loadCourse(entry).getCourseEnvironment();
 				QTI21AssessmentRunController.decorateCourseConfirmation(session, options, courseEnv, courseNode, sessionTestEntry, null, getLocale());
-- 
GitLab