From 9d81603e4e687d916247804528e53e960f2bfcb4 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Mon, 25 Feb 2019 11:16:38 +0100
Subject: [PATCH] no-jira: only load course container if needed (performance
 optimization)

---
 .../bps/course/nodes/ll/LLRunController.java  | 34 +++++++++++++------
 1 file changed, 24 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/bps/course/nodes/ll/LLRunController.java b/src/main/java/de/bps/course/nodes/ll/LLRunController.java
index e2fcf2c5375..d404a47b9c9 100644
--- a/src/main/java/de/bps/course/nodes/ll/LLRunController.java
+++ b/src/main/java/de/bps/course/nodes/ll/LLRunController.java
@@ -67,19 +67,32 @@ public class LLRunController extends BasicController {
 		runVC.contextPut("linkList", linkList);
 		runVC.contextPut("showLinkComments", Boolean.valueOf(showLinkComments));
 		
-		CourseEnvironment courseEnv = userCourseEnv.getCourseEnvironment();
-		VFSContainer courseContainer = courseEnv.getCourseFolderContainer();
-		Mapper customMapper = null;
-		if (CoreSpringFactory.containsBean(CustomMediaChooserFactory.class.getName())) {
-			CustomMediaChooserFactory customMediaChooserFactory = (CustomMediaChooserFactory)CoreSpringFactory.getBean(CustomMediaChooserFactory.class.getName());
-			customMapper = customMediaChooserFactory.getMapperInstance();
+		boolean hasInternLinks = hasInternLinks(linkList);
+		if(hasInternLinks) {
+			CourseEnvironment courseEnv = userCourseEnv.getCourseEnvironment();
+			VFSContainer courseContainer = courseEnv.getCourseFolderContainer();
+			Mapper customMapper = null;
+			if (CoreSpringFactory.containsBean(CustomMediaChooserFactory.class.getName())) {
+				CustomMediaChooserFactory customMediaChooserFactory = (CustomMediaChooserFactory)CoreSpringFactory.getBean(CustomMediaChooserFactory.class.getName());
+				customMapper = customMediaChooserFactory.getMapperInstance();
+			}
+			String mapperID = courseEnv.getCourseResourceableId() + "/" + llCourseNode.getIdent();
+			String mapperBaseUrl = registerCacheableMapper(ureq, mapperID, new LLMapper(linkList, customMapper, courseContainer));
+			runVC.contextPut("mapperBaseUrl", mapperBaseUrl);
 		}
-		String mapperID = courseEnv.getCourseResourceableId() + "/" + llCourseNode.getIdent();
-		String mapperBaseUrl = registerCacheableMapper(ureq, mapperID, new LLMapper(linkList, customMapper, courseContainer));
-		
-		runVC.contextPut("mapperBaseUrl", mapperBaseUrl);
 		putInitialPanel(runVC);
 	}
+	
+	private boolean hasInternLinks(List<LLModel> linkList) {
+		if(linkList != null && !linkList.isEmpty()) {
+			for(LLModel link:linkList) {
+				if(link.isIntern()) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
 
 	@Override
 	protected void doDispose() {
@@ -103,6 +116,7 @@ public class LLRunController extends BasicController {
 			this.courseContainer = courseContainer;
 		}
 
+		@Override
 		public MediaResource handle(String relPath, HttpServletRequest request) {
 			boolean ok = false;
 			for(LLModel link:linkList) {
-- 
GitLab