[sdc] rebase update
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / ArtifactsBusinessLogic.java
index 887ce12..cb04cfc 100644 (file)
@@ -23,7 +23,6 @@ package org.openecomp.sdc.be.components.impl;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.rmi.activation.ActivationSystem;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.EnumMap;
@@ -1335,7 +1334,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                                        isUpdated = true;
                                }
                                if (CollectionUtils.isNotEmpty(group.getArtifactsUuid()) && group.getArtifactsUuid().contains(foundArtifact.getArtifactUUID())) {
-                                       group.getArtifacts().remove(foundArtifact.getArtifactUUID());
+                                       group.getArtifactsUuid().remove(foundArtifact.getArtifactUUID());
                                        isUpdated = true;
                                }
                                if (isUpdated) {
@@ -2660,7 +2659,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                                        if (!artifactUniqueId.equals(artifactId)) {
                                                // need to update the generated id in heat env
                                                Map<String, ArtifactDefinition> deploymentArtifacts = parent.getDeploymentArtifacts();
-                                               Optional<Entry<String, ArtifactDefinition>> findFirst = deploymentArtifacts.entrySet().stream().filter(a -> a.getValue().getGeneratedFromId().equals(artifactId)).findFirst();
+                                               Optional<Entry<String, ArtifactDefinition>> findFirst = deploymentArtifacts.entrySet().stream().filter(a -> a.getValue().getGeneratedFromId()!=null && a.getValue().getGeneratedFromId().equals(artifactId)).findFirst();
                                                if (findFirst.isPresent()) {
                                                        ArtifactDefinition artifactEnvInfo = findFirst.get().getValue();
                                                        artifactEnvInfo.setArtifactChecksum(null);
@@ -3600,10 +3599,11 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
 
        protected Either<ArtifactDefinition, ResponseFormat> generateArtifactPayload(ArtifactDefinition artifactDefinition, ComponentTypeEnum componentType, org.openecomp.sdc.be.model.Component component, String resourceInstanceName, User modifier,
                        boolean shouldLock, Supplier<Long> payloadUpdateDateGen, Supplier<Either<ESArtifactData, ResponseFormat>> esDataCreator, String instanceId) {
+               
+               log.trace("Start generating payload for {} artifact {}", artifactDefinition.getArtifactType(), artifactDefinition.getEsId());
+               if (artifactDefinition.getPayloadUpdateDate() == null || artifactDefinition.getPayloadUpdateDate() == 0 || artifactDefinition.getPayloadUpdateDate() <= payloadUpdateDateGen.get()) {
 
-               if (artifactDefinition.getPayloadUpdateDate() == null || artifactDefinition.getPayloadUpdateDate() == 0 || artifactDefinition.getPayloadUpdateDate() < payloadUpdateDateGen.get()) {
-
-                       log.trace("Generaing payload for {} artifact {}", artifactDefinition.getArtifactType(), artifactDefinition.getEsId());
+                       log.trace("Generating payload for {} artifact {}", artifactDefinition.getArtifactType(), artifactDefinition.getEsId());
                        Either<ESArtifactData, ResponseFormat> artifactDataRes = esDataCreator.get();
                        ESArtifactData artifactData = null;
 
@@ -3665,6 +3665,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                                        artifactDefinition.setArtifactChecksum(newCheckSum);
                                        // artifactToscaOperation.updateUUID(artifactDefinition, oldCheckSum, artifactDefinition.getArtifactVersion());
                                        artifactDefinition.setEsId(artifactDefinition.getUniqueId());
+                                       log.trace("No real update done in payload for {} artifact, updating payloadUpdateDate {}", artifactDefinition.getArtifactType(), artifactDefinition.getEsId());
                                        updateArifactDefinitionStatus = artifactToscaOperation.updateArifactOnResource(artifactDefinition, component.getUniqueId(), artifactDefinition.getUniqueId(), componentType.getNodeType(), instanceId);
 
                                        log.trace("Update Payload  ", artifactDefinition.getEsId());
@@ -4087,7 +4088,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                Wrapper<ResponseFormat> errorWrapper = new Wrapper<>();
                Either<byte[], ResponseFormat> result;
                byte[] downloadedArtifact = null;
-               Component component = getLatestComponentByUuid(componentType, componentUuid, errorWrapper);
+               Component component = getComponentByUuid(componentType, componentUuid, errorWrapper);
                if (errorWrapper.isEmpty()) {
                        auditAdditionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, component.getName());
                        downloadedArtifact = downloadArtifact(component.getDeploymentArtifacts(), artifactUUID, errorWrapper, component.getName());
@@ -4686,7 +4687,7 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
        private ComponentInstance getRelatedComponentInstance(ComponentTypeEnum componentType, String componentUuid, String resourceInstanceName, Wrapper<ResponseFormat> errorWrapper) {
                ComponentInstance componentInstance = null;
                String normalizedName = ValidationUtils.normalizeComponentInstanceName(resourceInstanceName);
-               Component component = getLatestComponentByUuid(componentType, componentUuid, errorWrapper);
+               Component component = getComponentByUuid(componentType, componentUuid, errorWrapper);
                if (errorWrapper.isEmpty()) {
                        componentInstance = component.getComponentInstances().stream().filter(ci -> ValidationUtils.normalizeComponentInstanceName(ci.getName()).equals(normalizedName)).findFirst().orElse(null);
                        if (componentInstance == null) {
@@ -4767,6 +4768,26 @@ public class ArtifactsBusinessLogic extends BaseBusinessLogic {
                }
                return component;
        }
+       
+       private Component getComponentByUuid(ComponentTypeEnum componentType, String componentUuid, Wrapper<ResponseFormat> errorWrapper) {
+               Component component = null;
+               Either<List<Component>, StorageOperationStatus> getComponentRes = toscaOperationFacade.getComponentListByUuid(componentUuid, null);
+               if (getComponentRes.isRight()) {
+                       StorageOperationStatus status = getComponentRes.right().value();
+                       log.debug("Could not fetch component with type {} and uuid {}. Status is {}. ", componentType, componentUuid, status);
+                       errorWrapper.setInnerElement(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(status)));
+               } else {
+                       List<Component> value = getComponentRes.left().value();
+                       if (value.isEmpty()){
+                               log.debug("Could not fetch component with type {} and uuid {}.", componentType, componentUuid);
+                               ActionStatus status = componentType == ComponentTypeEnum.RESOURCE ? ActionStatus.RESOURCE_NOT_FOUND : ActionStatus.SERVICE_NOT_FOUND;
+                               errorWrapper.setInnerElement(componentsUtils.getResponseFormat(status));
+                       } else {
+                               component = value.get(0);
+                       }
+               }
+               return component;
+       }
 
        private String getLatestParentArtifactDataIdByArtifactUUID(String artifactUUID, Wrapper<ResponseFormat> errorWrapper, String parentId, ComponentTypeEnum componentType) {
                String artifactId = null;