diff --git a/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java b/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java index c639ece63e7abf0c6aea72ce91bfde0c81df2f69..3331714c3574d6c3050da8f287991658a4eaca77 100644 --- a/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java +++ b/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java @@ -334,7 +334,10 @@ public class CorrectResponsesUtil { public static final AbstractEntry getCorrectTextResponses(AssessmentItem assessmentItem, TextEntryInteraction interaction) { ResponseDeclaration responseDeclaration = assessmentItem.getResponseDeclaration(interaction.getResponseIdentifier()); - if(responseDeclaration.hasBaseType(BaseType.STRING) && responseDeclaration.hasCardinality(Cardinality.SINGLE)) { + if(responseDeclaration == null) { + log.error("Missing declaration for interaction: {} of assessment item: {}", interaction, assessmentItem); + return null; + } else if(responseDeclaration.hasBaseType(BaseType.STRING) && responseDeclaration.hasCardinality(Cardinality.SINGLE)) { TextEntry textEntry = new TextEntry(interaction); FIBAssessmentItemBuilder.extractTextEntrySettingsFromResponseDeclaration(textEntry, responseDeclaration, new AtomicInteger(), new DoubleAdder()); return textEntry; diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java index d95fc58e03929cb74e0f9e64a0f0612bac436005..05fab18a3c34a9d0e3572606e5d53344904c7e22 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java @@ -603,7 +603,9 @@ public class AssessmentObjectVelocityRenderDecorator extends VelocityRenderDecor } public Boolean isCorrectTextEntry(TextEntryInteraction textEntry) { - if(textEntry == null) return null; + if(textEntry == null) { + return null; + } Value val = getResponseValue(textEntry.getResponseIdentifier()); if(val == null) { @@ -612,6 +614,9 @@ public class AssessmentObjectVelocityRenderDecorator extends VelocityRenderDecor String stringuifiedResponses = toString(val); AbstractEntry correctAnswers = CorrectResponsesUtil.getCorrectTextResponses(assessmentItem, textEntry); + if(correctAnswers == null) { + return null; + } stringuifiedResponses = CorrectResponsesUtil.stripResponse(stringuifiedResponses); boolean correct = correctAnswers.match(stringuifiedResponses); return Boolean.valueOf(correct);