Search in sources :

Example 1 with YTNodeType

use of org.eclipse.winery.model.tosca.yaml.YTNodeType in project winery by eclipse.

the class YamlRepository method replaceOldWithNewData.

/**
 * Replaces old data of yaml node type with new data from xml node type to prevent deletion of implementation
 * artifacts
 *
 * @param newData new saved node type
 * @param oldData already saved node type
 * @return edited yaml service template
 */
private YTServiceTemplate replaceOldWithNewData(YTServiceTemplate newData, YTServiceTemplate oldData) {
    YTNodeType oldNodeType = oldData.getNodeTypes().entrySet().iterator().next().getValue();
    YTNodeType newNodeType = newData.getNodeTypes().entrySet().iterator().next().getValue();
    oldNodeType.setMetadata(newNodeType.getMetadata());
    oldNodeType.setProperties(newNodeType.getProperties());
    oldNodeType.setDerivedFrom(newNodeType.getDerivedFrom());
    oldNodeType.setDescription(newNodeType.getDescription());
    oldNodeType.setRequirements(newNodeType.getRequirements());
    oldNodeType.setCapabilities(newNodeType.getCapabilities());
    oldNodeType.setArtifacts(newNodeType.getArtifacts());
    oldNodeType.setInterfaces(newNodeType.getInterfaces());
    oldNodeType.setAttributes(newNodeType.getAttributes());
    oldData.getNodeTypes().entrySet().iterator().next().setValue(oldNodeType);
    return oldData;
}
Also used : YTNodeType(org.eclipse.winery.model.tosca.yaml.YTNodeType)

Example 2 with YTNodeType

use of org.eclipse.winery.model.tosca.yaml.YTNodeType in project winery by eclipse.

the class YamlRepository method convertToYamlModel.

private YTServiceTemplate convertToYamlModel(RepositoryFileReference existing, TDefinitions definitions) throws IOException, MultiException {
    FromCanonical converter = new FromCanonical(this);
    YTServiceTemplate serviceTemplate;
    if (existing.getParent() instanceof NodeTypeImplementationId) {
        serviceTemplate = readServiceTemplate(existing);
        serviceTemplate = converter.convertNodeTypeImplementation(serviceTemplate, definitions.getNodeTypeImplementations().get(0));
    } else if (existing.getParent() instanceof RelationshipTypeImplementationId) {
        serviceTemplate = readServiceTemplate(existing);
        serviceTemplate = converter.convertRelationshipTypeImplementation(serviceTemplate, definitions.getRelationshipTypeImplementations().get(0));
    } else if (existing.getParent() instanceof NodeTypeId) {
        serviceTemplate = converter.convert(definitions);
        if (exists(existing)) {
            YTServiceTemplate oldServiceTemplate = readServiceTemplate(existing);
            serviceTemplate = replaceOldWithNewData(serviceTemplate, oldServiceTemplate);
        }
    } else if (existing.getParent() instanceof RelationshipTypeId) {
        serviceTemplate = converter.convert(definitions);
        if (exists(existing)) {
            YTServiceTemplate oldServiceTemplate = readServiceTemplate(existing);
            serviceTemplate = replaceOldRelationshipTypeWithNewData(serviceTemplate, oldServiceTemplate);
        }
    } else if (existing.getParent() instanceof ArtifactTemplateId) {
        ArtifactTemplateId id = (ArtifactTemplateId) existing.getParent();
        TArtifactTemplate artifactTemplate = definitions.getArtifactTemplates().get(0);
        YTArtifactDefinition artifact = converter.convertArtifactTemplate(artifactTemplate);
        List<YTMapImportDefinition> imports = converter.convertImports();
        Path targetPath = ref2AbsolutePath(existing);
        if (Files.exists(targetPath)) {
            serviceTemplate = readServiceTemplate(targetPath);
            if (serviceTemplate == null) {
                serviceTemplate = createNewCacheNodeTypeWithArtifact(existing, artifactTemplate, artifact, imports);
            } else if (getTypeFromArtifactName(id.getQName().getLocalPart()).equalsIgnoreCase("nodetypes")) {
                YTNodeType nodeType = serviceTemplate.getNodeTypes().entrySet().iterator().next().getValue();
                Map<String, YTArtifactDefinition> artifacts = nodeType.getArtifacts();
                if (artifacts.containsKey(artifactTemplate.getIdFromIdOrNameField())) {
                    artifacts.replace(artifactTemplate.getIdFromIdOrNameField(), artifact);
                } else {
                    artifacts.put(artifactTemplate.getIdFromIdOrNameField(), artifact);
                }
            } else if (existing.getParent() instanceof PolicyTypeId || existing.getParent() instanceof CapabilityTypeId) {
                // we simply take the new definition as is
                serviceTemplate = converter.convert(definitions);
            } else {
                serviceTemplate = converter.convert(definitions);
                if (exists(existing)) {
                    YTServiceTemplate existingServiceTemplate = readServiceTemplate(existing);
                    serviceTemplate = replaceTopologyTemplate(serviceTemplate, existingServiceTemplate);
                }
            }
        } else {
            serviceTemplate = createNewCacheNodeTypeWithArtifact(existing, artifactTemplate, artifact, imports);
        }
    } else {
        serviceTemplate = converter.convert(definitions);
    }
    return serviceTemplate;
}
Also used : Path(java.nio.file.Path) NodeTypeImplementationId(org.eclipse.winery.model.ids.definitions.NodeTypeImplementationId) RelationshipTypeId(org.eclipse.winery.model.ids.definitions.RelationshipTypeId) YTArtifactDefinition(org.eclipse.winery.model.tosca.yaml.YTArtifactDefinition) FromCanonical(org.eclipse.winery.repository.yaml.converter.FromCanonical) CapabilityTypeId(org.eclipse.winery.model.ids.definitions.CapabilityTypeId) TArtifactTemplate(org.eclipse.winery.model.tosca.TArtifactTemplate) YTServiceTemplate(org.eclipse.winery.model.tosca.yaml.YTServiceTemplate) YTMapImportDefinition(org.eclipse.winery.model.tosca.yaml.support.YTMapImportDefinition) RelationshipTypeImplementationId(org.eclipse.winery.model.ids.definitions.RelationshipTypeImplementationId) ArtifactTemplateId(org.eclipse.winery.model.ids.definitions.ArtifactTemplateId) PolicyTypeId(org.eclipse.winery.model.ids.definitions.PolicyTypeId) NodeTypeId(org.eclipse.winery.model.ids.definitions.NodeTypeId) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) YTNodeType(org.eclipse.winery.model.tosca.yaml.YTNodeType)

