private static void refreshNodeTemplateNameInRelationships(String oldNodeTemplateName, String newNodeTemplateName, Map<String, RelationshipTemplate> relationshipTemplates) { Map<String, String> updatedKeys = Maps.newHashMap(); for (Map.Entry<String, RelationshipTemplate> relationshipTemplateEntry : relationshipTemplates.entrySet()) { String relationshipTemplateId = relationshipTemplateEntry.getKey(); RelationshipTemplate relationshipTemplate = relationshipTemplateEntry.getValue(); if (relationshipTemplate.getTarget().equals(oldNodeTemplateName)) { relationshipTemplate.setTarget(newNodeTemplateName); String formatedOldNodeName = getRelationShipName(relationshipTemplate.getType(), oldNodeTemplateName); // if the id/name of the relationship is auto-generated we should update it also as auto-generation is <typeName+targetId> if (relationshipTemplateId.equals(formatedOldNodeName)) { // check that the new name is not already used (so we won't override another relationship)... String validNewRelationshipTemplateId = getNexAvailableName(getRelationShipName(relationshipTemplate.getType(), newNodeTemplateName), "", relationshipTemplates.keySet()); updatedKeys.put(relationshipTemplateId, validNewRelationshipTemplateId); } } } // update the relationship keys if any has been impacted for (Map.Entry<String, String> updateKeyEntry : updatedKeys.entrySet()) { RelationshipTemplate relationshipTemplate = relationshipTemplates.remove(updateKeyEntry.getKey()); relationshipTemplates.put(updateKeyEntry.getValue(), relationshipTemplate); } }
SubstitutionTarget st = compositionCouple.child.getSubstitutionMapping().getCapabilities() .get(relationshipTemplate.getTargetedCapabilityName()); relationshipTemplate.setTarget(st.getNodeTemplateName()); relationshipTemplate.setTargetedCapabilityName(st.getTargetId());
relationshipTemplate.setTarget(danglingTemplateName);
/** * Discard all relationship targeting an "external" node. External here in terms of the hostedOn hierarchy * Copy the valid ones * * @param nodeName * @param validTargets A map of oldNodeName -> duplicatedNodeName, we should keep relationships targeting one of these nodes. */ private void copyAndCleanRelationships(String nodeName, Map<String, String> validTargets, Map<String, NodeTemplate> nodeTemplates, TopologyContext topologyContext) { NodeTemplate nodeTemplate = nodeTemplates.get(nodeName); if (MapUtils.isNotEmpty(nodeTemplate.getRelationships())) { Map<String, RelationshipTemplate> relationships = nodeTemplate.getRelationships(); Set<String> keys = Sets.newHashSet(relationships.keySet()); for (String key : keys) { RelationshipTemplate rel = relationships.remove(key); // check if the target is from the valids one // If so, then rename it, its target and keep it if (validTargets.containsKey(rel.getTarget())) { rel.setName(copyName(rel.getName(), relationships.keySet())); rel.setTarget(validTargets.get(rel.getTarget())); relationships.put(rel.getName(), rel); workflowBuilderService.addRelationship(topologyContext, nodeName, rel.getName()); } } if (relationships.isEmpty()) { nodeTemplate.setRelationships(null); } } }
relationshipTemplate.setTarget(newName);
relationshipTemplate.setTarget(operation.getTarget()); relationshipTemplate.setTargetedCapabilityName(operation.getTargetedCapabilityName()); relationshipTemplate.setRequirementName(operation.getRequirementName());