package org.alien4cloud.tosca.editor.processors.inputs;
import static alien4cloud.utils.AlienUtils.safe;
import org.alien4cloud.tosca.editor.EditionContextManager;
import org.alien4cloud.tosca.editor.operations.inputs.DeleteInputArtifactOperation;
import org.alien4cloud.tosca.editor.processors.IEditorOperationProcessor;
import org.springframework.stereotype.Component;
import alien4cloud.exception.NotFoundException;
import org.alien4cloud.tosca.model.definitions.DeploymentArtifact;
import org.alien4cloud.tosca.model.templates.NodeTemplate;
import org.alien4cloud.tosca.model.templates.Topology;
import alien4cloud.utils.InputArtifactUtil;
/**
* Delete an input artifact.
*/
@Component
public class DeleteInputArtifactProcessor implements IEditorOperationProcessor<DeleteInputArtifactOperation> {
@Override
public void process(DeleteInputArtifactOperation operation) {
Topology topology = EditionContextManager.getTopology();
if (!safe(topology.getInputArtifacts()).containsKey(operation.getInputName())) {
throw new NotFoundException("Input artifact <" + operation.getInputName() + "> can not be found in the topology.");
}
DeploymentArtifact inputArtifact = topology.getInputArtifacts().remove(operation.getInputName());
// change the value of concerned node template artifacts
for (NodeTemplate nodeTemplate : safe(topology.getNodeTemplates()).values()) {
for (DeploymentArtifact dArtifact : safe(nodeTemplate.getArtifacts()).values()) {
if (operation.getInputName().equals(InputArtifactUtil.getInputArtifactId(dArtifact))) {
InputArtifactUtil.unsetInputArtifact(dArtifact);
}
}
}
}
}