From dd0511d59d21082b0d25ecdc51287f62ed71eb2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Thu, 10 Sep 2009 09:51:44 +0000 Subject: [PATCH] unified entity and superClass querytype constructor behaviour --- .../query/codegen/EntitySerializer.java | 4 +- .../query/codegen/SupertypeSerializer.java | 2 +- .../com/mysema/query/hql/TypeCastTest.java | 68 +++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java index 65d0fb19a..7bdd3df0b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java @@ -149,8 +149,8 @@ public class EntitySerializer extends AbstractSerializer{ builder.append(" }\n\n"); } - builder.append(" public " + queryType + "(PEntity entity) {\n"); - builder.append(" this(entity.getMetadata());\n"); + builder.append(" public " + queryType + "(PEntity entity) {\n"); + builder.append(" super(entity.getType(), entity.getEntityName(), entity.getMetadata());\n"); builder.append(" }\n\n"); builder.append(" public " + queryType + "(PathMetadata metadata) {\n"); builder.append(" super("+ localName + ".class, \"" + simpleName + "\", metadata);\n"); diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java index 24806c806..479157c10 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java @@ -26,7 +26,7 @@ public class SupertypeSerializer extends EntitySerializer{ StringBuilder builder = new StringBuilder(); builder.append(" public " + queryType + "(PEntity entity) {\n"); - builder.append(" this(entity.getMetadata());\n"); + builder.append(" super(entity.getType(), entity.getEntityName(), entity.getMetadata());\n"); builder.append(" }\n\n"); builder.append(" public " + queryType + "(PathMetadata metadata) {\n"); builder.append(" super("+ localName + ".class, \"" + simpleName + "\", metadata);\n"); diff --git a/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java new file mode 100644 index 000000000..cad89e85e --- /dev/null +++ b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java @@ -0,0 +1,68 @@ +package com.mysema.query.hql; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import com.mysema.query.hql.domain.Animal; +import com.mysema.query.hql.domain.Cat; +import com.mysema.query.hql.domain.InheritedProperties; +import com.mysema.query.hql.domain.QAnimal; +import com.mysema.query.hql.domain.QCat; +import com.mysema.query.hql.domain.QInheritedProperties; +import com.mysema.query.hql.domain.QSuperclass; +import com.mysema.query.hql.domain.Superclass; + +public class TypeCastTest { + + @Test + public void mappedSuperclass(){ + QInheritedProperties subClass = QInheritedProperties.inheritedProperties; + QSuperclass superClass = new QSuperclass(subClass); + + assertEquals(InheritedProperties.class, superClass.getType()); + assertEquals(InheritedProperties.class.getSimpleName(), superClass.getEntityName()); + assertEquals("inheritedProperties", superClass.toString()); + } + + @Test + public void mappedSuperclass2(){ + QInheritedProperties subClass = QInheritedProperties.inheritedProperties; + QSuperclass superClass = new QSuperclass(subClass.getMetadata()); + + assertEquals(Superclass.class, superClass.getType()); + assertEquals(Superclass.class.getSimpleName(), superClass.getEntityName()); + assertEquals("inheritedProperties", superClass.toString()); + } + + @Test + public void subClassToSuper(){ + QCat cat = QCat.cat; + QAnimal animal = new QAnimal(cat); + + assertEquals(Cat.class, animal.getType()); + assertEquals(Cat.class.getSimpleName(), animal.getEntityName()); + assertEquals("cat", animal.toString()); + } + + @Test + public void subClassToSuper2(){ + QCat cat = QCat.cat; + QAnimal animal = new QAnimal(cat.getMetadata()); + + assertEquals(Animal.class, animal.getType()); + assertEquals(Animal.class.getSimpleName(), animal.getEntityName()); + assertEquals("cat", animal.toString()); + } + + @Test + public void superClassToSub(){ + QAnimal animal = QAnimal.animal; + QCat cat = new QCat(animal.getMetadata()); + + assertEquals(Cat.class, cat.getType()); + assertEquals(Cat.class.getSimpleName(), cat.getEntityName()); + assertEquals("animal", cat.toString()); + } + +}