From ea2a9dbcfcc7e5a12aca5ceb351d3b422ec0151e Mon Sep 17 00:00:00 2001 From: gnaegi <none@none> Date: Tue, 24 May 2016 14:19:47 +0200 Subject: [PATCH] OO-725 support for video and poster caching, using cacheable mapper --- .../core/gui/control/controller/BasicController.java | 3 +++ .../java/org/olat/course/nodes/VideoCourseNode.java | 4 +--- .../course/nodes/video/VideoPeekviewController.java | 12 ++++++++++-- .../modules/video/ui/VideoDisplayController.java | 8 +++++--- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/olat/core/gui/control/controller/BasicController.java b/src/main/java/org/olat/core/gui/control/controller/BasicController.java index 55cb8d22691..eff380ec3b7 100644 --- a/src/main/java/org/olat/core/gui/control/controller/BasicController.java +++ b/src/main/java/org/olat/core/gui/control/controller/BasicController.java @@ -187,6 +187,7 @@ public abstract class BasicController extends DefaultController { * convenience method: registers a mapper which will be automatically * deregistered upon dispose of the controller * + * @param ureq The user request object * @param m * the mapper that delivers the resources * @return The mapper base URL @@ -200,6 +201,8 @@ public abstract class BasicController extends DefaultController { * convenience method: registers a cacheable mapper which will be * automatically deregistered upon dispose of the controller * + * @param ureq The user request object + * * @param cacheableMapperID * the mapper ID that is used in the url to identify this mapper. * Should be something that is derived from the context or diff --git a/src/main/java/org/olat/course/nodes/VideoCourseNode.java b/src/main/java/org/olat/course/nodes/VideoCourseNode.java index a049b34a9e8..bc859caaaa5 100644 --- a/src/main/java/org/olat/course/nodes/VideoCourseNode.java +++ b/src/main/java/org/olat/course/nodes/VideoCourseNode.java @@ -154,9 +154,7 @@ public class VideoCourseNode extends AbstractAccessableCourseNode { @Override public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, NodeEvaluation ne) { - VideoManager videoManager = CoreSpringFactory.getImpl(VideoManager.class); - VFSContainer masterFolder = videoManager.getMasterContainer(getReferencedRepositoryEntry().getOlatResource()); - Controller controller = new VideoPeekviewController(ureq, wControl, masterFolder); + Controller controller = new VideoPeekviewController(ureq, wControl, getReferencedRepositoryEntry().getOlatResource()); return controller; } } diff --git a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java index a735aa33ec9..452b0483bb3 100644 --- a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java +++ b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java @@ -27,7 +27,10 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.util.vfs.VFSContainer; +import org.olat.modules.video.VideoManager; import org.olat.modules.video.manager.VideoMediaMapper; +import org.olat.resource.OLATResource; +import org.springframework.beans.factory.annotation.Autowired; /** * peekviewcontroller of videomodule @@ -37,10 +40,15 @@ import org.olat.modules.video.manager.VideoMediaMapper; */ public class VideoPeekviewController extends BasicController implements Controller{ - public VideoPeekviewController(UserRequest ureq, WindowControl wControl, VFSContainer posterFolder) { + @Autowired + private VideoManager videoManager; + + public VideoPeekviewController(UserRequest ureq, WindowControl wControl, OLATResource videoResource) { super(ureq, wControl); VelocityContainer peekviewVC = createVelocityContainer("peekview"); - String mediaUrl = registerMapper(ureq, new VideoMediaMapper(posterFolder)); + VFSContainer posterFolder = videoManager.getMasterContainer(videoResource); + String masterMapperId = "master-" + videoResource.getResourceableId(); + String mediaUrl = registerCacheableMapper(ureq, masterMapperId, new VideoMediaMapper(posterFolder)); peekviewVC.contextPut("mediaUrl", mediaUrl); peekviewVC.contextPut("nodeLink", posterFolder); putInitialPanel(peekviewVC); diff --git a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java index e7375986749..9473c6df14f 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java @@ -117,11 +117,13 @@ public class VideoDisplayController extends BasicController { mainVC.contextPut("autoplay", autoplay); // Mapper for Video - String masterUrl = registerMapper(ureq, new VideoMediaMapper(videoManager.getMasterContainer(entry.getOlatResource()))); + String masterMapperId = "master-" + entry.getOlatResource().getResourceableId(); + String masterUrl = registerCacheableMapper(ureq, masterMapperId, new VideoMediaMapper(videoManager.getMasterContainer(entry.getOlatResource()))); mainVC.contextPut("masterUrl", masterUrl); - // mapper for versions specific because not in same base as the resource itself + // Mapper for versions specific because not in same base as the resource itself + String transcodingMapperId = "transcoding-" + entry.getOlatResource().getResourceableId(); VFSContainer transcodedContainer = videoManager.getTranscodingContainer(entry.getOlatResource()); - String transcodedUrl = registerMapper(ureq, new VideoMediaMapper(transcodedContainer)); + String transcodedUrl = registerCacheableMapper(ureq, transcodingMapperId, new VideoMediaMapper(transcodedContainer)); mainVC.contextPut("transcodedUrl", transcodedUrl); if ((showComments || showRating) && !ureq.getUserSession().getRoles().isGuestOnly()) { -- GitLab