From 595613550d744384e3a3fb18a3359685f79fdbb4 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Tue, 14 Mar 2017 15:23:29 +0100
Subject: [PATCH] OO-2613: show an error if a assessmentItem file is missing in
 a test and allow to delete it

---
 .../ims/qti21/ui/editor/AssessmentItemEditorController.java | 6 ++++--
 .../ui/editor/AssessmentTestEditorAndComposerTreeModel.java | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
index e6062d641d5..943222bc9e9 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java
@@ -117,7 +117,8 @@ public class AssessmentItemEditorController extends BasicController {
 		this.restrictedEdit = restrictedEdit;
 		this.resolvedAssessmentItem = resolvedAssessmentItem;
 		
-		if(resolvedAssessmentItem == null) {
+		if(resolvedAssessmentItem == null || resolvedAssessmentItem.getItemLookup() == null
+				|| resolvedAssessmentItem.getItemLookup().getRootNodeHolder() == null) {
 			mainVC = createVelocityContainer("missing_resource");
 			mainVC.contextPut("uri", itemFile == null ? "" : itemFile);
 		} else {
@@ -155,7 +156,8 @@ public class AssessmentItemEditorController extends BasicController {
 		this.restrictedEdit = restrictedEdit;
 		this.resolvedAssessmentItem = resolvedAssessmentItem;
 		
-		if(resolvedAssessmentItem == null) {
+		if(resolvedAssessmentItem == null || resolvedAssessmentItem.getItemLookup() == null
+				|| resolvedAssessmentItem.getItemLookup().getRootNodeHolder() == null) {
 			mainVC = createVelocityContainer("missing_resource");
 			mainVC.contextPut("uri", itemFile == null ? "" : itemFile);
 		} else {
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorAndComposerTreeModel.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorAndComposerTreeModel.java
index 741e2c8459b..f83b19ace5a 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorAndComposerTreeModel.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorAndComposerTreeModel.java
@@ -111,7 +111,8 @@ public class AssessmentTestEditorAndComposerTreeModel extends GenericTreeModel i
 	private TreeNode buildRecursively(AssessmentItemRef itemRef, TreeNode parentNode) {
 		GenericTreeNode itemNode = new GenericTreeNode(itemRef.getIdentifier().toString());
 		ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef);
-		if(resolvedAssessmentItem == null || resolvedAssessmentItem.getItemLookup() == null) {
+		if(resolvedAssessmentItem == null || resolvedAssessmentItem.getItemLookup() == null
+				|| resolvedAssessmentItem.getItemLookup().getRootNodeHolder() == null) {
 			itemNode.setTitle("ERROR - Not found");
 			itemNode.setIconCssClass("o_icon o_icon_error");
 			itemNode.setUserObject(itemRef);
-- 
GitLab