protected static ToscaNode createAndInitializeTOSCANode(TNodeTemplate nodeTemplate) { ToscaNode node = new ToscaNode(); node.setNodeTemplate(nodeTemplate); addTEntityTypes(nodeTemplate.getType(), node, TNodeType.class); return node; }
public static boolean containsPatterns(List<TNodeTemplate> topologyNodes, Map<QName, TNodeType> nodeTypes) { NamespaceManager namespaceManager = RepositoryFactory.getRepository().getNamespaceManager(); return topologyNodes.stream() .anyMatch(nodeTemplate -> { TNodeType tNodeType = nodeTypes.get(nodeTemplate.getType()); boolean isPattern = namespaceManager.isPatternNamespace(tNodeType.getTargetNamespace()); boolean isAnnotatedByPattern = false; if (Objects.nonNull(nodeTemplate.getPolicies())) { isAnnotatedByPattern = nodeTemplate.getPolicies().getPolicy() .stream() .anyMatch(tPolicy -> namespaceManager.isPatternNamespace(tPolicy.getPolicyType().getNamespaceURI())); } return isPattern || isAnnotatedByPattern; }); } }
public static Collection<QName> getArtifactTemplatesOfReferencedImplementationArtifacts(TNodeTemplate nodeTemplate) { List<QName> l = new ArrayList<>(); // IAs may be assigned via node type implementations QName nodeTypeQName = nodeTemplate.getType(); Collection<NodeTypeImplementationId> allNodeTypeImplementations = RepositoryFactory.getRepository().getAllElementsReferencingGivenType(NodeTypeImplementationId.class, nodeTypeQName); for (NodeTypeImplementationId nodeTypeImplementationId : allNodeTypeImplementations) { TImplementationArtifacts implementationArtifacts = RepositoryFactory.getRepository().getElement(nodeTypeImplementationId).getImplementationArtifacts(); Collection<QName> allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(implementationArtifacts); l.addAll(allReferencedArtifactTemplates); } return l; }
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); }
public static Collection<QName> getArtifactTemplatesOfReferencedDeploymentArtifacts(TNodeTemplate nodeTemplate) { List<QName> l = new ArrayList<>(); // DAs may be assigned directly to a node template Collection<QName> allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(nodeTemplate.getDeploymentArtifacts()); l.addAll(allReferencedArtifactTemplates); // DAs may be assigned via node type implementations QName nodeTypeQName = nodeTemplate.getType(); Collection<NodeTypeImplementationId> allNodeTypeImplementations = RepositoryFactory.getRepository().getAllElementsReferencingGivenType(NodeTypeImplementationId.class, nodeTypeQName); for (NodeTypeImplementationId nodeTypeImplementationId : allNodeTypeImplementations) { TDeploymentArtifacts deploymentArtifacts = RepositoryFactory.getRepository().getElement(nodeTypeImplementationId).getDeploymentArtifacts(); allReferencedArtifactTemplates = BackendUtils.getAllReferencedArtifactTemplates(deploymentArtifacts); l.addAll(allReferencedArtifactTemplates); } return l; }
@NonNull public Map<String, TNodeTemplate> convert(org.eclipse.winery.model.tosca.TNodeTemplate node, @NonNull List<org.eclipse.winery.model.tosca.TRelationshipTemplate> rTs) { if (Objects.isNull(node)) return new LinkedHashMap<>(); return Collections.singletonMap( node.getIdFromIdOrNameField(), new TNodeTemplate.Builder( convert( node.getType(), new NodeTypeId(node.getType()) )) .setProperties(convert(node, node.getProperties())) .setRequirements(convert(node.getRequirements())) .addRequirements(rTs.stream() .filter(entry -> Objects.nonNull(entry.getSourceElement()) && entry.getSourceElement().getRef().equals(node)) .map(entry -> new LinkedHashMap.SimpleEntry<>( Optional.ofNullable(entry.getName()).orElse(entry.getId()), new TRequirementAssignment.Builder() .setNode(new QName(entry.getTargetElement().getRef().getId())) .build() )) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) ) .setCapabilities(convert(node.getCapabilities())) .setArtifacts(convert(node.getDeploymentArtifacts())) .build() ); }
public static TDeploymentArtifact getSuitableConcreteDA(TDeploymentArtifact abstractDeploymentArtifact, TNodeTemplate nodeTemplate) { TDeploymentArtifact concreteDA = null; if (nodeTemplate.getDeploymentArtifacts() != null) { List<TDeploymentArtifact> concreteDeploymentArtifacts = nodeTemplate.getDeploymentArtifacts().getDeploymentArtifact(); concreteDA = getConcreteDA(abstractDeploymentArtifact, concreteDeploymentArtifacts); } if (concreteDA == null) { List<TNodeTypeImplementation> nodeTypeImplementations = getmatchingNodeTypeImplementations(nodeTemplate.getType()); for (TNodeTypeImplementation nodeTypeImplementation : nodeTypeImplementations) { if (nodeTypeImplementation.getDeploymentArtifacts() != null) { List<TDeploymentArtifact> deploymentArtifacts = nodeTypeImplementation.getDeploymentArtifacts().getDeploymentArtifact(); concreteDA = getConcreteDA(abstractDeploymentArtifact, deploymentArtifacts); if (concreteDA != null) { return concreteDA; } } } } else { return concreteDA; } return null; }
NodeTypeId nodeTypeId = new NodeTypeId(nodeTemplate.getType()); TNodeType nodeType; try {
/** * @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; }