package org.skife.jdbi.v2.sqlobject;
import com.fasterxml.classmate.members.ResolvedMethod;
import net.sf.cglib.proxy.MethodProxy;
import org.skife.jdbi.v2.Query;
class QueryHandler extends CustomizingStatementHandler
{
private final String sql;
private final ResolvedMethod method;
private final ResultReturnThing magic;
QueryHandler(Class<?> sqlObjectType, ResolvedMethod method, ResultReturnThing magic)
{
super(sqlObjectType, method);
this.method = method;
this.magic = magic;
this.sql = SqlObject.getSql(method.getRawMember().getAnnotation(SqlQuery.class), method.getRawMember());
}
@Override
public Object invoke(HandleDing h, Object target, Object[] args, MethodProxy mp)
{
Query q = h.getHandle().createQuery(sql);
applyCustomizers(q, args);
applyBinders(q, args);
return magic.map(method, q, h);
}
}