On May 25, 2008, at 9:12 PM, Vincent Massol wrote:
[snip]
5) Why do we need to write Language.HQL.name() and not
Language.HQL?
Because "Language" is Java5 enum, but QueryManager#createQuery
require
String (for adding new Languages without modify the Language enum).
Ok. This is not good, so I propose to:
public interface Query {
static final String HQL = "hql";
static final String XPATH = "xpath";
...
}
btw you don't need static final in an interface ;)
Actually I wouldn't do it like this. Since we're now using
components I would create a Query interface and create each
implementation as a component. That component will be registered
with a <role-hint> of "hql", "xpath", etc.
Actually this is orthogonal. For the component lookup we simply need a
string which can come from an enum or from a static final String. I'm
fine with the String.
Still we should implement the Queries as components.
Thanks
-Vincent