diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java | 378 |
1 files changed, 158 insertions, 220 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java index 4bfc6509c6..cadaf6fcbc 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilitiesBusinessLogic.java @@ -13,10 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.be.components.impl; import fj.data.Either; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; @@ -51,42 +60,25 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Collectors; - @org.springframework.stereotype.Component("capabilitiesBusinessLogic") public class CapabilitiesBusinessLogic extends BaseBusinessLogic { + private static final Logger LOGGER = LoggerFactory.getLogger(CapabilitiesBusinessLogic.class); private static final String FAILED_TO_LOCK_COMPONENT_RESPONSE_IS = "Failed to lock component {}. Response is {}"; private static final String DELETE_CAPABILITIES = "deleteCapability"; private static final String GET_CAPABILITIES = "getCapabilities"; private static final String EXCEPTION_OCCURRED_DURING_CAPABILITIES = "Exception occurred during {}. Response is {}"; - private final ICapabilityTypeOperation capabilityTypeOperation; - private CapabilitiesOperation capabilitiesOperation; private CapabilitiesValidation capabilitiesValidation; @Autowired - public CapabilitiesBusinessLogic(IElementOperation elementDao, - IGroupOperation groupOperation, - IGroupInstanceOperation groupInstanceOperation, - IGroupTypeOperation groupTypeOperation, - GroupBusinessLogic groupBusinessLogic, - InterfaceOperation interfaceOperation, - InterfaceLifecycleOperation interfaceLifecycleTypeOperation, - ICapabilityTypeOperation capabilityTypeOperation, - ArtifactsOperations artifactToscaOperation) { - super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, - interfaceOperation, interfaceLifecycleTypeOperation, artifactToscaOperation); + public CapabilitiesBusinessLogic(IElementOperation elementDao, IGroupOperation groupOperation, IGroupInstanceOperation groupInstanceOperation, + IGroupTypeOperation groupTypeOperation, GroupBusinessLogic groupBusinessLogic, + InterfaceOperation interfaceOperation, InterfaceLifecycleOperation interfaceLifecycleTypeOperation, + ICapabilityTypeOperation capabilityTypeOperation, ArtifactsOperations artifactToscaOperation) { + super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, + artifactToscaOperation); this.capabilityTypeOperation = capabilityTypeOperation; } @@ -100,16 +92,14 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { this.capabilitiesOperation = capabilitiesOperation; } - public Either<List<CapabilityDefinition>, ResponseFormat> createCapabilities(String componentId, - List<CapabilityDefinition> capabilityDefinitions, + public Either<List<CapabilityDefinition>, ResponseFormat> createCapabilities(String componentId, List<CapabilityDefinition> capabilityDefinitions, User user, String errorContext, boolean lock) { - Either<Component, ResponseFormat> validateUserAndCapabilitiesEither = - validateUserAndCapabilities(user, componentId, errorContext, capabilityDefinitions); - if(validateUserAndCapabilitiesEither.isRight()) { + Either<Component, ResponseFormat> validateUserAndCapabilitiesEither = validateUserAndCapabilities(user, componentId, errorContext, + capabilityDefinitions); + if (validateUserAndCapabilitiesEither.isRight()) { return Either.right(validateUserAndCapabilitiesEither.right().value()); } - Component storedComponent = validateUserAndCapabilitiesEither.left().value(); - + Component storedComponent = validateUserAndCapabilitiesEither.left().value(); Either<Boolean, ResponseFormat> lockResult = lockComponentResult(lock, storedComponent, errorContext); if (lockResult.isRight()) { return Either.right(lockResult.right().value()); @@ -122,16 +112,14 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); } finally { if (lockResult.isLeft() && lockResult.left().value()) { - graphLockOperation.unlockComponent(storedComponent.getUniqueId(), - NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); + graphLockOperation + .unlockComponent(storedComponent.getUniqueId(), NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); } } } - - private Either<Component, ResponseFormat> validateUserAndCapabilities(User user, String componentId, - String errorContext, - List<CapabilityDefinition> capabilityDefinitions ) { + private Either<Component, ResponseFormat> validateUserAndCapabilities(User user, String componentId, String errorContext, + List<CapabilityDefinition> capabilityDefinitions) { validateUserExists(user.getUserId()); Either<Component, ResponseFormat> componentEither = getComponentDetails(componentId); if (componentEither.isRight()) { @@ -139,15 +127,14 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { } Component storedComponent = componentEither.left().value(); Either<Boolean, ResponseFormat> capabilitiesValidationEither = capabilitiesValidation - .validateCapabilities(capabilityDefinitions, storedComponent, false); + .validateCapabilities(capabilityDefinitions, storedComponent, false); if (capabilitiesValidationEither.isRight()) { return Either.right(capabilitiesValidationEither.right().value()); } return Either.left(storedComponent); } - private Either<List<CapabilityDefinition>, ResponseFormat> createCapability(String componentId, - List<CapabilityDefinition> capabilityDefinitions, + private Either<List<CapabilityDefinition>, ResponseFormat> createCapability(String componentId, List<CapabilityDefinition> capabilityDefinitions, Component storedComponent) { Either<List<CapabilityDefinition>, StorageOperationStatus> result; List<CapabilityDefinition> capabilitiesListStoredInComponent = null; @@ -157,32 +144,30 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { if (Objects.isNull(capabilityDefinitionToGetType)) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)); } - capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToGetType - .getType(), storedComponentCapabilities); + capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToGetType.getType(), + storedComponentCapabilities); } List<CapabilityDefinition> capabilitiesDefListToCreate; List<CapabilityDefinition> capabilitiesToReturn; if (CollectionUtils.isNotEmpty(capabilitiesListStoredInComponent)) { - capabilitiesDefListToCreate = capabilityDefinitions.stream().map(capabilityDefinition -> - initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); + capabilitiesDefListToCreate = capabilityDefinitions.stream() + .map(capabilityDefinition -> initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); capabilitiesToReturn = capabilitiesDefListToCreate; capabilitiesDefListToCreate.addAll(capabilitiesListStoredInComponent); result = capabilitiesOperation.updateCapabilities(componentId, capabilitiesDefListToCreate); } else { - capabilitiesToReturn = capabilityDefinitions.stream().map(capabilityDefinition -> - initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); + capabilitiesToReturn = capabilityDefinitions.stream() + .map(capabilityDefinition -> initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); result = capabilitiesOperation.addCapabilities(componentId, capabilitiesToReturn); } if (result.isRight()) { janusGraphDao.rollback(); - return Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(result - .right().value(), storedComponent.getComponentType()), "")); + return Either.right(componentsUtils + .getResponseFormat(componentsUtils.convertFromStorageResponse(result.right().value(), storedComponent.getComponentType()), "")); } - Map<String, MapPropertiesDataDefinition> propertiesMap = - getCapabilitiesPropertiesDataDefinitionMap(capabilityDefinitions); + Map<String, MapPropertiesDataDefinition> propertiesMap = getCapabilitiesPropertiesDataDefinitionMap(capabilityDefinitions); if (MapUtils.isNotEmpty(propertiesMap)) { - StorageOperationStatus storageOperationStatus = capabilitiesOperation - .createOrUpdateCapabilityProperties(componentId, propertiesMap); + StorageOperationStatus storageOperationStatus = capabilitiesOperation.createOrUpdateCapabilityProperties(componentId, propertiesMap); if (storageOperationStatus != StorageOperationStatus.OK) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(storageOperationStatus)); @@ -192,8 +177,7 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.left(capabilitiesToReturn); } - public Either<List<CapabilityDefinition>, ResponseFormat> updateCapabilities(String componentId, - List<CapabilityDefinition> capabilityDefinitions, + public Either<List<CapabilityDefinition>, ResponseFormat> updateCapabilities(String componentId, List<CapabilityDefinition> capabilityDefinitions, User user, String errorContext, boolean lock) { validateUserExists(user.getUserId()); Either<Component, ResponseFormat> componentEither = getComponentDetails(componentId); @@ -202,11 +186,10 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { } Component storedComponent = componentEither.left().value(); Either<Boolean, ResponseFormat> capabilitiesValidationEither = capabilitiesValidation - .validateCapabilities(capabilityDefinitions, storedComponent, true); + .validateCapabilities(capabilityDefinitions, storedComponent, true); if (capabilitiesValidationEither.isRight()) { return Either.right(capabilitiesValidationEither.right().value()); } - Either<Boolean, ResponseFormat> lockResult = lockComponentResult(lock, storedComponent, errorContext); if (lockResult.isRight()) { return Either.right(lockResult.right().value()); @@ -220,32 +203,30 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { if (Objects.isNull(capabilityDefinitionToGetType)) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.INVALID_CONTENT)); } - capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToGetType - .getType(), storedComponentCapabilities); + capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToGetType.getType(), + storedComponentCapabilities); } List<CapabilityDefinition> capabilitiesDefListToUpdate = new ArrayList<>(); List<CapabilityDefinition> capabilitiesToReturn = null; if (CollectionUtils.isNotEmpty(capabilitiesListStoredInComponent)) { - if (capabilityDefinitions.stream().anyMatch(capabilityDefinition -> - isCapabilityUsedInServiceComposition(capabilityDefinition, storedComponent))) { + if (capabilityDefinitions.stream() + .anyMatch(capabilityDefinition -> isCapabilityUsedInServiceComposition(capabilityDefinition, storedComponent))) { LOGGER.error("Capability can't be edited, since it is" + " used in service composition"); - return Either.right(componentsUtils.getResponseFormat(ActionStatus. - CAPABILITY_UPDATE_NOT_ALLOWED_USED_IN_COMPOSITION)); + return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_UPDATE_NOT_ALLOWED_USED_IN_COMPOSITION)); } for (CapabilityDefinition capabilityDefinitionToUpdate : capabilityDefinitions) { - capabilitiesToReturn = capabilitiesListStoredInComponent.stream().filter(capToUpdate -> - capToUpdate.getUniqueId().equals(capabilityDefinitionToUpdate.getUniqueId())) - .map(capabilityDefinition -> updateCapability(capabilityDefinition, - capabilityDefinitionToUpdate, storedComponent)).collect(Collectors.toList()); - capabilitiesListStoredInComponent.removeIf(capToUpdate -> capToUpdate.getUniqueId() - .equals(capabilityDefinitionToUpdate.getUniqueId())); + capabilitiesToReturn = capabilitiesListStoredInComponent.stream() + .filter(capToUpdate -> capToUpdate.getUniqueId().equals(capabilityDefinitionToUpdate.getUniqueId())) + .map(capabilityDefinition -> updateCapability(capabilityDefinition, capabilityDefinitionToUpdate, storedComponent)) + .collect(Collectors.toList()); + capabilitiesListStoredInComponent + .removeIf(capToUpdate -> capToUpdate.getUniqueId().equals(capabilityDefinitionToUpdate.getUniqueId())); if (CollectionUtils.isNotEmpty(capabilitiesToReturn)) { capabilitiesListStoredInComponent.addAll(capabilitiesToReturn); capabilitiesDefListToUpdate.addAll(capabilitiesListStoredInComponent); } else { - Either<List<CapabilityDefinition>, ResponseFormat> capTypeUpdateEither - = handleCapabilityTypeUpdateWhenNewTypeExist(storedComponent, storedComponent - .getCapabilities(), capabilitiesToReturn, capabilityDefinitionToUpdate); + Either<List<CapabilityDefinition>, ResponseFormat> capTypeUpdateEither = handleCapabilityTypeUpdateWhenNewTypeExist( + storedComponent, storedComponent.getCapabilities(), capabilitiesToReturn, capabilityDefinitionToUpdate); if (capTypeUpdateEither.isRight()) { return Either.right(capTypeUpdateEither.right().value()); } @@ -254,26 +235,23 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { } result = capabilitiesOperation.updateCapabilities(componentId, capabilitiesDefListToUpdate); } else { - Either<List<CapabilityDefinition>, ResponseFormat> capabilityDefinitionToDelete - = handleCapabilityTypeUpdateWhenNewTypeNotExist(capabilityDefinitions, storedComponent, - storedComponentCapabilities); + Either<List<CapabilityDefinition>, ResponseFormat> capabilityDefinitionToDelete = handleCapabilityTypeUpdateWhenNewTypeNotExist( + capabilityDefinitions, storedComponent, storedComponentCapabilities); if (capabilityDefinitionToDelete != null) { return capabilityDefinitionToDelete; } - capabilitiesToReturn = capabilityDefinitions.stream().map(capabilityDefinition -> - initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); + capabilitiesToReturn = capabilityDefinitions.stream() + .map(capabilityDefinition -> initiateNewCapability(storedComponent, capabilityDefinition)).collect(Collectors.toList()); result = capabilitiesOperation.addCapabilities(componentId, capabilitiesToReturn); } if (result.isRight()) { janusGraphDao.rollback(); - return Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(result - .right().value(), storedComponent.getComponentType()), "")); + return Either.right(componentsUtils + .getResponseFormat(componentsUtils.convertFromStorageResponse(result.right().value(), storedComponent.getComponentType()), "")); } - Map<String, MapPropertiesDataDefinition> propertiesMap = - getCapabilitiesPropertiesDataDefinitionMap(capabilityDefinitions); + Map<String, MapPropertiesDataDefinition> propertiesMap = getCapabilitiesPropertiesDataDefinitionMap(capabilityDefinitions); if (MapUtils.isNotEmpty(propertiesMap)) { - StorageOperationStatus storageOperationStatus = capabilitiesOperation - .createOrUpdateCapabilityProperties(componentId, propertiesMap); + StorageOperationStatus storageOperationStatus = capabilitiesOperation.createOrUpdateCapabilityProperties(componentId, propertiesMap); if (storageOperationStatus != StorageOperationStatus.OK) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(storageOperationStatus)); @@ -287,81 +265,67 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); } finally { if (lockResult.isLeft() && lockResult.left().value()) { - graphLockOperation.unlockComponent(storedComponent.getUniqueId(), - NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); + graphLockOperation + .unlockComponent(storedComponent.getUniqueId(), NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); } } } - private Either<List<CapabilityDefinition>, ResponseFormat> handleCapabilityTypeUpdateWhenNewTypeExist( - Component storedComponent, - Map<String, List<CapabilityDefinition>> storedComponentCapabilities, - List<CapabilityDefinition> capabilitiesToReturn, - CapabilityDefinition capabilityDefinitionToUpdate) { - + private Either<List<CapabilityDefinition>, ResponseFormat> handleCapabilityTypeUpdateWhenNewTypeExist(Component storedComponent, + Map<String, List<CapabilityDefinition>> storedComponentCapabilities, + List<CapabilityDefinition> capabilitiesToReturn, + CapabilityDefinition capabilityDefinitionToUpdate) { List<CapabilityDefinition> capabilitiesListStoredInComponent; List<CapabilityDefinition> capabilitiesDefsToCreateOrUpdate = new ArrayList<>(); - Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream() - .flatMap(Collection::stream).filter(capabilityDefinition -> capabilityDefinition.getUniqueId() - .equals(capabilityDefinitionToUpdate.getUniqueId())).findAny(); + Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream().flatMap(Collection::stream) + .filter(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityDefinitionToUpdate.getUniqueId())).findAny(); if (!definitionOptional.isPresent()) { - return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, - storedComponent.getUniqueId())); + return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } CapabilityDefinition capabilityDefinitionToDelete = definitionOptional.get(); - - capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToUpdate.getType(), - storedComponentCapabilities); - Either<List<CapabilityDefinition>, StorageOperationStatus> deleteCapabilityEither - = deleteCapability(storedComponent, storedComponentCapabilities, capabilityDefinitionToDelete); + capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToUpdate.getType(), storedComponentCapabilities); + Either<List<CapabilityDefinition>, StorageOperationStatus> deleteCapabilityEither = deleteCapability(storedComponent, + storedComponentCapabilities, capabilityDefinitionToDelete); if (deleteCapabilityEither.isRight()) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(deleteCapabilityEither.right().value())); } StorageOperationStatus deleteStorageOperationStatus = capabilitiesOperation - .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); + .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); if (deleteStorageOperationStatus != StorageOperationStatus.OK) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(deleteStorageOperationStatus)); } capabilitiesToReturn.add(initiateNewCapability(storedComponent, capabilityDefinitionToUpdate)); - capabilitiesDefsToCreateOrUpdate.addAll(capabilitiesToReturn); capabilitiesDefsToCreateOrUpdate.addAll(capabilitiesListStoredInComponent); return Either.left(capabilitiesDefsToCreateOrUpdate); } private Either<List<CapabilityDefinition>, ResponseFormat> handleCapabilityTypeUpdateWhenNewTypeNotExist( - List<CapabilityDefinition> capabilityDefinitions, - Component storedComponent, - Map<String, List<CapabilityDefinition>> storedComponentCapabilities) { + List<CapabilityDefinition> capabilityDefinitions, Component storedComponent, + Map<String, List<CapabilityDefinition>> storedComponentCapabilities) { for (CapabilityDefinition capabilityDefinitionToUpdate : capabilityDefinitions) { - - Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream() - .flatMap(Collection::stream).filter(capabilityDefinition -> capabilityDefinition.getUniqueId() - .equals(capabilityDefinitionToUpdate.getUniqueId())).findAny(); + Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream().flatMap(Collection::stream) + .filter(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityDefinitionToUpdate.getUniqueId())).findAny(); if (!definitionOptional.isPresent()) { - return Either.right(componentsUtils.getResponseFormat(ActionStatus - .CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); + return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } CapabilityDefinition capabilityDefinitionToDelete = definitionOptional.get(); - Boolean isCapabilityUsedInServiceComposition = isCapabilityUsedInServiceComposition(capabilityDefinitionToDelete, - storedComponent); + Boolean isCapabilityUsedInServiceComposition = isCapabilityUsedInServiceComposition(capabilityDefinitionToDelete, storedComponent); if (isCapabilityUsedInServiceComposition) { - LOGGER.error("Capability {} can't be edited, since it is used in service composition", - capabilityDefinitionToDelete.getUniqueId()); - return Either.right(componentsUtils.getResponseFormat( - ActionStatus.CAPABILITY_UPDATE_NOT_ALLOWED_USED_IN_COMPOSITION, - capabilityDefinitionToDelete.getName())); + LOGGER.error("Capability {} can't be edited, since it is used in service composition", capabilityDefinitionToDelete.getUniqueId()); + return Either.right(componentsUtils + .getResponseFormat(ActionStatus.CAPABILITY_UPDATE_NOT_ALLOWED_USED_IN_COMPOSITION, capabilityDefinitionToDelete.getName())); } - Either<List<CapabilityDefinition>, StorageOperationStatus> deleteCapabilityEither - = deleteCapability(storedComponent, storedComponentCapabilities, capabilityDefinitionToDelete); + Either<List<CapabilityDefinition>, StorageOperationStatus> deleteCapabilityEither = deleteCapability(storedComponent, + storedComponentCapabilities, capabilityDefinitionToDelete); if (deleteCapabilityEither.isRight()) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(deleteCapabilityEither.right().value())); } StorageOperationStatus deleteStorageOperationStatus = capabilitiesOperation - .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); + .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); if (deleteStorageOperationStatus != StorageOperationStatus.OK) { janusGraphDao.rollback(); return Either.right(componentsUtils.getResponseFormat(deleteStorageOperationStatus)); @@ -370,22 +334,19 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return null; } - public Either<CapabilityDefinition, ResponseFormat> getCapability(String componentId, String capabilityToGet, - User user, boolean lock) { + public Either<CapabilityDefinition, ResponseFormat> getCapability(String componentId, String capabilityToGet, User user, boolean lock) { validateUserExists(user.getUserId()); Either<Component, ResponseFormat> componentEither = getComponentDetails(componentId); if (componentEither.isRight()) { return Either.right(componentEither.right().value()); } Component storedComponent = componentEither.left().value(); - Either<Boolean, ResponseFormat> lockResult = lockComponentResult(lock, storedComponent, GET_CAPABILITIES); if (lockResult.isRight()) { return Either.right(lockResult.right().value()); } try { - Either<CapabilityDefinition, ResponseFormat> getCapabilityDefinitionEither = - getCapabilityDefinition(capabilityToGet, storedComponent); + Either<CapabilityDefinition, ResponseFormat> getCapabilityDefinitionEither = getCapabilityDefinition(capabilityToGet, storedComponent); if (getCapabilityDefinitionEither.isRight()) { return Either.right(getCapabilityDefinitionEither.right().value()); } @@ -395,42 +356,36 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, componentId)); } finally { if (lockResult.isLeft() && lockResult.left().value()) { - graphLockOperation.unlockComponent(storedComponent.getUniqueId(), - NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); + graphLockOperation + .unlockComponent(storedComponent.getUniqueId(), NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); } } } - private Either<CapabilityDefinition, ResponseFormat> getCapabilityDefinition(String capabilityIdToGet, - Component storedComponent) { - List<CapabilityDefinition> capabilityDefinitions = storedComponent.getCapabilities().values() - .stream().flatMap(Collection::stream).collect(Collectors.toList()); + private Either<CapabilityDefinition, ResponseFormat> getCapabilityDefinition(String capabilityIdToGet, Component storedComponent) { + List<CapabilityDefinition> capabilityDefinitions = storedComponent.getCapabilities().values().stream().flatMap(Collection::stream) + .collect(Collectors.toList()); if (capabilityDefinitions.isEmpty()) { - return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, - storedComponent.getUniqueId())); + return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } CapabilityDefinition capabilityDefinitionToReturn; Optional<CapabilityDefinition> capabilityDefinitionOptional = capabilityDefinitions.stream() - .filter(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityIdToGet)).findAny(); + .filter(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityIdToGet)).findAny(); if (capabilityDefinitionOptional.isPresent()) { capabilityDefinitionToReturn = capabilityDefinitionOptional.get(); } else { - return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, - storedComponent.getUniqueId())); + return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } - return Either.left(capabilityDefinitionToReturn); } - public Either<CapabilityDefinition, ResponseFormat> deleteCapability(String componentId, String capabilityIdToDelete, - User user, boolean lock) { + public Either<CapabilityDefinition, ResponseFormat> deleteCapability(String componentId, String capabilityIdToDelete, User user, boolean lock) { validateUserExists(user.getUserId()); Either<Component, ResponseFormat> componentEither = getComponentDetails(componentId); if (componentEither.isRight()) { return Either.right(componentEither.right().value()); } Component storedComponent = componentEither.left().value(); - Either<Boolean, ResponseFormat> lockResult = lockComponentResult(lock, storedComponent, DELETE_CAPABILITIES); if (lockResult.isRight()) { return Either.right(lockResult.right().value()); @@ -443,85 +398,74 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND)); } finally { if (lockResult.isLeft() && lockResult.left().value()) { - graphLockOperation.unlockComponent(storedComponent.getUniqueId(), - NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); + graphLockOperation + .unlockComponent(storedComponent.getUniqueId(), NodeTypeEnum.getByNameIgnoreCase(storedComponent.getComponentType().getValue())); } } } - private Either<CapabilityDefinition, ResponseFormat> deleteCapability(String capabilityIdToDelete, - Component storedComponent) { + private Either<CapabilityDefinition, ResponseFormat> deleteCapability(String capabilityIdToDelete, Component storedComponent) { Map<String, List<CapabilityDefinition>> storedComponentCapabilities = storedComponent.getCapabilities(); if (storedComponentCapabilities.isEmpty()) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } - Either<CapabilityDefinition, ResponseFormat> capabilityDefinitionToDeleteEither = - getAndValidateCapabilitiesToDelete(storedComponent, storedComponentCapabilities, capabilityIdToDelete); - - if(capabilityDefinitionToDeleteEither.isRight()) { + Either<CapabilityDefinition, ResponseFormat> capabilityDefinitionToDeleteEither = getAndValidateCapabilitiesToDelete(storedComponent, + storedComponentCapabilities, capabilityIdToDelete); + if (capabilityDefinitionToDeleteEither.isRight()) { return Either.right(capabilityDefinitionToDeleteEither.right().value()); } - Either<List<CapabilityDefinition>, StorageOperationStatus> result = deleteCapability(storedComponent, - storedComponentCapabilities, capabilityDefinitionToDeleteEither.left().value()); + Either<List<CapabilityDefinition>, StorageOperationStatus> result = deleteCapability(storedComponent, storedComponentCapabilities, + capabilityDefinitionToDeleteEither.left().value()); if (result.isRight()) { janusGraphDao.rollback(); - LOGGER.error("Failed to delete capability from component {}. Response is {}", storedComponent.getName(), - result.right().value()); - return Either.right(componentsUtils.getResponseFormat( - componentsUtils.convertFromStorageResponse(result.right().value(), - storedComponent.getComponentType()))); + LOGGER.error("Failed to delete capability from component {}. Response is {}", storedComponent.getName(), result.right().value()); + return Either.right(componentsUtils + .getResponseFormat(componentsUtils.convertFromStorageResponse(result.right().value(), storedComponent.getComponentType()))); } janusGraphDao.commit(); - return Either.left(capabilityDefinitionToDeleteEither.left().value()); } private Either<CapabilityDefinition, ResponseFormat> getAndValidateCapabilitiesToDelete(Component storedComponent, Map<String, List<CapabilityDefinition>> storedComponentCapabilities, String capabilityIdToDelete) { - - Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream() - .flatMap(Collection::stream).filter(capabilityDefinition -> capabilityDefinition.getUniqueId() - .equals(capabilityIdToDelete)).findAny(); + Optional<CapabilityDefinition> definitionOptional = storedComponentCapabilities.values().stream().flatMap(Collection::stream) + .filter(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityIdToDelete)).findAny(); if (!definitionOptional.isPresent()) { return Either.right(componentsUtils.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, storedComponent.getUniqueId())); } CapabilityDefinition capabilityDefinitionToDelete = definitionOptional.get(); - Boolean isCapabilityUsedInServiceComposition - = isCapabilityUsedInServiceComposition(capabilityDefinitionToDelete, storedComponent); + Boolean isCapabilityUsedInServiceComposition = isCapabilityUsedInServiceComposition(capabilityDefinitionToDelete, storedComponent); if (isCapabilityUsedInServiceComposition) { - LOGGER.error("Capability {} can't be deleted, since it is used in service composition", - capabilityDefinitionToDelete.getUniqueId()); - return Either.right(componentsUtils.getResponseFormat(ActionStatus - .CAPABILITY_DELETION_NOT_ALLOWED_USED_IN_COMPOSITION, capabilityDefinitionToDelete.getName())); + LOGGER.error("Capability {} can't be deleted, since it is used in service composition", capabilityDefinitionToDelete.getUniqueId()); + return Either.right(componentsUtils + .getResponseFormat(ActionStatus.CAPABILITY_DELETION_NOT_ALLOWED_USED_IN_COMPOSITION, capabilityDefinitionToDelete.getName())); } - return Either.left(capabilityDefinitionToDelete); } + private Either<List<CapabilityDefinition>, StorageOperationStatus> deleteCapability(Component storedComponent, Map<String, List<CapabilityDefinition>> storedComponentCapabilities, CapabilityDefinition capabilityDefinitionToDelete) { - - List<CapabilityDefinition> capabilitiesListStoredInComponent = - getCapabilityStoredInComponentByType(capabilityDefinitionToDelete.getType(), storedComponentCapabilities); - capabilitiesListStoredInComponent.removeIf(capabilityDefinition -> - capabilityDefinition.getUniqueId().equals(capabilityDefinitionToDelete.getUniqueId())); + List<CapabilityDefinition> capabilitiesListStoredInComponent = getCapabilityStoredInComponentByType(capabilityDefinitionToDelete.getType(), + storedComponentCapabilities); + capabilitiesListStoredInComponent + .removeIf(capabilityDefinition -> capabilityDefinition.getUniqueId().equals(capabilityDefinitionToDelete.getUniqueId())); Either<List<CapabilityDefinition>, StorageOperationStatus> result; if (capabilitiesListStoredInComponent.isEmpty()) { - StorageOperationStatus operationStatus = capabilitiesOperation.deleteCapabilities(storedComponent, - capabilityDefinitionToDelete.getType()); + StorageOperationStatus operationStatus = capabilitiesOperation + .deleteCapabilities(storedComponent, capabilityDefinitionToDelete.getType()); if (StorageOperationStatus.OK.equals(operationStatus)) { result = Either.left(Collections.singletonList(capabilityDefinitionToDelete)); } else { result = Either.right(operationStatus); } } else { - result = capabilitiesOperation.updateCapabilities(storedComponent.getUniqueId(), - capabilitiesListStoredInComponent); + result = capabilitiesOperation.updateCapabilities(storedComponent.getUniqueId(), capabilitiesListStoredInComponent); } if (result.isLeft()) { StorageOperationStatus deleteStorageOperationStatus = capabilitiesOperation - .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); + .deleteCapabilityProperties(storedComponent, buildCapPropKey(capabilityDefinitionToDelete)); if (deleteStorageOperationStatus != StorageOperationStatus.OK) { result = Either.right(deleteStorageOperationStatus); } @@ -529,17 +473,14 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return result; } - private Either<Component, ResponseFormat> getComponentDetails(String componentId) { ComponentParametersView filter = new ComponentParametersView(true); filter.setIgnoreCapabilities(false); filter.setIgnoreCapabiltyProperties(false); - Either<Component, StorageOperationStatus> componentStorageOperationStatusEither = - toscaOperationFacade.getToscaElement(componentId, filter); + Either<Component, StorageOperationStatus> componentStorageOperationStatusEither = toscaOperationFacade.getToscaElement(componentId, filter); if (componentStorageOperationStatusEither.isRight()) { StorageOperationStatus errorStatus = componentStorageOperationStatusEither.right().value(); - LOGGER.error("Failed to fetch component information by component id {}, Response is {}", - componentId, errorStatus); + LOGGER.error("Failed to fetch component information by component id {}, Response is {}", componentId, errorStatus); return Either.right(componentsUtils.getResponseFormat(componentsUtils.convertFromStorageResponse(errorStatus))); } return Either.left(componentStorageOperationStatusEither.left().value()); @@ -549,7 +490,7 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { if (lock) { try { lockComponent(component.getUniqueId(), component, action); - } catch (ComponentException e){ + } catch (ComponentException e) { LOGGER.debug(FAILED_TO_LOCK_COMPONENT_RESPONSE_IS, component.getName(), e.getMessage()); janusGraphDao.rollback(); throw e; @@ -558,40 +499,41 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { return Either.left(true); } - private List<CapabilityDefinition> getCapabilityStoredInComponentByType(String capabilityType, Map<String, - List<CapabilityDefinition>> capabilities) { + private List<CapabilityDefinition> getCapabilityStoredInComponentByType(String capabilityType, + Map<String, List<CapabilityDefinition>> capabilities) { Optional<Map.Entry<String, List<CapabilityDefinition>>> entryOptional = capabilities.entrySet().stream() - .filter(map -> map.getKey().equals(capabilityType)).findFirst(); + .filter(map -> map.getKey().equals(capabilityType)).findFirst(); return entryOptional.map(Map.Entry::getValue).orElse(Collections.emptyList()); } private CapabilityDefinition initiateNewCapability(Component component, CapabilityDefinition capabilityDefinition) { - if (StringUtils.isEmpty(capabilityDefinition.getUniqueId())) + if (StringUtils.isEmpty(capabilityDefinition.getUniqueId())) { capabilityDefinition.setUniqueId(UUID.randomUUID().toString()); - if (StringUtils.isEmpty(capabilityDefinition.getOwnerId())) + } + if (StringUtils.isEmpty(capabilityDefinition.getOwnerId())) { capabilityDefinition.setOwnerId(component.getUniqueId()); - if (StringUtils.isEmpty(capabilityDefinition.getOwnerName())) + } + if (StringUtils.isEmpty(capabilityDefinition.getOwnerName())) { capabilityDefinition.setOwnerName(component.getName()); + } capabilityDefinition.setLeftOccurrences(capabilityDefinition.getMaxOccurrences()); List<ComponentInstanceProperty> capabilityProperties = capabilityDefinition.getProperties(); initiateProperties(capabilityDefinition, capabilityProperties); return capabilityDefinition; } - private void initiateProperties(CapabilityDefinition capabilityDefinition, - List<ComponentInstanceProperty> capabilityProperties) { + private void initiateProperties(CapabilityDefinition capabilityDefinition, List<ComponentInstanceProperty> capabilityProperties) { if (CollectionUtils.isNotEmpty(capabilityProperties)) { - capabilityProperties.stream().filter(prop -> prop != null && StringUtils.isEmpty(prop.getUniqueId())) - .forEach(propDef -> { - String uid = UniqueIdBuilder.buildRequirementUid(capabilityDefinition.getUniqueId(), propDef.getName()); - propDef.setUniqueId(uid); - propDef.setParentUniqueId(capabilityDefinition.getUniqueId()); - }); + capabilityProperties.stream().filter(prop -> prop != null && StringUtils.isEmpty(prop.getUniqueId())).forEach(propDef -> { + String uid = UniqueIdBuilder.buildRequirementUid(capabilityDefinition.getUniqueId(), propDef.getName()); + propDef.setUniqueId(uid); + propDef.setParentUniqueId(capabilityDefinition.getUniqueId()); + }); } } - private CapabilityDefinition updateCapability(CapabilityDefinition storedCapability, - CapabilityDefinition capabilityToUpdate, Component component) { + private CapabilityDefinition updateCapability(CapabilityDefinition storedCapability, CapabilityDefinition capabilityToUpdate, + Component component) { storedCapability.setName(capabilityToUpdate.getName()); storedCapability.setDescription(capabilityToUpdate.getDescription()); storedCapability.setType(capabilityToUpdate.getType()); @@ -605,48 +547,44 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { } if (!storedCapability.getName().equals(capabilityToUpdate.getName())) { StorageOperationStatus deleteStorageOperationStatus = capabilitiesOperation - .deleteCapabilityProperties(component, buildCapPropKey(storedCapability)); + .deleteCapabilityProperties(component, buildCapPropKey(storedCapability)); if (deleteStorageOperationStatus != StorageOperationStatus.OK) { janusGraphDao.rollback(); } } - return storedCapability; } - private Boolean isCapabilityUsedInServiceComposition(CapabilityDefinition capabilityDefinition, Component component) { - Either<List<Component>, StorageOperationStatus> componentList = toscaOperationFacade - .getParentComponents(component.getUniqueId()); + Either<List<Component>, StorageOperationStatus> componentList = toscaOperationFacade.getParentComponents(component.getUniqueId()); if (componentList.isRight()) { return Boolean.FALSE; } - return componentList.left().value().stream().flatMap(parentComponent -> parentComponent - .getComponentInstancesRelations().stream()).flatMap(requirementCapabilityRelDef -> - requirementCapabilityRelDef.getRelationships().stream()).anyMatch(capabilityRequirementRelationship -> - capabilityRequirementRelationship.getRelation().getCapabilityUid().equals(capabilityDefinition.getUniqueId())); + return componentList.left().value().stream().flatMap(parentComponent -> parentComponent.getComponentInstancesRelations().stream()) + .flatMap(requirementCapabilityRelDef -> requirementCapabilityRelDef.getRelationships().stream()).anyMatch( + capabilityRequirementRelationship -> capabilityRequirementRelationship.getRelation().getCapabilityUid() + .equals(capabilityDefinition.getUniqueId())); } public Either<Map<String, CapabilityTypeDefinition>, ResponseFormat> getAllCapabilityTypes() { - Either<Map<String, CapabilityTypeDefinition>, JanusGraphOperationStatus> capabilityTypeCacheAll = - capabilityTypeOperation.getAllCapabilityTypes(); + Either<Map<String, CapabilityTypeDefinition>, JanusGraphOperationStatus> capabilityTypeCacheAll = capabilityTypeOperation + .getAllCapabilityTypes(); if (capabilityTypeCacheAll.isRight()) { JanusGraphOperationStatus operationStatus = capabilityTypeCacheAll.right().value(); if (JanusGraphOperationStatus.NOT_FOUND == operationStatus) { - BeEcompErrorManager.getInstance().logInternalDataError("FetchCapabilityTypes", - "Capability types are not loaded", BeEcompErrorManager.ErrorSeverity.ERROR); + BeEcompErrorManager.getInstance() + .logInternalDataError("FetchCapabilityTypes", "Capability types are not loaded", BeEcompErrorManager.ErrorSeverity.ERROR); return Either.right(componentsUtils.getResponseFormat(ActionStatus.DATA_TYPE_CANNOT_BE_EMPTY)); } else { - BeEcompErrorManager.getInstance().logInternalFlowError("FetchCapabilityTypes", - "Failed to fetch capability types", BeEcompErrorManager.ErrorSeverity.ERROR); + BeEcompErrorManager.getInstance() + .logInternalFlowError("FetchCapabilityTypes", "Failed to fetch capability types", BeEcompErrorManager.ErrorSeverity.ERROR); return Either.right(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); } } return Either.left(capabilityTypeCacheAll.left().value()); } - private Map<String, MapPropertiesDataDefinition> getCapabilitiesPropertiesDataDefinitionMap( - List<CapabilityDefinition> capabilityDefinitions) { + private Map<String, MapPropertiesDataDefinition> getCapabilitiesPropertiesDataDefinitionMap(List<CapabilityDefinition> capabilityDefinitions) { CapabilityDefinition capabilityDefinitionToAddOrUpdateCapProp = capabilityDefinitions.get(0); List<ComponentInstanceProperty> componentInstanceProperties = null; if (Objects.nonNull(capabilityDefinitionToAddOrUpdateCapProp)) { @@ -664,7 +602,7 @@ public class CapabilitiesBusinessLogic extends BaseBusinessLogic { } private String buildCapPropKey(CapabilityDefinition capabilityDefinitionToAddOrUpdateCapProp) { - return capabilityDefinitionToAddOrUpdateCapProp.getType() + ModelConverter.CAP_PROP_DELIM + - capabilityDefinitionToAddOrUpdateCapProp.getName(); + return capabilityDefinitionToAddOrUpdateCapProp.getType() + ModelConverter.CAP_PROP_DELIM + capabilityDefinitionToAddOrUpdateCapProp + .getName(); } } |