From ed4646ca9ce41824039215bbe5c4953a2294bdd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 7 Mar 2008 22:11:59 +0000 Subject: [PATCH] formalized Path types --- .../com/mysema/query/grammar/HqlGrammar.java | 1 - .../java/com/mysema/query/grammar/HqlOps.java | 2 +- .../mysema/query/grammar/HqlSerializer.java | 28 ++----------------- .../com/mysema/query/hibernate/HqlQuery.java | 6 ++-- .../query/grammar/hql/domain/EvilType.java | 3 +- 5 files changed, 10 insertions(+), 30 deletions(-) diff --git a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlGrammar.java b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlGrammar.java index 7ed92bb40..4a235a165 100644 --- a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlGrammar.java +++ b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlGrammar.java @@ -98,7 +98,6 @@ public class HqlGrammar extends Grammar{ super(type); this.args = args; } - public Class getType(){ return type;} } public static class CountExpr extends ExprComparable{ diff --git a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlOps.java b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlOps.java index d7cca9f79..f9c54213d 100644 --- a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlOps.java +++ b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlOps.java @@ -9,7 +9,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; -import com.mysema.query.grammar.Ops.Op; +import com.mysema.query.grammar.Ops; /** * Ops provides diff --git a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlSerializer.java b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlSerializer.java index 78aeac44d..051d71787 100644 --- a/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlSerializer.java +++ b/querydsl-hibernate/src/main/java/com/mysema/query/grammar/HqlSerializer.java @@ -5,7 +5,6 @@ */ package com.mysema.query.grammar; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -22,19 +21,7 @@ import com.mysema.query.grammar.Types.*; * @version $Id$ */ public class HqlSerializer extends VisitorAdapter{ - - private static final Field typeField; - - static{ - try { - typeField = Expr.class.getDeclaredField("type"); - typeField.setAccessible(true); - } catch (Exception e) { - String error = "Caught " + e.getClass().getName(); - throw new RuntimeException(error, e); - } - } - + private StringBuilder builder = new StringBuilder(); private List constants = new ArrayList(); @@ -52,15 +39,6 @@ public class HqlSerializer extends VisitorAdapter{ } return this; } - - private Class _getType(PathEntity expr) { - try { - return (Class) typeField.get(expr); - } catch (Exception e) { - String error = "Caught " + e.getClass().getName(); - throw new RuntimeException(error, e); - } - } private String _toString(Expr expr) { StringBuilder old = builder; @@ -97,7 +75,7 @@ public class HqlSerializer extends VisitorAdapter{ } // type specifier if (je.target instanceof PathEntity && !je.target.toString().contains(".")){ - _append(_getType((PathEntity)je.target).getSimpleName())._append(" "); + _append(((PathEntity)je.target)._type().getSimpleName())._append(" "); } handle(je.target); if (je.conditions != null){ @@ -148,7 +126,7 @@ public class HqlSerializer extends VisitorAdapter{ } protected void visit(Constructor expr){ - _append("new ")._append(expr.type.getName())._append("("); + _append("new ")._append(expr._type().getName())._append("("); _append(", ",Arrays.asList(expr.args))._append(")"); } diff --git a/querydsl-hibernate/src/main/java/com/mysema/query/hibernate/HqlQuery.java b/querydsl-hibernate/src/main/java/com/mysema/query/hibernate/HqlQuery.java index 45c31c90c..952836edd 100644 --- a/querydsl-hibernate/src/main/java/com/mysema/query/hibernate/HqlQuery.java +++ b/querydsl-hibernate/src/main/java/com/mysema/query/hibernate/HqlQuery.java @@ -16,7 +16,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.mysema.query.grammar.HqlQueryBase; -import com.mysema.query.grammar.Types.*; +import com.mysema.query.grammar.Types.ExprBoolean; +import com.mysema.query.grammar.Types.PathEntity; +import com.mysema.query.grammar.Types.PathNoEntitySimple; /** * HqlQuery provides a fluent statically typed interface for creating HQL queries @@ -65,7 +67,7 @@ public class HqlQuery extends HqlQueryBase{ && !entry.getKey().equals("class") && !entry.getKey().equals("created") && !entry.getKey().equals("modified")){ - PathNoEntitySimple path = new PathNoEntitySimple(Object.class,entity+"."+entry.getKey()); + PathNoEntitySimple path = new PathNoEntitySimple(Object.class, entity, entry.getKey()); if (entry.getValue() != null){ conds.add(path.eq(entry.getValue())); }else{ diff --git a/querydsl-hibernate/src/test/java/com/mysema/query/grammar/hql/domain/EvilType.java b/querydsl-hibernate/src/test/java/com/mysema/query/grammar/hql/domain/EvilType.java index 96648d2df..5ee725232 100644 --- a/querydsl-hibernate/src/test/java/com/mysema/query/grammar/hql/domain/EvilType.java +++ b/querydsl-hibernate/src/test/java/com/mysema/query/grammar/hql/domain/EvilType.java @@ -10,5 +10,6 @@ import javax.persistence.Entity; */ @Entity public class EvilType { - protected EvilType isnull, isnotnull, asc, desc, get, toString, hashCode, getClass, notify, notifyAll, wait; + protected EvilType isnull, isnotnull, asc, desc, get, _type, path, _parent; + protected EvilType toString, hashCode, getClass, notify, notifyAll, wait; }