From 3ae2207d38a9b7a452d7422892e1290a69c10390 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Fri, 30 Jun 2023 10:05:38 +0200 Subject: [PATCH] fixed a NPE and a serialization problem --- .../openaire/community/CommunityService.java | 1 + .../importer/CommunityImporterController.java | 35 ++++++++++++++----- .../importer/CommunityImporterService.java | 6 +++- .../utils/CommunityMappingUtils.java | 2 +- .../exporter/model/context/Param.java | 6 +++- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java index f124a214..be63ddc3 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/CommunityService.java @@ -49,6 +49,7 @@ import eu.dnetlib.openaire.exporter.model.context.ConceptSummary; public class CommunityService { // TODO: Verificare Tickets: #8835, #8854, #6483, #3259, #3494 + // L'IMPORT DI ALCUNI PROGETTI FALLISCE perche' non hanno openaireID @Autowired private DbCommunityRepository dbCommunityRepository; diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterController.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterController.java index a737b1ab..4dc1917e 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterController.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterController.java @@ -6,7 +6,11 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -17,8 +21,14 @@ import eu.dnetlib.openaire.common.ISClient; import eu.dnetlib.openaire.community.model.DbOrganization; import eu.dnetlib.openaire.exporter.exceptions.CommunityException; import eu.dnetlib.openaire.exporter.model.context.Context; +import io.swagger.v3.oas.annotations.tags.Tag; @RestController +@CrossOrigin(origins = { + "*" +}) +@ConditionalOnProperty(value = "openaire.exporter.enable.community", havingValue = "true") +@Tag(name = "OpenAIRE Communities: Migration API", description = "OpenAIRE Communities: Migration API") public class CommunityImporterController { public final static Set communityBlackList = Sets.newHashSet("fet-fp7", "fet-h2020"); @@ -29,20 +39,27 @@ public class CommunityImporterController { @Autowired private ISClient isClient; + private static final Log log = LogFactory.getLog(CommunityImporterController.class); + @GetMapping("/community_importer/communities") public List importProfiles() throws CommunityException { - final Map contextMap = getContextMap(); + try { + final Map contextMap = getContextMap(); - final List list = contextMap.keySet() - .stream() - .filter(id -> !communityBlackList.contains(id)) - .collect(Collectors.toList()); + final List list = contextMap.keySet() + .stream() + .filter(id -> !communityBlackList.contains(id)) + .collect(Collectors.toList()); - list.forEach(id -> { - importer.importCommunity(contextMap.get(id)); - }); + list.forEach(id -> { + importer.importCommunity(contextMap.get(id)); + }); - return list; + return list; + } catch (final Throwable e) { + log.error("Error importing communities", e); + throw new CommunityException(e.getMessage()); + } } @GetMapping("/community_importer/propagationOrgs") diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java index ffe38dc1..5c3431d1 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/importer/CommunityImporterService.java @@ -136,8 +136,12 @@ public class CommunityImporterService { final List datasources = getCommunityInfo(context, CONTENTPROVIDERS_ID_SUFFIX, c -> asCommunityDataprovider(context.getId(), c)); + // TODO: REMOVE THIS FILTER ? final List projects = - getCommunityInfo(context, PROJECTS_ID_SUFFIX, c -> asCommunityProject(context.getId(), c)); + getCommunityInfo(context, PROJECTS_ID_SUFFIX, c -> asCommunityProject(context.getId(), c)) + .stream() + .filter(p -> p.getOpenaireId() != null) + .collect(Collectors.toList()); final List orgs = getCommunityInfo(context, ORGANIZATION_ID_SUFFIX, c -> asCommunityOrganization(context.getId(), c)); diff --git a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java index b3bba7cc..dcdfd86b 100644 --- a/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java +++ b/apps/dnet-exporter-api/src/main/java/eu/dnetlib/openaire/community/utils/CommunityMappingUtils.java @@ -216,7 +216,7 @@ public class CommunityMappingUtils { } private static String[] toStringArray(final List list) { - return list.toArray(new String[list.size()]); + return list != null ? list.toArray(new String[list.size()]) : new String[0]; } } diff --git a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/context/Param.java b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/context/Param.java index 071fb5cd..07533ceb 100644 --- a/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/context/Param.java +++ b/libs/dnet-exporter-model/src/main/java/eu/dnetlib/openaire/exporter/model/context/Param.java @@ -1,6 +1,10 @@ package eu.dnetlib.openaire.exporter.model.context; -public class Param { +import java.io.Serializable; + +public class Param implements Serializable { + + private static final long serialVersionUID = -1534376651378828800L; private String name;