X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fcomponents%2Fproperty%2FPropertyDeclarationOrchestrator.java;h=e5367c4e3da07067aa96a11ed9821d2e3616c14e;hb=b1fc8c337d3b9750eff6e62b626c0bc3a1467a88;hp=c60c8f21c25e69c0117766bf9924188f0e71420e;hpb=16a9fce0e104a38371a9e5a567ec611ae3fc7f33;p=sdc.git diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/property/PropertyDeclarationOrchestrator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/property/PropertyDeclarationOrchestrator.java index c60c8f21c2..e5367c4e3d 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/property/PropertyDeclarationOrchestrator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/property/PropertyDeclarationOrchestrator.java @@ -7,9 +7,9 @@ * 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 - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,10 +17,16 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.property; +import static org.apache.commons.collections.MapUtils.isNotEmpty; + import fj.data.Either; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.tuple.Pair; import org.openecomp.sdc.be.components.property.propertytopolicydeclarators.ComponentInstancePropertyToPolicyDeclarator; @@ -34,15 +40,7 @@ import org.openecomp.sdc.be.model.PolicyDefinition; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.common.log.wrappers.Logger; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -import static org.apache.commons.collections.MapUtils.isNotEmpty; - -@org.springframework.stereotype.Component +@org.springframework.stereotype.Component("propertyDeclarationOrchestrator") public class PropertyDeclarationOrchestrator { private static final Logger log = Logger.getLogger(PropertyDeclarationOrchestrator.class); @@ -57,10 +55,11 @@ public class PropertyDeclarationOrchestrator { private ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator; public PropertyDeclarationOrchestrator(ComponentInstanceInputPropertyDeclarator componentInstanceInputPropertyDeclarator, - ComponentInstancePropertyDeclarator componentInstancePropertyDeclarator, PolicyPropertyDeclarator policyPropertyDeclarator, - GroupPropertyDeclarator groupPropertyDeclarator, ComponentPropertyDeclarator servicePropertyDeclarator, - ComponentPropertyToPolicyDeclarator componentPropertyToPolicyDeclarator, - ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator) { + ComponentInstancePropertyDeclarator componentInstancePropertyDeclarator, + PolicyPropertyDeclarator policyPropertyDeclarator, GroupPropertyDeclarator groupPropertyDeclarator, + ComponentPropertyDeclarator servicePropertyDeclarator, + ComponentPropertyToPolicyDeclarator componentPropertyToPolicyDeclarator, + ComponentInstancePropertyToPolicyDeclarator componentInstancePropertyToPolicyDeclarator) { this.componentInstanceInputPropertyDeclarator = componentInstanceInputPropertyDeclarator; this.componentInstancePropertyDeclarator = componentInstancePropertyDeclarator; this.policyPropertyDeclarator = policyPropertyDeclarator; @@ -68,11 +67,14 @@ public class PropertyDeclarationOrchestrator { this.servicePropertyDeclarator = servicePropertyDeclarator; this.componentPropertyToPolicyDeclarator = componentPropertyToPolicyDeclarator; this.componentInstancePropertyToPolicyDeclarator = componentInstancePropertyToPolicyDeclarator; - propertyDeclaratorsToInput = Arrays.asList(componentInstanceInputPropertyDeclarator, componentInstancePropertyDeclarator, policyPropertyDeclarator, groupPropertyDeclarator, servicePropertyDeclarator); + propertyDeclaratorsToInput = Arrays + .asList(componentInstanceInputPropertyDeclarator, componentInstancePropertyDeclarator, policyPropertyDeclarator, groupPropertyDeclarator, + servicePropertyDeclarator); propertyDeclaratorsToPolicy = Arrays.asList(componentPropertyToPolicyDeclarator, componentInstancePropertyToPolicyDeclarator); } - public Either, StorageOperationStatus> declarePropertiesToInputs(Component component, ComponentInstInputsMap componentInstInputsMap) { + public Either, StorageOperationStatus> declarePropertiesToInputs(Component component, + ComponentInstInputsMap componentInstInputsMap) { updatePropertiesConstraints(component, componentInstInputsMap); PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap); Pair> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare(); @@ -80,63 +82,63 @@ public class PropertyDeclarationOrchestrator { } private void updatePropertiesConstraints(Component component, ComponentInstInputsMap componentInstInputsMap) { - componentInstInputsMap.getComponentInstanceProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesProperties(), k, v)); - componentInstInputsMap.getComponentInstanceInputsMap().forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesInputs(), k, v)); + componentInstInputsMap.getComponentInstanceProperties() + .forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesProperties(), k, v)); + componentInstInputsMap.getComponentInstanceInputsMap() + .forEach((k, v) -> updatePropsConstraints(component.safeGetComponentInstancesInputs(), k, v)); componentInstInputsMap.getGroupProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetPolicyProperties(), k, v)); componentInstInputsMap.getPolicyProperties().forEach((k, v) -> updatePropsConstraints(component.safeGetGroupsProperties(), k, v)); } - public Either, StorageOperationStatus> declarePropertiesToPolicies(Component component, ComponentInstInputsMap componentInstInputsMap) { + public Either, StorageOperationStatus> declarePropertiesToPolicies(Component component, + ComponentInstInputsMap componentInstInputsMap) { PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap); Pair> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare(); return propertyDeclarator.declarePropertiesAsPolicies(component, propsToDeclare.getLeft(), propsToDeclare.getRight()); } - public Either declarePropertiesToListInput(Component component, ComponentInstInputsMap componentInstInputsMap, InputDefinition input) { + public Either declarePropertiesToListInput(Component component, + ComponentInstInputsMap componentInstInputsMap, + InputDefinition input) { PropertyDeclarator propertyDeclarator = getPropertyDeclarator(componentInstInputsMap); Pair> propsToDeclare = componentInstInputsMap.resolvePropertiesToDeclare(); log.debug("#declarePropertiesToInputs: componentId={}, propOwnerId={}", component.getUniqueId(), propsToDeclare.getLeft()); return propertyDeclarator.declarePropertiesAsListInput(component, propsToDeclare.getLeft(), propsToDeclare.getRight(), input); } - private void updatePropsConstraints(Map> instancesProperties , String ownerId, List inputs) { - Optional> propertiesOpt = instancesProperties.entrySet() - .stream() - .filter(e -> e.getKey().equals(ownerId)) - .map(Map.Entry::getValue) - .findFirst(); - if(propertiesOpt.isPresent()){ - Map instProps = propertiesOpt.get() - .stream() - .collect(Collectors.toMap(PropertyDataDefinition::getName, p->p)); - inputs.stream() - .filter(i->instProps.containsKey(i.getName())) - .forEach(i->updatePropConstraints(i, instProps.get(i.getName()))); - + private void updatePropsConstraints(Map> instancesProperties, String ownerId, + List inputs) { + Optional> propertiesOpt = instancesProperties.entrySet().stream().filter(e -> e.getKey().equals(ownerId)).map(Map.Entry::getValue) + .findFirst(); + if (propertiesOpt.isPresent()) { + Map instProps = propertiesOpt.get().stream() + .collect(Collectors.toMap(PropertyDataDefinition::getName, p -> p)); + inputs.stream().filter(i -> instProps.containsKey(i.getName())).forEach(i -> updatePropConstraints(i, instProps.get(i.getName()))); } } private void updatePropConstraints(PropertyDataDefinition input, PropertyDataDefinition property) { - if(CollectionUtils.isNotEmpty(property.getPropertyConstraints())){ + if (CollectionUtils.isNotEmpty(property.getPropertyConstraints())) { input.setPropertyConstraints(property.getPropertyConstraints()); - } else if(property.getSchemaProperty() != null && CollectionUtils.isNotEmpty(property.getSchemaProperty().getPropertyConstraints())){ + } else if (property.getSchemaProperty() != null && CollectionUtils.isNotEmpty(property.getSchemaProperty().getPropertyConstraints())) { input.setPropertyConstraints(property.getSchemaProperty().getPropertyConstraints()); } } - public StorageOperationStatus unDeclarePropertiesAsInputs(Component component, InputDefinition inputToDelete) { - log.debug("#unDeclarePropertiesAsInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), component.getUniqueId()); + log.debug("#unDeclarePropertiesAsInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), + component.getUniqueId()); for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToInput) { StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsInputs(component, inputToDelete); if (StorageOperationStatus.OK != storageOperationStatus) { - log.debug("#unDeclarePropertiesAsInputs - failed to remove input declaration for input {} on component {}. reason {}", inputToDelete.getName(), component.getUniqueId(), storageOperationStatus); + log.debug("#unDeclarePropertiesAsInputs - failed to remove input declaration for input {} on component {}. reason {}", + inputToDelete.getName(), component.getUniqueId(), storageOperationStatus); return storageOperationStatus; } } return StorageOperationStatus.OK; - } + /** * Un declare properties declared as list type input * @@ -145,16 +147,17 @@ public class PropertyDeclarationOrchestrator { * @return */ public StorageOperationStatus unDeclarePropertiesAsListInputs(Component component, InputDefinition inputToDelete) { - log.debug("#unDeclarePropertiesAsListInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), component.getUniqueId()); + log.debug("#unDeclarePropertiesAsListInputs - removing input declaration for input {} on component {}", inputToDelete.getName(), + component.getUniqueId()); for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToInput) { StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsListInputs(component, inputToDelete); if (StorageOperationStatus.OK != storageOperationStatus) { - log.debug("#unDeclarePropertiesAsListInputs - failed to remove input declaration for input {} on component {}. reason {}", inputToDelete.getName(), component.getUniqueId(), storageOperationStatus); + log.debug("#unDeclarePropertiesAsListInputs - failed to remove input declaration for input {} on component {}. reason {}", + inputToDelete.getName(), component.getUniqueId(), storageOperationStatus); return storageOperationStatus; } } return StorageOperationStatus.OK; - } /** @@ -169,20 +172,17 @@ public class PropertyDeclarationOrchestrator { } public StorageOperationStatus unDeclarePropertiesAsPolicies(Component component, PolicyDefinition policyToDelete) { - log.debug("#unDeclarePropertiesAsInputs - removing policy declaration for input {} on component {}", policyToDelete - .getName(), component.getUniqueId()); - for(PropertyDeclarator propertyDeclarator : propertyDeclaratorsToPolicy) { - StorageOperationStatus storageOperationStatus = - propertyDeclarator.unDeclarePropertiesAsPolicies(component, policyToDelete); + log.debug("#unDeclarePropertiesAsInputs - removing policy declaration for input {} on component {}", policyToDelete.getName(), + component.getUniqueId()); + for (PropertyDeclarator propertyDeclarator : propertyDeclaratorsToPolicy) { + StorageOperationStatus storageOperationStatus = propertyDeclarator.unDeclarePropertiesAsPolicies(component, policyToDelete); if (StorageOperationStatus.OK != storageOperationStatus) { - log.debug("#unDeclarePropertiesAsInputs - failed to remove policy declaration for policy {} on component {}. reason {}", policyToDelete - .getName(), component.getUniqueId(), storageOperationStatus); + log.debug("#unDeclarePropertiesAsInputs - failed to remove policy declaration for policy {} on component {}. reason {}", + policyToDelete.getName(), component.getUniqueId(), storageOperationStatus); return storageOperationStatus; } } - return StorageOperationStatus.OK; - } private PropertyDeclarator getPropertyDeclarator(ComponentInstInputsMap componentInstInputsMap) { @@ -198,17 +198,15 @@ public class PropertyDeclarationOrchestrator { if (isNotEmpty(componentInstInputsMap.getGroupProperties())) { return groupPropertyDeclarator; } - if(isNotEmpty(componentInstInputsMap.getServiceProperties())) { + if (isNotEmpty(componentInstInputsMap.getServiceProperties())) { return servicePropertyDeclarator; } - if(isNotEmpty(componentInstInputsMap.getComponentPropertiesToPolicies())) { + if (isNotEmpty(componentInstInputsMap.getComponentPropertiesToPolicies())) { return componentPropertyToPolicyDeclarator; } - if(isNotEmpty(componentInstInputsMap.getComponentInstancePropertiesToPolicies())) { + if (isNotEmpty(componentInstInputsMap.getComponentInstancePropertiesToPolicies())) { return componentInstancePropertyToPolicyDeclarator; } throw new IllegalStateException("there are no properties selected for declaration"); - } - }