From 7acdc6a71872e7c8e9e9998b01de9ff261907832 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Thu, 21 Apr 2022 17:18:02 +0200 Subject: [PATCH] User cache is removed on configuration update/create --- .../gcat/configuration/CatalogueConfigurationFactory.java | 6 ++++++ .../java/org/gcube/gcat/persistence/ckan/CKANUserCache.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java b/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java index fba4714..bef9571 100644 --- a/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java +++ b/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import org.gcube.common.authorization.utils.manager.SecretManagerProvider; +import org.gcube.gcat.persistence.ckan.CKANUserCache; /** * @author Luca Frosini (ISTI - CNR) @@ -52,6 +53,11 @@ public class CatalogueConfigurationFactory { GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context, catalogueConfiguration); catalogueConfiguration = gCoreISConfigurationProxy.createOrUpdateOnIS(); catalogueConfigurations.put(context, catalogueConfiguration); + + // The supported organizations could be changed we need to empty the user cache for the context + // to avoid to miss to add an user in an organization which has been added. + CKANUserCache.emptyUserCache(); + return catalogueConfiguration; } diff --git a/src/main/java/org/gcube/gcat/persistence/ckan/CKANUserCache.java b/src/main/java/org/gcube/gcat/persistence/ckan/CKANUserCache.java index 57d553d..63a4add 100644 --- a/src/main/java/org/gcube/gcat/persistence/ckan/CKANUserCache.java +++ b/src/main/java/org/gcube/gcat/persistence/ckan/CKANUserCache.java @@ -69,6 +69,12 @@ public abstract class CKANUserCache { } } + public synchronized static void emptyUserCache() { + SecretManager secretManager = SecretManagerProvider.instance.get(); + String context = secretManager.getContext(); + userCachePerContext.remove(context); + } + @Override protected void finalize() throws Throwable { super.finalize();