diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/SingleISResourceUCDProvider.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/SingleISResourceUCDProvider.java index 19d2565..24fc3e6 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/SingleISResourceUCDProvider.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/SingleISResourceUCDProvider.java @@ -54,7 +54,7 @@ public class SingleISResourceUCDProvider extends AbstractScopedMap i public SingleISResourceUCDProvider() { super("Single IS Resource UCD Provider"); - setTTL(Duration.of(2, ChronoUnit.MINUTES)); + setTTL(Duration.of(1, ChronoUnit.MICROS)); // no cache } @Override diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDManager.java index 3cf988e..6b84dd9 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDManager.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDManager.java @@ -5,6 +5,7 @@ import org.gcube.application.cms.caches.AbstractScopedMap; import org.gcube.application.cms.caches.Engine; import org.gcube.application.cms.caches.ObjectManager; import org.gcube.application.cms.implementations.ImplementationProvider; +import org.gcube.application.cms.serialization.Serialization; import org.gcube.application.geoportal.common.model.rest.ConfigurationException; import org.gcube.application.geoportal.common.model.rest.QueryRequest; import org.gcube.application.geoportal.common.model.useCaseDescriptor.UseCaseDescriptor; @@ -48,7 +49,7 @@ public class UCDManager extends AbstractScopedMap implements UCDMan public UCDManager() { super("UCD MANAGER"); - setTTL(Duration.of(1, ChronoUnit.MINUTES)); + setTTL(Duration.of(2, ChronoUnit.MINUTES)); } @@ -186,11 +187,13 @@ public class UCDManager extends AbstractScopedMap implements UCDMan final UCDMongoManager manager = getMongoManager(); manager.deleteAll(); memCache.clear(); - - ProfileMap liveMap=ImplementationProvider.get().getProvidedObjectByClass(ProfileMap.class); + Engine liveMapProvider =ImplementationProvider.get().getEngineByManagedClass(ProfileMap.class); + log.trace("LiveMap Provider class is {} ",liveMapProvider.getClass()); + ProfileMap liveMap= liveMapProvider.getObject(); log.debug("LiveMap size is {} ",liveMap.size()); for (Map.Entry entry : liveMap.entrySet()) { - UseCaseDescriptor useCaseDescriptor = entry.getValue(); + // Copying object so we don't alter live Map + UseCaseDescriptor useCaseDescriptor = Serialization.convert(entry.getValue(),UseCaseDescriptor.class); try { log.debug("Updateing cache with {}, mongo id is {}", useCaseDescriptor.getId(),useCaseDescriptor.getMongoId()); if(useCaseDescriptor.getMongoId()!=null){ diff --git a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDLoadingTest.java b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDLoadingTest.java index 78c5469..5a6689e 100644 --- a/geoportal-service/src/test/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDLoadingTest.java +++ b/geoportal-service/src/test/java/org/gcube/application/geoportal/service/engine/providers/ucd/UCDLoadingTest.java @@ -40,6 +40,14 @@ public class UCDLoadingTest { TokenSetter.set(GCubeTest.getContext()); SingleISResourceUCDProvider provider = new SingleISResourceUCDProvider(); ProfileMap map = provider.getObject(); + map.forEach((s, useCaseDescriptor) -> { + System.out.println("Checking "+s); + assertNotNull(useCaseDescriptor); + assertNotNull(useCaseDescriptor.getId()); + assertNull(useCaseDescriptor.getMongoId()); + assertNotNull(useCaseDescriptor.getDataAccessPolicies()); + assertNotNull(useCaseDescriptor.getHandlers()); + }); System.out.println("UCIDs IN "+GCubeTest.getContext()+": "+map.keySet()); }