From 41f385fc32fcb50d211c4cf4685fc4da2ff894c9 Mon Sep 17 00:00:00 2001 From: talig Date: Mon, 23 Apr 2018 18:47:18 +0300 Subject: Fix 2 healing bugs 1. Prevent NullPointerException in healing manager. 2. When submitting healed vsp version - sync vlm only if vsp includes vlm version. Change-Id: I3b7088b15f51a5ffe12e277567677a83fc141763 Issue-ID: SDC-1234 Signed-off-by: talig --- .../vsp/rest/services/VendorSoftwareProductsImpl.java | 6 ++++-- .../openecomp/sdc/healing/impl/HealingManagerImpl.java | 18 +++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) (limited to 'openecomp-be') diff --git a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java index bb7e847ddf..16ef8c5761 100644 --- a/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java +++ b/openecomp-be/api/openecomp-sdc-rest-webapp/vendor-software-products-rest/vendor-software-products-rest-services/src/main/java/org/openecomp/sdcrests/vsp/rest/services/VendorSoftwareProductsImpl.java @@ -247,8 +247,10 @@ public class VendorSoftwareProductsImpl implements VendorSoftwareProducts { private void submitHealedVersion(VspDetails vspDetails, String baseVersionId, String user) { try { - // sync vlm if not exists on user space - versioningManager.get(vspDetails.getVendorId(), vspDetails.getVlmVersion()); + if (vspDetails.getVlmVersion() != null) { + // sync vlm if not exists on user space + versioningManager.get(vspDetails.getVendorId(), vspDetails.getVlmVersion()); + } Optional validationResponse = submit(vspDetails.getId(), vspDetails.getVersion(), "Submit healed Vsp", user); diff --git a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java index 942bc43fd8..71d4ca5386 100644 --- a/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java +++ b/openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.healing.impl; + import org.openecomp.core.utilities.CommonMethods; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; @@ -39,6 +40,7 @@ import org.openecomp.sdc.versioning.dao.types.VersionStatus; import org.openecomp.sdc.versioning.types.VersionCreationMethod; import java.util.Collection; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -229,12 +231,14 @@ public class HealingManagerImpl implements HealingManager { private List getHealersToRun(Collection healersClassNames, String itemId, Version version, List failureMessages) { - return healersClassNames.stream() - .map(healerClassName -> getHealerInstance(healerClassName, failureMessages)) - .filter(Optional::isPresent) - .map(Optional::get) - .filter(healer -> healer.isHealingNeeded(itemId, version)) - .collect(Collectors.toList()); + return healersClassNames == null + ? Collections.EMPTY_LIST + : healersClassNames.stream() + .map(healerClassName -> getHealerInstance(healerClassName, failureMessages)) + .filter(Optional::isPresent) + .map(Optional::get) + .filter(healer -> healer.isHealingNeeded(itemId, version)) + .collect(Collectors.toList()); } private Optional getHealerInstance(String healerClassName, List failureMessages) { @@ -251,7 +255,7 @@ public class HealingManagerImpl implements HealingManager { Map healingConfig = FileUtils .readViaInputStream(HEALERS_BY_ENTITY_TYPE_FILE, stream -> JsonUtil.json2Object(stream, Map.class)); - return (Map>) healingConfig.get(itemType.name()); + return (Map>) healingConfig.getOrDefault(itemType.name(), Collections.EMPTY_MAP); } private String getUser() { -- cgit 1.2.3-korg