From 0e26e2c75d2db0c14e4b0097f03e4204ae4c5d16 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 13 Oct 2020 18:10:00 +0200 Subject: [PATCH] Singleton Management --- .../data/sdi/engine/impl/RoleManagerImpl.java | 1 - .../factories/GeoServerManagerFactory.java | 12 +++++----- .../impl/factories/RoleManagerFactory.java | 4 ++-- .../impl/factories/SDIManagerFactory.java | 6 ++--- .../TemporaryPersistenceFactory.java | 23 +++++++++++++++---- .../impl/factories/ThreddsManagerFactory.java | 13 ++++++++++- 6 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/RoleManagerImpl.java b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/RoleManagerImpl.java index 1d8d89b..59aadca 100644 --- a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/RoleManagerImpl.java +++ b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/RoleManagerImpl.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import javax.inject.Singleton; -import javax.validation.metadata.ConstraintDescriptor; import org.gcube.spatial.data.sdi.engine.RoleManager; import org.gcube.spatial.data.sdi.model.credentials.AccessType; diff --git a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/GeoServerManagerFactory.java b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/GeoServerManagerFactory.java index 796289f..c5c9faf 100644 --- a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/GeoServerManagerFactory.java +++ b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/GeoServerManagerFactory.java @@ -1,11 +1,11 @@ package org.gcube.spatial.data.sdi.engine.impl.factories; -import javax.inject.Singleton; - import org.gcube.spatial.data.sdi.engine.GISManager; import org.gcube.spatial.data.sdi.engine.impl.GISManagerImpl; import org.glassfish.hk2.api.Factory; +import lombok.Synchronized; + public class GeoServerManagerFactory implements Factory{ @Override @@ -16,14 +16,14 @@ public class GeoServerManagerFactory implements Factory{ @Override public GISManager provide() { - return new GISManagerImpl(); + return getInstance(); } - private GISManager instance=null; + private static GISManager instance=null; - @Singleton - private GISManager getInstance() { + @Synchronized + private static GISManager getInstance() { if(instance==null) instance=new GISManagerImpl(); return instance; diff --git a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/RoleManagerFactory.java b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/RoleManagerFactory.java index 743e1ac..c0ecb07 100644 --- a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/RoleManagerFactory.java +++ b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/RoleManagerFactory.java @@ -13,7 +13,7 @@ public class RoleManagerFactory implements Factory{ } - private RoleManager instance; + private static RoleManager instance; @Override public RoleManager provide() { @@ -21,7 +21,7 @@ public class RoleManagerFactory implements Factory{ } @Synchronized - private RoleManager getInstance() { + private static RoleManager getInstance() { if(instance==null) instance=new RoleManagerImpl(); return instance; diff --git a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/SDIManagerFactory.java b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/SDIManagerFactory.java index e596ba4..36552e6 100644 --- a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/SDIManagerFactory.java +++ b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/SDIManagerFactory.java @@ -20,11 +20,11 @@ public class SDIManagerFactory implements Factory{ } @Override public SDIManager provide() { - return getInstance(); + return getInstance(gnManager,gisManager,thManager); } - private SDIManager sdiManager=null; + private static SDIManager sdiManager=null; @Inject private GeoNetworkManager gnManager; @@ -36,7 +36,7 @@ public class SDIManagerFactory implements Factory{ @Synchronized - private SDIManager getInstance() { + private static SDIManager getInstance(GeoNetworkManager gnManager, GISManager gisManager,ThreddsManager thManager) { if(sdiManager==null) sdiManager=new SDIManagerImpl(gnManager,thManager,gisManager); return sdiManager; diff --git a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/TemporaryPersistenceFactory.java b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/TemporaryPersistenceFactory.java index bf8b091..3bce8a9 100644 --- a/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/TemporaryPersistenceFactory.java +++ b/src/main/java/org/gcube/spatial/data/sdi/engine/impl/factories/TemporaryPersistenceFactory.java @@ -4,6 +4,8 @@ import org.gcube.spatial.data.sdi.engine.TemporaryPersistence; import org.gcube.spatial.data.sdi.engine.impl.TemporaryPersistenceImpl; import org.glassfish.hk2.api.Factory; +import lombok.Synchronized; + public class TemporaryPersistenceFactory implements Factory{ @@ -14,11 +16,22 @@ public class TemporaryPersistenceFactory implements Factory{ @Inject @@ -15,7 +17,7 @@ public class ThreddsManagerFactory implements Factory{ @Override public ThreddsManager provide() { - return new ThreddsManagerImpl(manager); + return getInstance(manager); } @Override @@ -23,4 +25,13 @@ public class ThreddsManagerFactory implements Factory{ // TODO Auto-generated method stub } + + private static ThreddsManager instance=null; + + @Synchronized + private static ThreddsManager getInstance(TemplateManager manager) { + if(instance==null) + instance=new ThreddsManagerImpl(manager); + return instance; + } }