From c9e4d0ec9f9d3ac9f420c12573964e511baf8831 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Wed, 22 Apr 2020 11:00:52 +0100 Subject: Fix potential NPE in ArtifactsBusinessLogic Fixes potential NPE in ArtifactsBusinessLogic introduced by SDC-2754. Change-Id: If53915ffc41ddd0dbcf00ea318cdae6f1b5471ad Issue-ID: SDC-2959 Signed-off-by: andre.schmid --- .../be/components/impl/ArtifactsBusinessLogic.java | 23 ++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogic.java index b41d076e2a..f48b3ebbbe 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArtifactsBusinessLogic.java @@ -1075,6 +1075,11 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { final ArtifactDefinition existingArtifactInfo = findArtifact(parentComponent, componentType, componentId, operation, artifactId); + final boolean isCreateOrLinkOperation = + ArtifactOperationEnum.isCreateOrLink(operation.getArtifactOperationEnum()); + if (!isCreateOrLinkOperation && existingArtifactInfo == null) { + throw new ByActionStatusComponentException(ActionStatus.ARTIFACT_NOT_FOUND, artifactId); + } final Component component; if (parentComponent.getUniqueId().equals(componentId)) { component = parentComponent; @@ -1083,8 +1088,9 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { component = findComponent(componentInstance.getComponentUid()); component.setComponentType(componentType); } - - ignoreUnupdateableFieldsInUpdate(operation, artifactInfo, existingArtifactInfo); + if (!isCreateOrLinkOperation) { + ignoreUnupdateableFieldsInUpdate(operation, artifactInfo, existingArtifactInfo); + } if (isInformationalArtifact(artifactInfo)) { validateInformationalArtifact(artifactInfo, component); } @@ -1108,8 +1114,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { final ArtifactGroupTypeEnum artifactGroupType = operationName != null ? ArtifactGroupTypeEnum.LIFE_CYCLE : ArtifactGroupTypeEnum.INFORMATIONAL; - final boolean isCreateOrLink = ArtifactOperationEnum.isCreateOrLink(operation.getArtifactOperationEnum()); - if (!isCreateOrLink) { + if (!isCreateOrLinkOperation) { checkAndSetUnUpdatableFields(user, artifactInfo, existingArtifactInfo, artifactGroupType); } else { checkCreateFields(user, artifactInfo, artifactGroupType); @@ -1118,13 +1123,13 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { composeArtifactId(componentId, artifactId, artifactInfo, interfaceName, operationName); if (existingArtifactInfo != null) { artifactInfo.setMandatory(existingArtifactInfo.getMandatory()); - if (!isCreateOrLink) { + if (!isCreateOrLinkOperation) { validateArtifactTypeNotChanged(artifactInfo, existingArtifactInfo); } } // artifactGroupType is not allowed to be updated - if (!isCreateOrLink) { + if (!isCreateOrLinkOperation) { Either validateGroupType = validateOrSetArtifactGroupType(artifactInfo, existingArtifactInfo); if (validateGroupType.isRight()) { return Either.right(validateGroupType.right().value()); @@ -1138,7 +1143,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { if (isDeploymentArtifact(artifactInfo)) { if (componentType != ComponentTypeEnum.RESOURCE_INSTANCE) { final String artifactName = artifactInfo.getArtifactName(); - if (isCreateOrLink || !artifactName.equalsIgnoreCase(existingArtifactInfo.getArtifactName())) { + if (isCreateOrLinkOperation || !artifactName.equalsIgnoreCase(existingArtifactInfo.getArtifactName())) { validateSingleDeploymentArtifactName(artifactName, parentComponent); } } @@ -1192,7 +1197,9 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic { return component.left().value(); } - private void ignoreUnupdateableFieldsInUpdate(ArtifactOperationInfo operation, ArtifactDefinition artifactInfo, ArtifactDefinition currentArtifactInfo) { + private void ignoreUnupdateableFieldsInUpdate(final ArtifactOperationInfo operation, + final ArtifactDefinition artifactInfo, + final ArtifactDefinition currentArtifactInfo) { if (operation.getArtifactOperationEnum() == ArtifactOperationEnum.UPDATE) { artifactInfo.setArtifactType(currentArtifactInfo.getArtifactType()); artifactInfo.setArtifactGroupType(currentArtifactInfo.getArtifactGroupType()); -- cgit 1.2.3-korg