From 6295bc6994ecda6c633c2d3775d0aaf111cd1899 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Tue, 19 Mar 2019 10:47:11 +0100
Subject: [PATCH] OO-3932: Store WOPI access in a cache

---
 .../modules/wopi/manager/WopiServiceImpl.java | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/modules/wopi/manager/WopiServiceImpl.java b/src/main/java/org/olat/modules/wopi/manager/WopiServiceImpl.java
index 9e7e6d1b2f4..941eb4b6792 100644
--- a/src/main/java/org/olat/modules/wopi/manager/WopiServiceImpl.java
+++ b/src/main/java/org/olat/modules/wopi/manager/WopiServiceImpl.java
@@ -22,16 +22,18 @@ package org.olat.modules.wopi.manager;
 import java.io.File;
 import java.net.URL;
 import java.nio.file.Paths;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
+import javax.annotation.PostConstruct;
+
 import org.olat.core.commons.services.vfs.VFSMetadata;
 import org.olat.core.commons.services.vfs.VFSRepositoryService;
 import org.olat.core.id.Identity;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.util.cache.CacheWrapper;
+import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.vfs.VFSItem;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.modules.wopi.Access;
@@ -55,11 +57,18 @@ public class WopiServiceImpl implements WopiService {
 	
 	private static final OLog log = Tracing.createLoggerFor(WopiServiceImpl.class);
 	
-	private Map<String, Access> accesses = new HashMap<>();
+	private CacheWrapper<String, Access> accessCache;
 	
+	@Autowired
+	private CoordinatorManager coordinator;
 	@Autowired
 	private VFSRepositoryService vfsService;
 
+	@PostConstruct
+	public void init() {
+		accessCache = coordinator.getCoordinator().getCacher().getCache(WopiService.class.getSimpleName(), "access");
+	}
+	
 	@Override
 	public boolean fileExists(String fileId) {
 		return vfsService.getItemFor(fileId) != null? true: false;
@@ -91,13 +100,13 @@ public class WopiServiceImpl implements WopiService {
 		access.setFileId(fileId);
 		access.setOwner(owner);
 		access.setAccessIdentity(identity);
-		accesses.put(token, access);
+		accessCache.put(token, access);
 		return access;
 	}
 
 	@Override
 	public Access getAccess(String accessToken) {
-		return accesses.get(accessToken);
+		return accessCache.get(accessToken);
 	}
 
 	@Override
-- 
GitLab