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 35d1bffb34874465f2578201820cae7b4abab05c..c1241c7cff6596d4c1fb3ebbea31f5d4a1fb33ca 100644 --- a/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java +++ b/src/main/java/org/olat/ims/qti21/manager/CorrectResponsesUtil.java @@ -356,7 +356,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); diff --git a/src/main/java/org/olat/modules/fo/ui/MessageListController.java b/src/main/java/org/olat/modules/fo/ui/MessageListController.java index fb34f94567bda9b7e29ceeb7931bd5285fc46258..17b975fb7935c97fba789f53c73f9b4bab337d66 100644 --- a/src/main/java/org/olat/modules/fo/ui/MessageListController.java +++ b/src/main/java/org/olat/modules/fo/ui/MessageListController.java @@ -608,9 +608,13 @@ public class MessageListController extends BasicController implements GenericEve // message attachments VFSContainer msgContainer = forumManager.getMessageContainer(forum.getKey(), m.getKey()); - messageView.setMessageContainer(msgContainer); - List<VFSItem> attachments = new ArrayList<>(msgContainer.getItems(new VFSItemMetaFilter())); - messageView.setAttachments(attachments); + if(msgContainer != null) { + messageView.setMessageContainer(msgContainer); + List<VFSItem> attachments = new ArrayList<>(msgContainer.getItems(new VFSItemMetaFilter())); + messageView.setAttachments(attachments); + } else { + messageView.setAttachments(new ArrayList<>()); + } // number of children and modify/delete permissions int numOfChildren = messageView.getNumOfChildren();