Example 3 with YTNodeType

use of org.eclipse.winery.model.tosca.yaml.YTNodeType in project winery by eclipse.

the class FromCanonical method convertNodeTypeImplementation.

@Deprecated
public YTServiceTemplate convertNodeTypeImplementation(YTServiceTemplate type, TNodeTypeImplementation node) {
    if (Objects.isNull(node)) {
        return null;
    }
    YTNodeType nodeType = type.getNodeTypes().entrySet().iterator().next().getValue();
    nodeType.setArtifacts(convert(node, nodeType.getArtifacts()));
    nodeType.setInterfaces(convertInterfaces(nodeType.getInterfaces(), node.getImplementationArtifacts()));
    type.getNodeTypes().entrySet().iterator().next().setValue(nodeType);
    type.setImports(addNewImports(type.getImports()));
    return type;
}
Also used : YTNodeType(org.eclipse.winery.model.tosca.yaml.YTNodeType)

Example 4 with YTNodeType

use of org.eclipse.winery.model.tosca.yaml.YTNodeType in project winery by eclipse.

the class YamlReaderTest method testSupportedInterfaceDefinitions.

@Test
public void testSupportedInterfaceDefinitions() throws Exception {
    YamlReader reader = new YamlReader();
    InputStream is = getClass().getClassLoader().getResourceAsStream("yaml/supported_interfaces.yml");
    YTServiceTemplate template = reader.parse(is);
    Assertions.assertNotNull(template);
    YTNodeType server = template.getNodeTypes().get("server");
    Assertions.assertEquals(2, server.getArtifacts().size());
    YTInterfaceDefinition standard = server.getInterfaces().get("Standard");
    Assertions.assertEquals(2, standard.getOperations().size());
    Assertions.assertEquals(1, standard.getInputs().size());
}
Also used : YTInterfaceDefinition(org.eclipse.winery.model.tosca.yaml.YTInterfaceDefinition) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) YTServiceTemplate(org.eclipse.winery.model.tosca.yaml.YTServiceTemplate) YamlReader(org.eclipse.winery.repository.converter.reader.YamlReader) YTNodeType(org.eclipse.winery.model.tosca.yaml.YTNodeType) AbstractConverterTest(org.eclipse.winery.repository.converter.AbstractConverterTest) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

YTNodeType (org.eclipse.winery.model.tosca.yaml.YTNodeType)4 YTServiceTemplate (org.eclipse.winery.model.tosca.yaml.YTServiceTemplate)2 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1 Path (java.nio.file.Path)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 ArtifactTemplateId (org.eclipse.winery.model.ids.definitions.ArtifactTemplateId)1 CapabilityTypeId (org.eclipse.winery.model.ids.definitions.CapabilityTypeId)1 NodeTypeId (org.eclipse.winery.model.ids.definitions.NodeTypeId)1 NodeTypeImplementationId (org.eclipse.winery.model.ids.definitions.NodeTypeImplementationId)1 PolicyTypeId (org.eclipse.winery.model.ids.definitions.PolicyTypeId)1 RelationshipTypeId (org.eclipse.winery.model.ids.definitions.RelationshipTypeId)1 RelationshipTypeImplementationId (org.eclipse.winery.model.ids.definitions.RelationshipTypeImplementationId)1 TArtifactTemplate (org.eclipse.winery.model.tosca.TArtifactTemplate)1 YTArtifactDefinition (org.eclipse.winery.model.tosca.yaml.YTArtifactDefinition)1 YTInterfaceDefinition (org.eclipse.winery.model.tosca.yaml.YTInterfaceDefinition)1 YTMapImportDefinition (org.eclipse.winery.model.tosca.yaml.support.YTMapImportDefinition)1 AbstractConverterTest (org.eclipse.winery.repository.converter.AbstractConverterTest)1 YamlReader (org.eclipse.winery.repository.converter.reader.YamlReader)1