package cucumber.runtime.xstream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; /** * Supports Map<String, Object> as the List item */ public class MapWriter extends CellWriter { private final List<String> columnNames; private final Map<String, Object> values = new LinkedHashMap<String, Object>(); private String key; public MapWriter(List<String> columnNames) { this.columnNames = columnNames; } @Override public List<String> getHeader() { return columnNames.isEmpty() ? new ArrayList<String>(values.keySet()) : columnNames; } @Override public List<String> getValues() { List<String> values = new ArrayList<String>(columnNames.size()); for (String columnName : getHeader()) { Object value = this.values.get(columnName); values.add(value == null ? "" : value.toString()); } return values; } @Override public void setValue(String value) { if (key == null) { key = value; } else { values.put(key, value); key = null; } } @Override public void flush() { throw new UnsupportedOperationException(); } @Override public void close() { throw new UnsupportedOperationException(); } @Override public void startNode(String name) { } @Override public void addAttribute(String name, String value) { } @Override public void endNode() { } }