On Dec 27, 2007, at 10:55 PM, Tore Halset wrote:
>>> // new
>>> <T> List<T> performQuery(Class<T> aClass, Query query);
>
> +0. I would like to use a specific interface instead if possible.
> public <T> List<T> performQuery(PersistentSelectQuery<T> query);
>
>>> // new
>>> List<DataRow> performDataRowQuery(Query query);
>
> +0. I would like to use a specific interface instead if possible.
> public List<DataRow> performQuery(DataRowQuery query);
Ok, I've played a bit with parameterizing Query... The results are
mixed at best. I am trying to avoid the explosion of subclasses
(consider that in addition to SelectQuery we have EJBQLQuery,
ProcedureQuery, SQLTemplate, NamedQuery, ObjectIdQuery, etc. that can
return a ResultSet). I think I solved the DataRowQuery subclass
problem, by making it a decorator instead of a subclass:
public interface TypedQuery<T> extends Query {
}
public class DataRowQuery implements
TypedQuery<org.apache.cayenne.DataRow> {
protected Query query;
public DataRowQuery(Query query) {
this.query = query;
}
public SQLAction createSQLAction(SQLActionVisitor visitor) {
return query.createSQLAction(visitor);
}
...
}
But we are still left with 6 extra subclasses that the user will have
to deal with in the code, as well as the method naming issues that Ari
mentioned :-/
Andrus
This archive was generated by hypermail 2.0.0 : Fri Dec 28 2007 - 04:32:40 EST