X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Ftosca%2FToscaExportHandler.java;h=fa7d2a0d83ec6bc3a674351a11cd6b46f6ce8301;hb=216ea4998de9ae4ee603d7f8f5f6725b218ca710;hp=4b8249823ece3358450fbf9fca66b35c31fa6bdb;hpb=8183ade590e367f28e13484201d2c9526be221dc;p=sdc.git diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java index 4b8249823e..fa7d2a0d83 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/ToscaExportHandler.java @@ -282,7 +282,6 @@ public class ToscaExportHandler { representer.addClassTag(toscaTemplate.getClass(), Tag.MAP); representer.setPropertyUtils(new UnsortedPropertyUtils()); - Yaml yaml = new Yaml(representer, options); String yamlAsString = yaml.dumpAsMap(toscaTemplate); String sb = getConfiguration().getHeatEnvArtifactHeader() @@ -347,7 +346,8 @@ public class ToscaExportHandler { .collect(Collectors.toMap( PropertyDataDefinition::getName, s -> propertyConvertor.convertProperty(dataTypes, s, PropertyType.PROPERTY), - (toscaPropertyTobeValidated, toscaProperty) -> validateToscaProperty((List) dataTypeDefinition, toscaPropertyTobeValidated, + (toscaPropertyTobeValidated, toscaProperty) -> validateToscaProperty((List) dataTypeDefinition, + toscaPropertyTobeValidated, toscaProperty) ))); } @@ -525,9 +525,11 @@ public class ToscaExportHandler { } private boolean doNotExtendBaseType(final Component component) { - final Map serviceNodeTypesConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getServiceBaseNodeTypes(); + final Map serviceNodeTypesConfig = ConfigurationManager.getConfigurationManager().getConfiguration() + .getServiceBaseNodeTypes(); List categories = component.getCategories(); - if (CollectionUtils.isNotEmpty(categories) && MapUtils.isNotEmpty(serviceNodeTypesConfig) && serviceNodeTypesConfig.get(categories.get(0).getName()) != null) { + if (CollectionUtils.isNotEmpty(categories) && MapUtils.isNotEmpty(serviceNodeTypesConfig) + && serviceNodeTypesConfig.get(categories.get(0).getName()) != null) { return serviceNodeTypesConfig.get(categories.get(0).getName()).isDoNotExtendBaseType(); } return false; @@ -555,12 +557,12 @@ public class ToscaExportHandler { } } - private Map convertMetadata(Component component) { + private Map convertMetadata(Component component) { return convertMetadata(component, false, null); } - private Map convertMetadata(Component component, boolean isInstance, ComponentInstance componentInstance) { - Map toscaMetadata = new LinkedHashMap<>(); + private Map convertMetadata(Component component, boolean isInstance, ComponentInstance componentInstance) { + Map toscaMetadata = new LinkedHashMap<>(); toscaMetadata.put(convertMetadataKey(JsonPresentationFields.INVARIANT_UUID), component.getInvariantUUID()); toscaMetadata.put(JsonPresentationFields.UUID.getPresentation(), component.getUUID()); toscaMetadata @@ -604,6 +606,7 @@ public class ToscaExportHandler { } toscaMetadata.put(JsonPresentationFields.RESOURCE_VENDOR_RELEASE.getPresentation(), resource.getVendorRelease()); toscaMetadata.put(JsonPresentationFields.RESOURCE_VENDOR_MODEL_NUMBER.getPresentation(), resource.getResourceVendorModelNumber()); + toscaMetadata.put(resource.isTopologyTemplate() ? JsonPresentationFields.TEMPLATE_VERSION.getPresentation() : JsonPresentationFields.VERSION.getPresentation(), resource.getVersion()); break; case SERVICE: Service service = (Service) component; @@ -612,12 +615,11 @@ public class ToscaExportHandler { toscaMetadata.put(JsonPresentationFields.SERVICE_ROLE.getPresentation(), service.getServiceRole()); toscaMetadata.put(JsonPresentationFields.SERVICE_FUNCTION.getPresentation(), service.getServiceFunction()); toscaMetadata.put(JsonPresentationFields.ENVIRONMENT_CONTEXT.getPresentation(), service.getEnvironmentContext()); + toscaMetadata.put(JsonPresentationFields.TEMPLATE_VERSION.getPresentation(), service.getVersion()); toscaMetadata.put(JsonPresentationFields.INSTANTIATION_TYPE.getPresentation(), service.getEnvironmentContext() == null ? StringUtils.EMPTY : service.getInstantiationType()); if (!isInstance) { - // DE268546 - toscaMetadata.put(JsonPresentationFields.ECOMP_GENERATED_NAMING.getPresentation(), service.isEcompGeneratedNaming().toString()); - toscaMetadata.put(JsonPresentationFields.ECOMP_GENERATED_NAMING.getPresentation(), service.isEcompGeneratedNaming().toString()); + toscaMetadata.put(JsonPresentationFields.ECOMP_GENERATED_NAMING.getPresentation(), service.isEcompGeneratedNaming()); toscaMetadata.put(JsonPresentationFields.NAMING_POLICY.getPresentation(), service.getNamingPolicy()); } break; @@ -1413,7 +1415,7 @@ public class ToscaExportHandler { try { final List> toscaRequirements = buildRequirements(component, componentInstance, requirementDefinitionList, originComponent, componentCache); - if (!toscaRequirements.isEmpty()) { + if (CollectionUtils.isNotEmpty(toscaRequirements)) { nodeTypeTemplate.setRequirements(toscaRequirements); } } catch (final Exception e) { @@ -1437,7 +1439,9 @@ public class ToscaExportHandler { for (RequirementCapabilityRelDef relationshipDefinition : filteredRelations) { final Map toscaTemplateRequirementMap = buildRequirement(componentInstance, originComponent, component.getComponentInstances(), relationshipDefinition, componentCache); - toscaRequirements.add(toscaTemplateRequirementMap); + if (MapUtils.isNotEmpty(toscaTemplateRequirementMap)) { + toscaRequirements.add(toscaTemplateRequirementMap); + } } return toscaRequirements; @@ -1457,12 +1461,13 @@ public class ToscaExportHandler { throws ToscaExportException { final Map> reqMap = fromOriginComponent.getRequirements(); - final CapabilityRequirementRelationship capabilityRequirementRelationship = relationshipDefinition - .getRelationships().get(0); + if (MapUtils.isEmpty(reqMap)) { + return new HashMap<>(); + } + final CapabilityRequirementRelationship capabilityRequirementRelationship = relationshipDefinition.getRelationships().get(0); final RelationshipInfo relationshipInfo = capabilityRequirementRelationship.getRelation(); - final ComponentInstance toInstance = instancesList.stream() - .filter(i -> relationshipDefinition.getToNode().equals(i.getUniqueId())) + final ComponentInstance toInstance = instancesList.stream().filter(i -> relationshipDefinition.getToNode().equals(i.getUniqueId())) .findFirst().orElse(null); if (toInstance == null) { final String errorMsg = String @@ -1471,12 +1476,10 @@ public class ToscaExportHandler { log.debug(errorMsg); throw new ToscaExportException(errorMsg); } - final Optional reqOpt = - findRequirement(fromOriginComponent, reqMap, relationshipInfo, fromInstance.getUniqueId()); + final Optional reqOpt = findRequirement(fromOriginComponent, reqMap, relationshipInfo, fromInstance.getUniqueId()); if (reqOpt.isEmpty()) { - final String errorMsg = String - .format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s", - relationshipInfo.getRequirementUid(), fromOriginComponent.getUniqueId()); + final String errorMsg = String.format("Failed to find a requirement with uniqueId %s on a component with uniqueId %s", + relationshipInfo.getRequirementUid(), fromOriginComponent.getUniqueId()); log.debug(errorMsg); throw new ToscaExportException(errorMsg); } @@ -1488,8 +1491,7 @@ public class ToscaExportHandler { toscaOperationFacade.getToscaElement(toInstance.getActualComponentUid(), filter); if (getOriginRes.isRight()) { final String errorMsg = String.format( - "Failed to build substituted name for the requirement %s. " - + "Failed to get an origin component with uniqueId %s", + "Failed to build substituted name for the requirement %s. Failed to get an origin component with uniqueId %s", reqOpt.get().getName(), toInstance.getActualComponentUid()); log.debug(errorMsg); throw new ToscaExportException(errorMsg); @@ -1500,9 +1502,8 @@ public class ToscaExportHandler { if (capOpt.isEmpty()) { capOpt = findCapability(relationshipInfo, toOriginComponent, fromOriginComponent, reqOpt.get()); if (capOpt.isEmpty()) { - final String errorMsg = String - .format("Failed to find a capability with name %s on a component with uniqueId %s", - relationshipInfo.getCapability(), fromOriginComponent.getUniqueId()); + final String errorMsg = String.format("Failed to find a capability with name %s on a component with uniqueId %s", + relationshipInfo.getCapability(), fromOriginComponent.getUniqueId()); log.debug(errorMsg); throw new ToscaExportException(errorMsg); } @@ -1522,7 +1523,7 @@ public class ToscaExportHandler { RequirementDefinition requirement) { Optional cap = toOriginComponent.getCapabilities().get(requirement.getCapability()) .stream().filter(c -> c.getType().equals(requirement.getCapability())).findFirst(); - if (!cap.isPresent()) { + if (cap.isEmpty()) { log.debug("Failed to find a capability with name {} on a component with uniqueId {}", reqAndRelationshipPair.getCapability(), fromOriginComponent.getUniqueId()); } @@ -1579,10 +1580,9 @@ public class ToscaExportHandler { Map> reqMap, RelationshipInfo reqAndRelationshipPair, String fromInstanceId) { - for (List reqList : reqMap.values()) { - Optional reqOpt = reqList.stream().filter( - r -> isRequirementBelongToRelation(fromOriginComponent, reqAndRelationshipPair, r, fromInstanceId)) - .findFirst(); + for (final List reqList : reqMap.values()) { + final Optional reqOpt = reqList.stream() + .filter(r -> isRequirementBelongToRelation(fromOriginComponent, reqAndRelationshipPair, r, fromInstanceId)).findFirst(); if (reqOpt.isPresent()) { return reqOpt; } @@ -1778,30 +1778,38 @@ public class ToscaExportHandler { if (((List) filterConstraint.getValue()).get(0) instanceof ToscaFunction) { List toscaFunctionList = new ArrayList<>(); ((List) filterConstraint.getValue()).forEach(toscaFunctionValue -> toscaFunctionList.add( - ((ToscaFunction) toscaFunctionValue).getJsonObjectValue())); + ((ToscaFunction) toscaFunctionValue).getJsonObjectValue())); return Map.of(filterConstraint.getOperator().getType(), toscaFunctionList); } } if (doesTypeNeedConvertingToIntOrFloat(filterConstraint.getOriginalType(), filterConstraint.getValue())) { ToscaType toscaType = ToscaType.getToscaType( - filterConstraint.getValue() instanceof List ? ToscaType.LIST.getType() : filterConstraint.getOriginalType()); + filterConstraint.getValue() instanceof List ? ToscaType.LIST.getType() : filterConstraint.getOriginalType()); filterConstraint.setValue(toscaType.convert(String.valueOf(filterConstraint.getValue()))); + } else if (ConstraintType.LENGTH.getType().equals(filterConstraint.getOperator().getType()) || + ConstraintType.MIN_LENGTH.getType().equals(filterConstraint.getOperator().getType()) || + ConstraintType.MAX_LENGTH.getType().equals(filterConstraint.getOperator().getType())) { + filterConstraint.setValue(Integer.valueOf(String.valueOf(filterConstraint.getValue()))); } - else if (ConstraintType.LENGTH.getType().equals(filterConstraint.getOperator().getType()) || - ConstraintType.MIN_LENGTH.getType().equals(filterConstraint.getOperator().getType()) || - ConstraintType.MAX_LENGTH.getType().equals(filterConstraint.getOperator().getType())) { - filterConstraint.setValue(Integer.valueOf(String.valueOf(filterConstraint.getValue()))); + if (doesTypeNeedConvertingToBoolean(filterConstraint.getOriginalType())) { + filterConstraint.setValue(ToscaType.getToscaType(filterConstraint.getOriginalType()).convert( + String.valueOf(filterConstraint.getValue()))); } return Map.of(filterConstraint.getOperator().getType(), filterConstraint.getValue()); } private static boolean doesTypeNeedConvertingToIntOrFloat(String propertyType, Object value) { - if (value instanceof List && ((List) value).get(0) instanceof LinkedHashMap && ((LinkedHashMap) ((List) value).get(0)).get("type") != null ) { + if (value instanceof List && ((List) value).get(0) instanceof LinkedHashMap + && ((LinkedHashMap) ((List) value).get(0)).get("type") != null) { return false; } return ToscaType.INTEGER.getType().equals(propertyType) || ToscaType.FLOAT.getType().equals(propertyType); } + private static boolean doesTypeNeedConvertingToBoolean(String propertyType) { + return ToscaType.BOOLEAN.getType().equals(propertyType); + } + private Map buildSubstitutionMappingPropertyMapping(final Component component) { if (component == null || CollectionUtils.isEmpty(component.getInputs())) { return Collections.emptyMap();