diff --git a/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java b/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java index 5aa2cdc..24a544b 100644 --- a/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java +++ b/src/main/java/org/gcube/gcat/configuration/CatalogueConfigurationFactory.java @@ -5,7 +5,8 @@ import java.util.Map; import org.gcube.common.authorization.utils.manager.SecretManagerProvider; import org.gcube.gcat.configuration.isproxies.GCoreISConfigurationProxy; -import org.gcube.gcat.configuration.isproxies.ISConfigurationProxyFactory; +import org.gcube.gcat.configuration.isproxies.GCoreISConfigurationProxyFactory; +import org.gcube.gcat.configuration.isproxies.FacetBasedISConfigurationProxyFactory; import org.gcube.gcat.configuration.isproxies.FacetBasedISConfigurationProxy; import org.gcube.gcat.configuration.service.ServiceCatalogueConfiguration; import org.gcube.gcat.persistence.ckan.CKANUserCache; @@ -22,27 +23,31 @@ public class CatalogueConfigurationFactory { } private static ServiceCatalogueConfiguration load(String context) { - FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context); - ServiceCatalogueConfiguration serviceCatalogueConfiguration = restISConfigurationProxy.getCatalogueConfiguration(); - if(serviceCatalogueConfiguration == null) { - GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context); + ServiceCatalogueConfiguration serviceCatalogueConfiguration = null; + try { + FacetBasedISConfigurationProxy facetBasedISConfigurationProxy = FacetBasedISConfigurationProxyFactory.getInstance(context); + serviceCatalogueConfiguration = facetBasedISConfigurationProxy.getCatalogueConfiguration(); + } catch(Exception e){ + GCoreISConfigurationProxy gCoreISConfigurationProxy = GCoreISConfigurationProxyFactory.getInstance(); serviceCatalogueConfiguration = gCoreISConfigurationProxy.getCatalogueConfiguration(); } return serviceCatalogueConfiguration; } private static void purgeFromIS(String context) { - FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context); + FacetBasedISConfigurationProxy restISConfigurationProxy = FacetBasedISConfigurationProxyFactory.getInstance(context); restISConfigurationProxy.delete(); - GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context); + + GCoreISConfigurationProxy gCoreISConfigurationProxy = GCoreISConfigurationProxyFactory.getInstance(); gCoreISConfigurationProxy.delete(); } private static void createOrUpdateOnIS(String context, ServiceCatalogueConfiguration catalogueConfiguration) throws Exception { - FacetBasedISConfigurationProxy restISConfigurationProxy = ISConfigurationProxyFactory.getInstance(context); + FacetBasedISConfigurationProxy restISConfigurationProxy = FacetBasedISConfigurationProxyFactory.getInstance(context); restISConfigurationProxy.setCatalogueConfiguration(catalogueConfiguration); restISConfigurationProxy.createOrUpdateOnIS(); - GCoreISConfigurationProxy gCoreISConfigurationProxy = new GCoreISConfigurationProxy(context); + + GCoreISConfigurationProxy gCoreISConfigurationProxy = GCoreISConfigurationProxyFactory.getInstance(); gCoreISConfigurationProxy.setCatalogueConfiguration(catalogueConfiguration); gCoreISConfigurationProxy.createOrUpdateOnIS(); } diff --git a/src/main/java/org/gcube/gcat/configuration/isproxies/ISConfigurationProxyFactory.java b/src/main/java/org/gcube/gcat/configuration/isproxies/FacetBasedISConfigurationProxyFactory.java similarity index 95% rename from src/main/java/org/gcube/gcat/configuration/isproxies/ISConfigurationProxyFactory.java rename to src/main/java/org/gcube/gcat/configuration/isproxies/FacetBasedISConfigurationProxyFactory.java index ba9679e..8ef85d3 100644 --- a/src/main/java/org/gcube/gcat/configuration/isproxies/ISConfigurationProxyFactory.java +++ b/src/main/java/org/gcube/gcat/configuration/isproxies/FacetBasedISConfigurationProxyFactory.java @@ -5,7 +5,7 @@ import java.util.Map; import org.gcube.common.authorization.utils.manager.SecretManagerProvider; -public class ISConfigurationProxyFactory { +public class FacetBasedISConfigurationProxyFactory { private static final Map isConfigurationProxies; diff --git a/src/main/java/org/gcube/gcat/configuration/isproxies/GCoreISConfigurationProxyFactory.java b/src/main/java/org/gcube/gcat/configuration/isproxies/GCoreISConfigurationProxyFactory.java new file mode 100644 index 0000000..79afc93 --- /dev/null +++ b/src/main/java/org/gcube/gcat/configuration/isproxies/GCoreISConfigurationProxyFactory.java @@ -0,0 +1,35 @@ +package org.gcube.gcat.configuration.isproxies; + +import java.util.HashMap; +import java.util.Map; + +import org.gcube.common.authorization.utils.manager.SecretManagerProvider; + +public class GCoreISConfigurationProxyFactory { + + private static final Map isConfigurationProxies; + + static { + isConfigurationProxies = new HashMap<>(); + } + + private static GCoreISConfigurationProxy find(String context) { + GCoreISConfigurationProxy isConfigurationProxy = new GCoreISConfigurationProxy(context); + return isConfigurationProxy; + } + + public synchronized static GCoreISConfigurationProxy getInstance(String context) { + GCoreISConfigurationProxy isConfigurationProxy = isConfigurationProxies.get(context); + if(isConfigurationProxy == null) { + isConfigurationProxy = find(context); + isConfigurationProxies.put(context, isConfigurationProxy); + } + return isConfigurationProxy; + } + + public static GCoreISConfigurationProxy getInstance() { + String context = SecretManagerProvider.instance.get().getContext(); + return getInstance(context); + } + +}