public static TCapability resolveCapability(TServiceTemplate serviceTemplate, String reference) { TCapability resolved = null; for (TEntityTemplate tmpl : serviceTemplate.getTopologyTemplate().getNodeTemplateOrRelationshipTemplate()) { if (tmpl instanceof TNodeTemplate) { TNodeTemplate n = (TNodeTemplate) tmpl; Capabilities capabilities = n.getCapabilities(); if (capabilities != null) { for (TCapability cap : n.getCapabilities().getCapability()) { if (cap.getId().equals(reference)) { resolved = cap; } } } } } return resolved; }
/** * Pointing to a concrete node template has to be done by putting this node template into a separeate namespace <p> * The given targetLocation is appended to {@see NS_NAME_START} to gain the namespace. All NodeTemplates in this * namespace and all "lower" namespaces (e.g., starting with that string) are returned. * * @return All node templates available for the given targetLocation. */ public List<TTopologyTemplate> getAllTopologyFragmentsForLocationAndOfferingCapability(String targetLocation, TRequirement requirement) { QName reqTypeQName = requirement.getType(); RequirementTypeId reqTypeId = new RequirementTypeId(reqTypeQName); QName requiredCapabilityType = RepositoryFactory.getRepository().getElement(reqTypeId).getRequiredCapabilityType(); return getAllTopologyFragmentsForLocation(targetLocation).stream() .filter(tf -> { Optional<TNodeTemplate> nodeTemplate = ModelUtilities.getAllNodeTemplates(tf).stream() .filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream() .anyMatch(cap -> cap.getType().equals(requiredCapabilityType)) ).findAny(); if (nodeTemplate.isPresent()) { return true; } else { return false; } }) .collect(Collectors.toList()); }
private static void collectIdsOfExistingTopologyElements(TTopologyTemplate topologyTemplateB, Map<String, String> idMapping) { // collect existing node & relationship template ids topologyTemplateB.getNodeTemplateOrRelationshipTemplate() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId())); // collect existing requirement ids topologyTemplateB.getNodeTemplates().stream() .filter(nt -> nt.getRequirements() != null) .forEach(nt -> nt.getRequirements().getRequirement() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId()))); //collect existing capability ids topologyTemplateB.getNodeTemplates().stream() .filter(nt -> nt.getCapabilities() != null) .forEach(nt -> nt.getCapabilities().getCapability() // the existing ids are left unchanged .forEach(x -> idMapping.put(x.getId(), x.getId()))); }
QName requiredCapTypeQName = getRequiredCapabilityTypeQNameOfRequirement(requirement); List<TNodeTemplate> nodesWithMatchingCapability = topologyTemplate.getNodeTemplates().stream() .filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream() .anyMatch(c -> c.getType().equals(requiredCapTypeQName))) .collect(Collectors.toList()); TCapability matchingCapability = nodesWithMatchingCapability.get(0).getCapabilities().getCapability() .stream().filter(c -> c.getType().equals(requiredCapTypeQName)).findFirst().get(); TRelationshipType matchingRelationshipType =
TCapability targetElement = (TCapability) relationshipTemplate.getTargetElement().getRef(); successorsOfNodeTemplate.add(nodeTemplates.stream() .filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream().anyMatch(c -> c.getId().equals(targetElement.getId()))).findAny().get()); .filter(x -> x.getCapabilities() != null) .anyMatch(x -> x.getCapabilities().getCapability().stream().anyMatch(y -> y.getType().equals(requiredCapabilityTypeQName))); if (!existingCap) { openRequirements.add(requirement);
.filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream() .anyMatch(c -> c.getType().equals(requiredCapabilityTypeQName))).findFirst().get(); TCapability matchingCapability = nodeWithOpenCapability.getCapabilities().getCapability() .stream().filter(c -> c.getType().equals(requiredCapabilityTypeQName)).findFirst().get();
@Override public void visit(TNodeTemplate nodeTemplate) { final TNodeTemplate.Requirements requirements = nodeTemplate.getRequirements(); if ((requirements != null) && requirements.getRequirement().isEmpty()) { nodeTemplate.setRequirements(null); } final TNodeTemplate.Capabilities capabilities = nodeTemplate.getCapabilities(); if ((capabilities != null) && capabilities.getCapability().isEmpty()) { nodeTemplate.setCapabilities(null); } final TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); if ((deploymentArtifacts != null) && deploymentArtifacts.getDeploymentArtifact().isEmpty()) { nodeTemplate.setDeploymentArtifacts(null); } final TPolicies policies = nodeTemplate.getPolicies(); if ((policies != null) && policies.getPolicy().isEmpty()) { nodeTemplate.setPolicies(null); } super.visit(nodeTemplate); }
.filter(tNodeTemplate -> Objects.nonNull(tNodeTemplate.getCapabilities()) && tNodeTemplate.getCapabilities().getCapability() .stream() .anyMatch(tCapability -> tCapability.equals(tCapabilityRef.getRef()))
Capabilities capabilities = nt.getCapabilities(); if (capabilities != null) { for (TCapability cap : capabilities.getCapability()) {
.filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream() .anyMatch(c -> c.getType().equals(requiredCapabilityTypeQName))).findFirst().orElse(null); TCapability matchingCapability = nodeWithOpenCapability.getCapabilities().getCapability() .stream().filter(c -> c.getType().equals(requiredCapabilityTypeQName)).findFirst().get(); TRelationshipType matchingRelationshipType =
.filter(nt -> nt.getCapabilities() != null) .forEach(nt -> nt.getCapabilities().getCapability().forEach(oldCap -> { TCapability cap = SerializationUtils.clone(oldCap); generateNewIdOfTemplate(cap, idMapping);
.filter(nt -> nt.getCapabilities() != null) .filter(nt -> nt.getCapabilities().getCapability().stream().anyMatch(cap -> cap.getType().equals(getRequiredCapabilityTypeQNameOfRequirement(openHostedOnRequirement)))) .findFirst().get(); List<TCapability> openCapabilities = newMatchingNodeTemplate.getCapabilities().getCapability(); for (TCapability capability : openCapabilities) { TCapabilityType basisCapabilityType = getBasisCapabilityType(capability.getType());
@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() ); }
capa.setType(new QName(cd.getCapabilityType().getNamespaceURI(), cd.getCapabilityType().getLocalPart())); nodeTemplate.setCapabilities(new Capabilities()); nodeTemplate.getCapabilities().getCapability().add(capa);
TNodeTemplate.Capabilities capabilities = n.getCapabilities(); if (capabilities != null) { for (TCapability cap : capabilities.getCapability()) {
TNodeTemplate.Capabilities capabilities = n.getCapabilities(); if (capabilities != null) { for (TCapability cap : capabilities.getCapability()) {
public void visit(TNodeTemplate nodeTemplate) { this.visit((RelationshipSourceOrTarget) nodeTemplate); final TNodeTemplate.Requirements requirements = nodeTemplate.getRequirements(); if (requirements != null) { requirements.accept(this); } final TNodeTemplate.Capabilities capabilities = nodeTemplate.getCapabilities(); if (capabilities != null) { capabilities.accept(this); } final TDeploymentArtifacts deploymentArtifacts = nodeTemplate.getDeploymentArtifacts(); if (deploymentArtifacts != null) { for (TDeploymentArtifact deploymentArtifact : deploymentArtifacts.getDeploymentArtifact()) { deploymentArtifact.accept(this); } } final TPolicies policies = nodeTemplate.getPolicies(); if (policies != null) { for (TPolicy policy : policies.getPolicy()) { policy.accept(this); } } // meta model does not offer more children }
/** * @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; }