From 66fcdfd72ad9ef098a44c292a45cd1c21145acc5 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Fri, 6 May 2022 18:03:48 +0200 Subject: [PATCH] UCD Cache TTL --- .../engine/mongo/ProfiledMongoManager.java | 1 - .../engine/providers/ucd/UCDManager.java | 15 ++++++++++ .../notifications/NotificationsPlugin.java | 28 ++++++++++++++++++- .../profiledDocuments/profiles/mosi.json | 2 +- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java index b12382b..0bbe411 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java @@ -85,7 +85,6 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< // Check UseCaseDescriptor ID log.info("Loading useCaseDescriptor ID {} ",profileId); if(profileId==null) throw new InvalidParameterException("UseCaseDescriptor ID cannot be null"); - Map profiles=ImplementationProvider.get().getProvidedObjectByClass(ProfileMap.class); useCaseDescriptor = ImplementationProvider.get().getProvidedObjectByClass(UCDManagerI.class).getById(profileId); if(useCaseDescriptor == null ) throw new WebApplicationException("UseCaseDescriptor " + profileId + " not registered", Response.Status.NOT_FOUND); 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 d61d8e6..55aca91 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 @@ -15,12 +15,26 @@ import org.gcube.application.geoportal.service.model.internal.faults.Registratio import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; +import java.time.Duration; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalAmount; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import static java.lang.Thread.sleep; +/** + * Provider of UCDManagerI (this) + * + * - nb on get should check / trigger cache refresh TTL + * - uses UCDMongoManager for storing + * - profile live map engine is discovered + * + * + * + */ @Slf4j public class UCDManager extends AbstractScopedMap implements UCDManagerI { @@ -28,6 +42,7 @@ public class UCDManager extends AbstractScopedMap implements UCDMan public UCDManager() { super("UCD MANAGER"); + setTTL(Duration.of(1, ChronoUnit.MINUTES)); } diff --git a/notifications-plugins/src/main/java/org/gcube/application/cms/notifications/NotificationsPlugin.java b/notifications-plugins/src/main/java/org/gcube/application/cms/notifications/NotificationsPlugin.java index dfbc8d3..9aa7411 100644 --- a/notifications-plugins/src/main/java/org/gcube/application/cms/notifications/NotificationsPlugin.java +++ b/notifications-plugins/src/main/java/org/gcube/application/cms/notifications/NotificationsPlugin.java @@ -1,4 +1,30 @@ package org.gcube.application.cms.notifications; -public class NotificationsPlugin { +import org.gcube.application.cms.plugins.implementations.AbstractPlugin; +import org.gcube.application.geoportal.common.model.plugins.PluginDescriptor; + +public class NotificationsPlugin extends AbstractPlugin { + + + @Override + public PluginDescriptor getDescriptor() { + /* + Should basically perform something like + curl --location --request POST 'https://api.dev.d4science.org/social-networking-library-ws/rest/2/notifications/catalogue' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSSklZNEpoNF9qdDdvNmREY0NlUDFfS1l0akcxVExXVW9oMkQ2Tzk1bFNBIn0.eyJleHAiOjE2NTEyMzY2MzgsImlhdCI6MTY1MTIzNjMzOCwiYXV0aF90aW1lIjoxNjUxMjM2MzM0LCJqdGkiOiI5OGE5NjliMy04N2EzLTRiZWYtOWQ1Yi0yYTUwMmM5YWNmZTEiLCJpc3MiOiJodHRwczovL2FjY291bnRzLmRldi5kNHNjaWVuY2Uub3JnL2F1dGgvcmVhbG1zL2Q0c2NpZW5jZSIsImF1ZCI6IiUyRmdjdWJlJTJGZGV2c2VjJTJGZGV2VlJFIiwic3ViIjoiNmE4MmY1ODctYzgwZS00OWUzLTg4YzYtYzExN2U5ZDhkM2Y3IiwidHlwIjoiQmVhcmVyIiwiYXpwIjoibmV4dC5kNHNjaWVuY2Uub3JnIiwic2Vzc2lvbl9zdGF0ZSI6IjA2NzQ2ZDNkLTExNjYtNGVjMC1hZWZmLTBiY2Q2YTEzMTI0MiIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsiLyoiXSwicmVzb3VyY2VfYWNjZXNzIjp7ImNvbmR1Y3Rvci1zZXJ2ZXIiOnsicm9sZXMiOlsiY29uZHVjdG9yLW1hbmFnZXIiXX0sIiUyRmdjdWJlJTJGZGV2c2VjJTJGZGV2VlJFIjp7InJvbGVzIjpbIkRhdGEtTWFuYWdlciIsIlZSRS1NYW5hZ2VyIiwiTWVtYmVyIl19fSwiYXV0aG9yaXphdGlvbiI6eyJwZXJtaXNzaW9ucyI6W3sicnNpZCI6IjU3Mjg1NTEwLTM5MzktNGRlNy04ZmMxLWUzYTlkM2NjZTI4MSIsInJzbmFtZSI6IkRlZmF1bHQgUmVzb3VyY2UifV19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hc3NpbWlsaWFuIEFzc2FudGUiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJtYXNzaW1pbGlhbm8uYXNzYW50ZSIsImdpdmVuX25hbWUiOiJNYXNzaW1pbGlhbiIsImxvY2FsZSI6ImVuIiwiZmFtaWx5X25hbWUiOiJBc3NhbnRlIiwiZW1haWwiOiJtYXNzaW1pbGlhbm8uYXNzYW50ZUBpc3RpLmNuci5pdCJ9.b7TBRgsW0__3kl2H_ljcL7fSI9I1QaIqQq0Y7S90bWHtkRvmPkPyzWuGq9hhyN1kRg52Ue_3tEEDEkGgtceBEoZ0RAbpppkum7AJvjX6tKHF79k7wpnbxl7ED65VZFk0EazfC2w_n0WvPHQsb67zdwFeZk97G0pbjsVxYUBrhmnEMtXNzmAWaC0cc_-DriE5BBn3DjuWnaxXDxp3DB74YZoJmYR9HYN94c7Y0IV1XZxGFXLZ8V7UTfcJrGqulhF7HU79jd8hccZniam3NEfTZV-knJ4uEnupRHfMLBhnn1MGzxYFPN1xPIPgwiLSvRef7lK2sjI_bi6GAcT0sg5zwA' \ +--data-raw ' { + "idsToNotify" : ["leonardo.candela", "luca.frosini"], + "itemId" : "Conversational search dataset with labels", + "notifyText" : "published the test item '\''Conversational search dataset with labels'\''", + "itemURL" : "https://data.d4science.org/ctlg/ResourceCatalogue/conversational_dataset_with_labels", + "idsAsGroup" : false, + "type" : "ITEM_PUBLISHED" +} + */ + + + + return null; + } } diff --git a/test-data/profiledDocuments/profiles/mosi.json b/test-data/profiledDocuments/profiles/mosi.json index 64b23e2..0872eba 100644 --- a/test-data/profiledDocuments/profiles/mosi.json +++ b/test-data/profiledDocuments/profiles/mosi.json @@ -21,7 +21,7 @@ "_id": "SDI-Indexer-Plugin", "_type": "Indexer", "_configuration": { - "coordinatesPath" :[{"x" : "$.GE.GEC.GECX", "y" : "$.GE.GEC.GECY"}], + "coordinatesPath" :[{"x" : "$._theDocument.GE.GEC.GECX", "y" : "$._theDocument.GE.GEC.GECY"}], "explicitFieldMapping": [], "additionalLayers": [ {