package org.alien4cloud.tosca.editor.processors.relationshiptemplate; import java.util.Map; import org.alien4cloud.tosca.editor.EditionContextManager; import org.alien4cloud.tosca.editor.operations.relationshiptemplate.RebuildRelationshipOperation; import org.alien4cloud.tosca.model.definitions.AbstractPropertyValue; import org.alien4cloud.tosca.model.templates.NodeTemplate; import org.alien4cloud.tosca.model.templates.RelationshipTemplate; import org.alien4cloud.tosca.model.templates.Topology; import org.alien4cloud.tosca.model.types.RelationshipType; import org.springframework.stereotype.Component; import com.google.common.collect.Maps; import alien4cloud.tosca.context.ToscaContext; import alien4cloud.tosca.topology.NodeTemplateBuilder; import lombok.extern.slf4j.Slf4j; /** * Process a {@link RebuildRelationshipOperation}. * * Rebuild a relationship template, synching it with the {@link RelationshipType} * present at the moment in the repository */ @Slf4j @Component public class RebuildRelationshipProcessor extends AbstractRelationshipProcessor<RebuildRelationshipOperation> { @Override protected void processRelationshipOperation(RebuildRelationshipOperation operation, NodeTemplate nodeTemplate, RelationshipTemplate relationshipTemplate) { Topology topology = EditionContextManager.getTopology(); // rebuild a relationship template based on the current relationship type log.debug("Rebuilding the relationship <{}> in the node template <{}> of topology <{}> .", operation.getRelationshipName(), operation.getNodeName(), topology.getId()); RelationshipType relType = ToscaContext.getOrFail(RelationshipType.class, relationshipTemplate.getType()); Map<String, AbstractPropertyValue> properties = Maps.newHashMap(); NodeTemplateBuilder.fillProperties(properties, relType.getProperties(), relationshipTemplate.getProperties()); relationshipTemplate.setProperties(properties); relationshipTemplate.setAttributes(relType.getAttributes()); } }