Cope with the goddamned broken generics implementation in JDK 1.5.

This commit is contained in:
Michael Bayne
2008-09-08 18:58:12 +00:00
parent f1dd34e4b3
commit ffeb6534c4
4 changed files with 14 additions and 8 deletions
@@ -71,7 +71,7 @@ public class BindVisitor implements ExpressionVisitor
// nothing needed
}
public void visit (Key<? extends PersistentRecord>.Expression key)
public void visit (Key.Expression<? extends PersistentRecord> key)
{
for (Comparable<?> value : key.getValues()) {
if (value != null) {
@@ -94,7 +94,7 @@ public abstract class BuildVisitor implements ExpressionVisitor
where.getWhereExpression().accept(this);
}
public void visit (Key<? extends PersistentRecord>.Expression key)
public void visit (Key.Expression<? extends PersistentRecord> key)
{
Class<? extends PersistentRecord> pClass = key.getPersistentClass();
String[] keyFields = KeyUtil.getKeyFields(pClass);
+11 -5
View File
@@ -43,13 +43,17 @@ public class Key<T extends PersistentRecord> extends WhereClause
{
/** Handles the matching of the key columns to its bound values. This is needed so that we can
* combine a buncy of keys into a {@link KeySet}. */
public class Expression implements SQLExpression
public static class Expression<U extends PersistentRecord> implements SQLExpression
{
public Class<T> getPersistentClass () {
return Key.this.getPersistentClass();
public Expression (Class<U> pClass, List<Comparable<?>> values) {
_pClass = pClass;
_values = values;
}
public Class<U> getPersistentClass () {
return _pClass;
}
public List<Comparable<?>> getValues () {
return Key.this.getValues();
return _values;
}
public void accept (ExpressionVisitor builder) {
builder.visit(this);
@@ -57,6 +61,8 @@ public class Key<T extends PersistentRecord> extends WhereClause
public void addClasses (Collection<Class<? extends PersistentRecord>> classSet) {
classSet.add(getPersistentClass());
}
protected Class<U> _pClass;
protected List<Comparable<?>> _values;
}
/**
@@ -148,7 +154,7 @@ public class Key<T extends PersistentRecord> extends WhereClause
// from WhereClause
public SQLExpression getWhereExpression ()
{
return new Expression();
return new Expression<T>(_pClass, _values);
}
// from SQLExpression
@@ -69,7 +69,7 @@ public interface ExpressionVisitor
public void visit (LiteralExp literalExp);
public void visit (ValueExp valueExp);
public void visit (WhereClause where);
public void visit (Key<? extends PersistentRecord>.Expression key);
public void visit (Key.Expression<? extends PersistentRecord> key);
public void visit (MultiKey<? extends PersistentRecord> key);
public void visit (Exists<? extends PersistentRecord> exists);
public void visit (SelectClause<? extends PersistentRecord> selectClause);