cz.jalasoft.lifeconfig.converter.ConverterRepository Maven / Gradle / Ivy
package cz.jalasoft.lifeconfig.converter;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @author Honza Lastovicka ([email protected])
* @since 2016-09-19.
*/
public final class ConverterRepository {
private static List> stringConverters = new ArrayList<>();
static {
stringConverters.add(StringConverters.identity());
stringConverters.add(StringConverters.toByte());
stringConverters.add(StringConverters.toShort());
stringConverters.add(StringConverters.toInteger());
stringConverters.add(StringConverters.toLong());
stringConverters.add(StringConverters.toFloat());
stringConverters.add(StringConverters.toDouble());
stringConverters.add(StringConverters.toBoolean());
stringConverters.add(StringConverters.toBytePrimitive());
stringConverters.add(StringConverters.toShortPrimitive());
stringConverters.add(StringConverters.toIntPrimitive());
stringConverters.add(StringConverters.toLongPrimitive());
stringConverters.add(StringConverters.toFloatPrimitive());
stringConverters.add(StringConverters.toDoublePrimitive());
stringConverters.add(StringConverters.toBooleanPrimitive());
stringConverters.add(StringConverters.toISOLocalDateTime());
}
private final List> converters;
public ConverterRepository() {
converters = new ArrayList<>();
}
public Optional> fromStringTo(Class> targetType) {
return stringConverters.stream()
.map(c -> (Converter) c)
.filter(c -> c.targetType().isAssignableFrom(targetType))
.findFirst();
}
public void registerConverter(Converter, ?> converter) {
Converter