package org.alien4cloud.tosca.editor.processors.nodetemplate; import org.alien4cloud.tosca.model.types.NodeType; import org.alien4cloud.tosca.model.templates.NodeTemplate; import org.alien4cloud.tosca.model.templates.Topology; import alien4cloud.tosca.context.ToscaContext; import alien4cloud.tosca.topology.NodeTemplateBuilder; import lombok.extern.slf4j.Slf4j; import org.alien4cloud.tosca.editor.EditionContextManager; import org.alien4cloud.tosca.editor.operations.nodetemplate.RebuildNodeOperation; import org.springframework.stereotype.Component; /** * Process an {@link RebuildNodeOperation} * * Rebuild a node template, synching it with the indexedNodeType store at the moment */ @Slf4j @Component public class RebuildNodeProcessor extends AbstractNodeProcessor<RebuildNodeOperation> { @Override protected void processNodeOperation(RebuildNodeOperation operation, NodeTemplate nodeTemplate) { Topology topology = EditionContextManager.getTopology(); log.debug("Rebuilding the node template <{}> of topology <{}> .", operation.getNodeName(), topology.getId()); NodeType type = ToscaContext.getOrFail(NodeType.class, nodeTemplate.getType()); NodeTemplate rebuiltNodeTemplate = NodeTemplateBuilder.buildNodeTemplate(type, nodeTemplate); rebuiltNodeTemplate.setName(operation.getNodeName()); topology.getNodeTemplates().put(operation.getNodeName(), rebuiltNodeTemplate); } }