Fix 2 healing bugs 07/44207/2
authortalig <talig@amdocs.com>
Mon, 23 Apr 2018 15:47:18 +0000 (18:47 +0300)
committerAvi Gaffa <avi.gaffa@amdocs.com>
Tue, 24 Apr 2018 05:28:13 +0000 (05:28 +0000)
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 <talig@amdocs.com>
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
openecomp-be/lib/openecomp-healing-lib/openecomp-sdc-healing-core/src/main/java/org/openecomp/sdc/healing/impl/HealingManagerImpl.java

index bb7e847..16ef8c5 100644 (file)
@@ -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> validationResponse =
                     submit(vspDetails.getId(), vspDetails.getVersion(), "Submit healed Vsp", user);
index 942bc43..71d4ca5 100644 (file)
@@ -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<Healer> getHealersToRun(Collection<String> healersClassNames, String itemId,
                                        Version version, List<String> 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<Healer> getHealerInstance(String healerClassName, List<String> 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<String, Collection<String>>) healingConfig.get(itemType.name());
+    return (Map<String, Collection<String>>) healingConfig.getOrDefault(itemType.name(), Collections.EMPTY_MAP);
   }
 
   private String getUser() {