org.unix4j.convert.DefaultConverterRegistry Maven / Gradle / Ivy
package org.unix4j.convert;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
import org.unix4j.convert.EnumConverters.StringToEnumConverter;
/**
* Default implementation for {@code ConverterRegistry} storing the converters
* per value type in a {@link Map}. Converters for enums are created on the fly.
*/
public class DefaultConverterRegistry implements ConverterRegistry {
private final Map, ValueConverter>> converterByType = new HashMap, ValueConverter>>();
public DefaultConverterRegistry() {
initConverters();
}
protected void initConverters() {
registerValueConverter(Character.class, CharacterConverters.DEFAULT);
registerValueConverter(char.class, CharacterConverters.DEFAULT);
registerValueConverter(Integer.class, IntegerConverters.DEFAULT);
registerValueConverter(int.class, IntegerConverters.DEFAULT);
registerValueConverter(Long.class, LongConverters.DEFAULT);
registerValueConverter(long.class, LongConverters.DEFAULT);
registerValueConverter(String.class, StringConverters.DEFAULT);
registerValueConverter(String[].class, StringArrayConverters.FLATTEN);
registerValueConverter(File[].class, FileArrayConverters.FLATTEN);
registerValueConverter(Object[].class, ArrayConverters.FLATTEN);
registerValueConverter(Date.class, DateConverters.DEFAULT);
registerValueConverter(File.class, FileConverters.DEFAULT);
registerValueConverter(InputStream.class, InputStreamConverters.DEFAULT);
registerValueConverter(OutputStream.class, OutputStreamConverters.DEFAULT);
registerValueConverter(URL.class, URLConverters.DEFAULT);
registerValueConverter(Pattern.class, PatternConverters.DEFAULT);
}
@Override
public ValueConverter getValueConverterFor(Class type) {
@SuppressWarnings("unchecked")
final ValueConverter converter = (ValueConverter) converterByType.get(type);
if (converter != null) {
return converter;
}
return getEnumConverterFor(type);
}
private ValueConverter getEnumConverterFor(Class type) {
if (type.isEnum()) {
@SuppressWarnings({ "rawtypes", "unchecked" })
final ValueConverter enumConverter = new StringToEnumConverter(type);
return enumConverter;
}
return null;
}
public void registerValueConverter(Class type, ValueConverter converter) {
converterByType.put(type, converter);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy