package org.alien4cloud.tosca.editor; import javax.inject.Inject; import org.alien4cloud.tosca.model.types.NodeType; import alien4cloud.topology.TopologyServiceCore; import org.springframework.stereotype.Service; import org.alien4cloud.tosca.model.templates.Topology; import alien4cloud.topology.TopologyService; /** * Helper service for editor context that allows to get possible replacement indexedNodeTypes for a node template. */ @Service public class EditorNodeReplacementService { @Inject private TopologyService topologyService; @Inject private EditionContextManager editionContextManager; /** * Utility method to get possible replacement indexedNodeTypes for a node template * * @param topologyId The id of the topology for which to find possible nodes replacement. * @param nodeTemplateName The name of the node template for which to get possible nodes replacement. * @return An array of possible replacement for a node template. */ public NodeType[] getReplacementForNode(String topologyId, String nodeTemplateName) { try { editionContextManager.init(topologyId); // check authorization to update a topology topologyService.checkEditionAuthorizations(EditionContextManager.getTopology()); Topology topology = EditionContextManager.getTopology(); TopologyServiceCore.getNodeTemplate(topologyId, nodeTemplateName, TopologyServiceCore.getNodeTemplates(topology)); return topologyService.findReplacementForNode(nodeTemplateName, topology); } finally { editionContextManager.destroy(); } } }