diff --git a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java index fde0c6a0c72a48c4b9e69ea76c9cfe88c0fcb8d2..c3a897b7637e373a2b15618cd2092bfdb1a8994e 100644 --- a/src/main/java/org/olat/basesecurity/BaseSecurityManager.java +++ b/src/main/java/org/olat/basesecurity/BaseSecurityManager.java @@ -989,6 +989,9 @@ public class BaseSecurityManager implements BaseSecurity, UserDataDeletable { String newCredentials = Encoder.encrypt(password, currentSalt, algorithm); if(newCredentials.equals(authentication.getCredential())) { //same credentials + if(BaseSecurityModule.getDefaultAuthProviderIdentifier().equals(authentication.getProvider())) { + authentication = updateAuthentication(authentication); + } return authentication; } } diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java index dede2a938cea0d69e8b7a9a3bd73e0fd6087c9fb..d8f13a3b2d3fcd7effcee4dff10f7c3716696c59 100644 --- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java +++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java @@ -1186,27 +1186,32 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia } private void recordOutcomeVariable(AssessmentTestSession candidateSession, OutcomeVariable outcomeVariable, Map<Identifier,String> outcomes) { - Identifier identifier = outcomeVariable.getIdentifier(); - Value computedValue = outcomeVariable.getComputedValue(); - - if (QtiConstants.VARIABLE_DURATION_IDENTIFIER.equals(identifier)) { - log.audit(candidateSession.getKey() + " :: " + outcomeVariable.getIdentifier() + " - " + stringifyQtiValue(computedValue)); - } else if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) { - if (computedValue instanceof NumberValue) { - double score = ((NumberValue) computedValue).doubleValue(); - candidateSession.setScore(new BigDecimal(score)); - } - } else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) { - if (computedValue instanceof BooleanValue) { - boolean pass = ((BooleanValue) computedValue).booleanValue(); - candidateSession.setPassed(pass); - } + if(outcomeVariable.getCardinality() == null) { + log.error("Error outcome variable without cardinlaity: " + outcomeVariable, null); + return; } + Identifier identifier = outcomeVariable.getIdentifier(); try { + Value computedValue = outcomeVariable.getComputedValue(); + if (QtiConstants.VARIABLE_DURATION_IDENTIFIER.equals(identifier)) { + log.audit(candidateSession.getKey() + " :: " + outcomeVariable.getIdentifier() + " - " + stringifyQtiValue(computedValue)); + } else if (QTI21Constants.SCORE_IDENTIFIER.equals(identifier)) { + if (computedValue instanceof NumberValue) { + double score = ((NumberValue) computedValue).doubleValue(); + candidateSession.setScore(new BigDecimal(score)); + } + } else if (QTI21Constants.PASS_IDENTIFIER.equals(identifier)) { + if (computedValue instanceof BooleanValue) { + boolean pass = ((BooleanValue) computedValue).booleanValue(); + candidateSession.setPassed(pass); + } + } + outcomes.put(identifier, stringifyQtiValue(computedValue)); } catch (Exception e) { - log.error("", e); + log.error("Error recording outcome variable: " + identifier, e); + log.error("Error recording outcome variable: " + outcomeVariable, null); } }