From 7c3041b276c2c27f235f68e3ebdc4ae3b862dd5b Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Sun, 3 Dec 2023 16:49:49 +0100 Subject: [PATCH] avoid NPEs --- .../oaf/utils/GraphCleaningFunctions.java | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/GraphCleaningFunctions.java b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/GraphCleaningFunctions.java index c65f36de9..c25d67f25 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/GraphCleaningFunctions.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/schema/oaf/utils/GraphCleaningFunctions.java @@ -941,28 +941,36 @@ public class GraphCleaningFunctions extends CleaningFunctions { } private static Qualifier getMetaResourceType(final List instances, final VocabularyGroup vocs) { + return Optional + .ofNullable(instances) + .map(ii -> { + if (vocs.vocabularyExists(OPENAIRE_META_RESOURCE_TYPE)) { + Optional itm = ii + .stream() + .filter(Objects::nonNull) + .flatMap( + i -> Optional + .ofNullable(i.getInstanceTypeMapping()) + .map(Collection::stream) + .orElse(Stream.empty())) + .filter(t -> OPENAIRE_COAR_RESOURCE_TYPES_3_1.equals(t.getVocabularyName())) + .findFirst(); - if (vocs.vocabularyExists(OPENAIRE_META_RESOURCE_TYPE)) { - Optional itm = instances - .stream() - .flatMap( - i -> Optional.ofNullable(i.getInstanceTypeMapping()).map(Collection::stream).orElse(Stream.empty())) - .filter(t -> OPENAIRE_COAR_RESOURCE_TYPES_3_1.equals(t.getVocabularyName())) - .findFirst(); - - if (!itm.isPresent() || Objects.isNull(itm.get().getTypeCode())) { - return null; - } else { - final String typeCode = itm.get().getTypeCode(); - return Optional - .ofNullable(vocs.lookupTermBySynonym(OPENAIRE_META_RESOURCE_TYPE, typeCode)) - .orElseThrow( - () -> new IllegalStateException("unable to find a synonym for '" + typeCode + "' in " + - OPENAIRE_META_RESOURCE_TYPE)); - } - } else { - throw new IllegalStateException("vocabulary '" + OPENAIRE_META_RESOURCE_TYPE + "' not available"); - } + if (!itm.isPresent() || Objects.isNull(itm.get().getTypeCode())) { + return null; + } else { + final String typeCode = itm.get().getTypeCode(); + return Optional + .ofNullable(vocs.lookupTermBySynonym(OPENAIRE_META_RESOURCE_TYPE, typeCode)) + .orElseThrow( + () -> new IllegalStateException("unable to find a synonym for '" + typeCode + "' in " + + OPENAIRE_META_RESOURCE_TYPE)); + } + } else { + throw new IllegalStateException("vocabulary '" + OPENAIRE_META_RESOURCE_TYPE + "' not available"); + } + }) + .orElse(null); } }