package alien4cloud.tosca.parser.mapping.generator;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.yaml.snakeyaml.nodes.MappingNode;
import alien4cloud.tosca.parser.MappingTarget;
import alien4cloud.tosca.parser.ParserUtils;
import alien4cloud.tosca.parser.ParsingContextExecution;
import alien4cloud.tosca.parser.impl.base.BaseParserFactory;
import alien4cloud.tosca.parser.impl.base.ListParser;
/**
* Build Mapping target for map.
*/
@Component
public class ListMappingBuilder implements IMappingBuilder {
private static final String LIST = "list";
private static final String TYPE = "type";
private static final String KEY = "key";
@Resource
private BaseParserFactory baseParserFactory;
@Override
public String getKey() {
return LIST;
}
@Override
public MappingTarget buildMapping(MappingNode mappingNode, ParsingContextExecution context) {
Map<String, String> map = ParserUtils.parseStringMap(mappingNode, context);
ListParser parser;
if (map.get(KEY) == null) {
parser = baseParserFactory.getListParser(baseParserFactory.getReferencedParser(map.get(TYPE)), "sequence of " + map.get(TYPE));
} else {
parser = baseParserFactory.getListParser(baseParserFactory.getReferencedParser(map.get(TYPE)), "sequence of " + map.get(TYPE), map.get(KEY));
}
return new MappingTarget(map.get(LIST), parser);
}
}