package org.xenei.jdbc4sparql.sparql.parser.jsqlparser.proxies; import java.lang.reflect.Method; import java.util.Collection; import java.util.HashSet; import java.util.Set; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import org.xenei.jdbc4sparql.iface.name.ColumnName; import org.xenei.jdbc4sparql.sparql.parser.jsqlparser.SparqlExprVisitor.ExprColumn; import com.hp.hpl.jena.sparql.expr.Expr; public class ExprInfoHandler implements MethodInterceptor { private final Expr base; private final Set<ExprColumn> columns; private final ColumnName name; public ExprInfoHandler(final Expr base, final Collection<ExprColumn> columns, final ColumnName name) { this.base = base; this.columns = new HashSet<ExprColumn>(); this.columns.addAll(columns); this.name = name; } @Override public Object intercept(final Object obj, final Method method, final Object[] args, final MethodProxy proxy) throws Throwable { if (method.getName().equals("getColumns")) { return columns; } if (method.getName().equals("getName")) { return name; } if (method.getName().equals("getExpr")) { return base; } return method.invoke(base, args); } }