diff options
author | Jan Malkiewicz <jan.malkiewicz@nokia.com> | 2021-01-08 14:28:15 +0100 |
---|---|---|
committer | Vasyl Razinkov <vasyl.razinkov@est.tech> | 2021-01-11 10:25:30 +0000 |
commit | 69712c820f5ed9345f0f788f8dea4ae16f5f5f00 (patch) | |
tree | bd4e9fe6660d9ccb9fcb8b2e48492d954c3377ef | |
parent | 1eeee67f4e115e70ddb6ad62b1446fa6ff6f48a9 (diff) |
Fix NPE
Fix NPE during the onboarding of a helm package.
NPE was thrown in HeatTreeManager.handleOrphans():
* tree.getHeat()::contains
Issue-ID: SDC-3185
Signed-off-by: Jan Malkiewicz <jan.malkiewicz@nokia.com>
Change-Id: I9e0461cfe18705b6fb53ae318e473bd4e2651305
6 files changed, 59 insertions, 27 deletions
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/HeatTreeManagerTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/HeatTreeManagerTest.java index 6b1493f001..14eba87154 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/HeatTreeManagerTest.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/tree/HeatTreeManagerTest.java @@ -1,5 +1,6 @@ /* * Copyright © 2016-2018 European Support Limited + * Modifications Copyright (C) 2021 Nokia * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -67,7 +68,7 @@ public class HeatTreeManagerTest extends TreeBaseTest { heatTreeManager.addErrors(errorMap); HeatStructureTree tree = heatTreeManager.getTree(); Assert.assertNotNull(tree); - Assert.assertNull(tree.getHeat()); + Assert.assertTrue(tree.getHeat().isEmpty()); } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java index a65db6f2ea..93eb7c649d 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/main/java/org/openecomp/sdc/heat/datatypes/structure/HeatStructureTree.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright (C) 2021 Nokia + * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -24,7 +26,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.TreeSet; - import lombok.AccessLevel; import lombok.Data; import lombok.Getter; @@ -53,9 +54,11 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { private Set<HeatStructureTree> helm; public HeatStructureTree() { + heat = new TreeSet<>(); } public HeatStructureTree(String fileName, boolean isBase) { + this(); this.isBase = isBase; this.fileName = fileName; } @@ -76,7 +79,7 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { * @return the heat structure tree by name */ public static HeatStructureTree getHeatStructureTreeByName(Set<HeatStructureTree> filesSet, - String filename) { + String filename) { for (HeatStructureTree heatStructureTree : filesSet) { if (heatStructureTree.getFileName().equals(filename)) { return heatStructureTree; @@ -166,7 +169,7 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { this.other.add(other); } - public void addToHelmList(HeatStructureTree helm){ + public void addToHelmList(HeatStructureTree helm) { if (this.helm == null) { this.helm = new TreeSet<>(); } @@ -198,7 +201,7 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { */ public void removeFromVolumeOrNetwork(String fileNameToRemove, FileData.Type type) { Set<HeatStructureTree> volumeOrNetworkSet = - type.equals(FileData.Type.HEAT_VOL) ? this.volume : this.network; + type.equals(FileData.Type.HEAT_VOL) ? this.volume : this.network; HeatStructureTree toRemove = getHeatStructureTreeByName(volumeOrNetworkSet, fileNameToRemove); volumeOrNetworkSet.remove(toRemove); @@ -215,7 +218,6 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { result1 = 31 * result1 + (nested != null ? nested.hashCode() : 0); result1 = 31 * result1 + (errors != null ? errors.hashCode() : 0); - return result1; } @@ -231,7 +233,7 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { HeatStructureTree heatStructureTree = (HeatStructureTree) other; if (fileName != null ? !fileName.equals(heatStructureTree.fileName) - : heatStructureTree.fileName != null) { + : heatStructureTree.fileName != null) { return false; } if (env != null ? !env.equals(heatStructureTree.env) : heatStructureTree.env != null) { @@ -241,19 +243,19 @@ public class HeatStructureTree implements Comparable<HeatStructureTree> { return false; } if (volume != null ? !volume.equals(heatStructureTree.volume) - : heatStructureTree.volume != null) { + : heatStructureTree.volume != null) { return false; } if (network != null ? !network.equals(heatStructureTree.network) - : heatStructureTree.network != null) { + : heatStructureTree.network != null) { return false; } if (artifacts != null ? !artifacts.equals(heatStructureTree.artifacts) - : heatStructureTree.artifacts != null) { + : heatStructureTree.artifacts != null) { return false; } if (nested != null ? !nested.equals(heatStructureTree.nested) - : heatStructureTree.nested != null) { + : heatStructureTree.nested != null) { return false; } diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java index e3e19792f5..0ff4bddfe7 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/java/org/openecomp/sdc/heat/services/tree/HeatTreeManagerTest.java @@ -1,6 +1,7 @@ /* * * Copyright © 2017-2018 European Support Limited + * Modifications Copyright (C) 2021 Nokia * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/diffFileNames/out/expectedTree.json b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/diffFileNames/out/expectedTree.json index 4be1e1ddeb..de6026192c 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/diffFileNames/out/expectedTree.json +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/diffFileNames/out/expectedTree.json @@ -1,23 +1,29 @@ { + "heat": [], "nested": [ { "fileName": "TOSCA-Metadata", + "heat": [], "nested": [ { - "fileName": "TOSCA.meta" + "fileName": "TOSCA.meta", + "heat": [] } ] }, { - "fileName": "MainServiceTemplate.yaml" + "fileName": "MainServiceTemplate.yaml", + "heat": [] }, { "fileName": "Definitions", + "heat": [], "nested": [ { - "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml" + "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml", + "heat": [] } ] } ] -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/similarDirectoryName/out/expectedTree.json b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/similarDirectoryName/out/expectedTree.json index 071887b2fb..c6e5cded6f 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/similarDirectoryName/out/expectedTree.json +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/similarDirectoryName/out/expectedTree.json @@ -1,43 +1,55 @@ { + "heat": [], "nested": [ { "fileName": "TOSCA-Metadata", + "heat": [], "nested": [ { - "fileName": "TOSCA.meta" + "fileName": "TOSCA.meta", + "heat": [] } ] }, { - "fileName": "MainServiceTemplate.yaml" + "fileName": "MainServiceTemplate.yaml", + "heat": [] }, { "fileName": "Definitions", + "heat": [], "nested": [ { - "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml" + "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml", + "heat": [] } ] }, { "fileName": "Artifacts", + "heat": [], "nested": [ { "fileName": "OTHER", + "heat": [], "nested": [ { - "fileName": "clearWaterIMSOTHER.zip" + "fileName": "clearWaterIMSOTHER.zip", + "heat": [] } ] }, { "fileName": "Deployment", + "heat": [], "nested": [ { "fileName": "OTHER", + "heat": [], "nested": [ { - "fileName": "clearWaterIMSOTHERDEPLOYMENT.zip" + "fileName": "clearWaterIMSOTHERDEPLOYMENT.zip", + "heat": [] } ] } @@ -46,4 +58,4 @@ ] } ] -}
\ No newline at end of file +} diff --git a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/twoFilesUnderSameDirectory/out/expectedTree.json b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/twoFilesUnderSameDirectory/out/expectedTree.json index 59fec70152..c73b6b9e7e 100644 --- a/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/twoFilesUnderSameDirectory/out/expectedTree.json +++ b/openecomp-be/lib/openecomp-heat-lib/src/test/resources/mock/toscaTree/twoFilesUnderSameDirectory/out/expectedTree.json @@ -1,39 +1,49 @@ { + "heat": [], "nested": [ { "fileName": "TOSCA-Metadata", + "heat": [], "nested": [ { - "fileName": "TOSCA.meta" + "fileName": "TOSCA.meta", + "heat": [] } ] }, { - "fileName": "MainServiceTemplate.yaml" + "fileName": "MainServiceTemplate.yaml", + "heat": [] }, { "fileName": "Definitions", + "heat": [], "nested": [ { - "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml" + "fileName": "GlobalSubstitutionTypesServiceTemplate.yaml", + "heat": [] } ] }, { "fileName": "Artifacts", + "heat": [], "nested": [ { "fileName": "OTHER", + "heat": [], "nested": [ { - "fileName": "clearWaterIMSOTHERDEPLOYMENT.zip" + "fileName": "clearWaterIMSOTHERDEPLOYMENT.zip", + "heat": [] }, { - "fileName": "clearWaterIMSOTHER.zip" + "fileName": "clearWaterIMSOTHER.zip", + "heat": [] } ] } ] } ] -}
\ No newline at end of file +} |