package de.zalando.sprocwrapper.proxy.executors;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import de.zalando.sprocwrapper.proxy.InvocationContext;
/**
* @author hjacobs
*/
public class SingleRowCustomMapperExecutor implements Executor {
private final RowMapper<?> resultMapper;
public SingleRowCustomMapperExecutor(final RowMapper<?> resultMapper) {
this.resultMapper = resultMapper;
}
@Override
public Object executeSProc(final DataSource ds, final String sql, final Object[] args, final int[] types,
final InvocationContext invocationContext, final Class<?> returnType) {
final List<?> list = (new JdbcTemplate(ds)).query(sql, args, types, resultMapper);
if (!list.isEmpty()) {
return list.iterator().next();
}
return null;
}
}