package org.radargun.utils;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.TreeMap;
import org.radargun.config.Converter;
import org.radargun.logging.Log;
import org.radargun.logging.LogFactory;
public class EnvsConverter implements Converter<Map<String, String>> {
private static Log log = LogFactory.getLog(EnvsConverter.class);
@Override
public Map<String, String> convert(String string, Type type) {
Map<String, String> env = new TreeMap<String, String>();
String[] lines = string.split("\n");
for (String line : lines) {
int eqIndex = line.indexOf('=');
if (eqIndex < 0) {
if (line.trim().length() > 0) {
log.warn("Cannot parse env " + line);
}
} else {
env.put(line.substring(0, eqIndex).trim(), line.substring(eqIndex + 1).trim());
}
}
return env;
}
@Override
public String convertToString(Map<String, String> value) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> envVar : value.entrySet()) {
sb.append(envVar.getKey()).append('=').append(envVar.getValue()).append('\n');
}
return sb.toString();
}
@Override
public String allowedPattern(Type type) {
return "([A-Z_]+[A-Z0-9_]*=.*(\n|\r)*)+";
}
}