package alien4cloud.tosca.parser.impl.advanced;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.yaml.snakeyaml.nodes.MappingNode;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
import alien4cloud.tosca.parser.INodeParser;
import alien4cloud.tosca.parser.ParsingContextExecution;
import alien4cloud.tosca.parser.impl.base.ScalarParser;
@Component
public class ArtifactReferenceParser implements INodeParser<String> {
@Resource
private ScalarParser scalarParser;
@Override
public String parse(Node node, ParsingContextExecution context) {
// FIXME this is to support artifact as inputs (using get_input), maybe we should do something better here and support a PropertyValue in the artifact.
if (node instanceof ScalarNode) {
return ((ScalarNode) node).getValue();
} else if (node instanceof MappingNode) {
MappingNode mappingNode = (MappingNode) node;
Node function = mappingNode.getValue().get(0).getKeyNode();
Node value = mappingNode.getValue().get(0).getValueNode();
return "{ " + scalarParser.parse(function, context) + ": " + scalarParser.parse(value, context) + " }";
}
return null;
}
}