package org.skife.jdbi.v2;
import com.fasterxml.classmate.ResolvedType;
import com.fasterxml.classmate.TypeResolver;
import org.skife.jdbi.v2.tweak.ResultColumnMapper;
import java.util.List;
class InferredColumnMapperFactory implements ResultColumnMapperFactory
{
private static final TypeResolver tr = new TypeResolver();
private final Class<?> maps;
private final ResultColumnMapper mapper;
InferredColumnMapperFactory(ResultColumnMapper mapper)
{
this.mapper = mapper;
ResolvedType rt = tr.resolve(mapper.getClass());
List<ResolvedType> rs = rt.typeParametersFor(ResultColumnMapper.class);
if (rs.isEmpty() || rs.get(0).getErasedType().equals(Object.class)) {
throw new UnsupportedOperationException("Must use a concretely typed ResultColumnMapper here");
}
maps = rs.get(0).getErasedType();
}
@Override
public boolean accepts(Class type, StatementContext ctx)
{
return maps.equals(type);
}
@Override
public ResultColumnMapper columnMapperFor(Class type, StatementContext ctx)
{
return mapper;
}
}