unified entity and superClass querytype constructor behaviour

This commit is contained in:
Timo Westkämper 2009-09-10 09:51:44 +00:00
parent 6458747971
commit dd0511d59d
3 changed files with 71 additions and 3 deletions

View File

@ -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<? extends "+localName+"> 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");

View File

@ -26,7 +26,7 @@ public class SupertypeSerializer extends EntitySerializer{
StringBuilder builder = new StringBuilder();
builder.append(" public " + queryType + "(PEntity<? extends "+localName+"> 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");

View File

@ -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());
}
}