private void updateTopology(TTopologyTemplate topologyTemplate, Map<TNodeTemplate, TNodeType> nodeTemplateReplacementMap, Map<TRelationshipTemplate, TRelationshipType> relationshipTemplateReplacementMap) { Map<TNodeTemplate, TServiceTemplate> nodeTemplateToBeSubstitutedWithTopology = new HashMap<>(); topologyTemplate.getNodeTemplates() .forEach(tNodeTemplate -> { TServiceTemplate serviceTemplate = this.nodeTypeSubstitutableWithServiceTemplate.get(tNodeTemplate.getType()); if (Objects.nonNull(serviceTemplate)) { // We need to replace the Node Template with the serviceTemplate but we cannot do that here // -> save it for later processing nodeTemplateToBeSubstitutedWithTopology.put(tNodeTemplate, serviceTemplate); } else { // In case of simple NodeTemplate substitution // -> everything is inherited -> there is no need to change anything else TNodeType replacementType = nodeTemplateReplacementMap.get(tNodeTemplate); if (Objects.nonNull(replacementType)) { QName qName = new QName(replacementType.getTargetNamespace(), replacementType.getIdFromIdOrNameField()); tNodeTemplate.setType(qName); } } }); topologyTemplate.getRelationshipTemplates() .forEach(tRelationshipTemplate -> { TRelationshipType tRelationshipType = relationshipTemplateReplacementMap.get(tRelationshipTemplate); if (Objects.nonNull(tRelationshipType)) { QName qName = new QName(tRelationshipType.getTargetNamespace(), tRelationshipType.getIdFromIdOrNameField()); tRelationshipTemplate.setType(qName); } }); replaceNodeTemplateWithServiceTemplate(topologyTemplate, nodeTemplateToBeSubstitutedWithTopology); }
nodeTemplate.setType(new QName(nodeType.getTargetNamespace(), nodeType.getName()));
/** * @param nodeTemplate which should be cloned * @return copy of nodeTemplate */ public static TNodeTemplate clone(TNodeTemplate nodeTemplate) { TNodeTemplate nodeTemplateClone = new TNodeTemplate(); nodeTemplateClone.setType(nodeTemplate.getType()); nodeTemplateClone.setId(nodeTemplate.getId()); nodeTemplateClone.setDeploymentArtifacts(nodeTemplate.getDeploymentArtifacts()); // returns 1 if null -> !original.equals(cloned) nodeTemplateClone.setMaxInstances(nodeTemplate.getMaxInstances()); nodeTemplateClone.setMinInstances(nodeTemplate.getMinInstances()); nodeTemplateClone.setName(nodeTemplate.getName()); nodeTemplateClone.setPolicies(nodeTemplate.getPolicies()); nodeTemplateClone.setRequirements(nodeTemplate.getRequirements()); nodeTemplateClone.setCapabilities(nodeTemplate.getCapabilities()); nodeTemplateClone.setProperties(nodeTemplate.getProperties()); nodeTemplateClone.setPropertyConstraints(nodeTemplate.getPropertyConstraints()); nodeTemplateClone.setX(nodeTemplate.getX()); nodeTemplateClone.setY(nodeTemplate.getY()); if (ModelUtilities.getTargetLabel(nodeTemplate).isPresent()) { ModelUtilities.setTargetLabel(nodeTemplateClone, ModelUtilities.getTargetLabel(nodeTemplate).get()); } return nodeTemplateClone; }