package org.radargun.utils; import java.lang.reflect.Type; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.radargun.config.Converter; /** * Converts strings, booleans and number to instance of correct type (according to the prefix). * * @author Radim Vansa <rvansa@redhat.com> */ public class ObjectConverter implements Converter<Object> { private static final NumberConverter NUMBER_CONVERTER = new NumberConverter(); private static final Pattern STRING_PATTERN = Pattern.compile("string (.*)"); private static final Pattern BOOLEAN_PATTERN = Pattern.compile("true|false"); @Override public Object convert(String string, Type type) { Matcher m; if ((m = STRING_PATTERN.matcher(string)).matches()) { return m.group(1); } else if ((m = BOOLEAN_PATTERN.matcher(string)).matches()) { return Boolean.parseBoolean(string); } Number n = NUMBER_CONVERTER.toNumber(string); if (n != null) return n; return string; } @Override public String convertToString(Object value) { return String.valueOf(value); } @Override public String allowedPattern(Type type) { return "string .*|true|false|" + NUMBER_CONVERTER.allowedPattern(type); } }