package com.mysema.query.codegen; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import java.io.File; import java.lang.reflect.Field; import org.junit.Test; import com.mysema.codegen.model.Type; import com.mysema.codegen.model.TypeExtends; import com.mysema.query.annotations.QueryEntity; public class Inheritance2Test { @QueryEntity public abstract class Base> { @SuppressWarnings("unchecked") Base2 base; Base2 base2; } @QueryEntity public abstract class Base2,U extends IFace> { } @QueryEntity public abstract class BaseSub extends Base { } @QueryEntity public abstract class BaseSub2> extends Base { } @QueryEntity public abstract class Base2Sub extends Base2,T> { } public interface IFace { } @Test public void Base_base() throws SecurityException, NoSuchFieldException { TypeFactory typeFactory = new TypeFactory(); Field field = Base.class.getDeclaredField("base"); Type type = typeFactory.get(field.getType(), field.getGenericType()); assertEquals(0, type.getParameters().size()); } @Test public void Base_base2() throws SecurityException, NoSuchFieldException { TypeFactory typeFactory = new TypeFactory(); Field field = Base.class.getDeclaredField("base2"); Type type = typeFactory.get(field.getType(), field.getGenericType()); assertEquals(2, type.getParameters().size()); assertNull(((TypeExtends)type.getParameters().get(0)).getVarName()); assertNull(((TypeExtends)type.getParameters().get(1)).getVarName()); } @Test public void test() { GenericExporter exporter = new GenericExporter(); exporter.setTargetFolder(new File("target/" + getClass().getSimpleName())); exporter.export(getClass().getClasses()); } }