From 9d94cb8fc52d4e2657d51c9525ecd9ca8f1c0013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 19 Oct 2011 19:37:03 +0300 Subject: [PATCH] #30 : excluded QueryExcluded annotated classes from EntityType supertypes --- .../mysema/query/apt/ExtendedTypeFactory.java | 17 +++++++---- .../mysema/query/domain/QueryExcludeTest.java | 30 +++++++++++++++++++ 2 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 querydsl-apt/src/test/java/com/mysema/query/domain/QueryExcludeTest.java diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java index 2e39ac53c..dd128bd8f 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java @@ -36,6 +36,7 @@ import com.mysema.codegen.model.TypeCategory; import com.mysema.codegen.model.TypeExtends; import com.mysema.codegen.model.TypeSuper; import com.mysema.codegen.model.Types; +import com.mysema.query.annotations.QueryExclude; import com.mysema.query.codegen.EntityType; import com.mysema.query.codegen.QueryTypeFactory; import com.mysema.query.codegen.Supertype; @@ -424,12 +425,18 @@ public final class ExtendedTypeFactory { if (e.getKind() == ElementKind.CLASS) { if (e.getSuperclass().getKind() != TypeKind.NONE) { TypeMirror supertype = normalize(e.getSuperclass()); - Type superClass = getType(supertype, deep); - if (superClass == null) { - System.err.println("Got no type for " + supertype); - } else if (!superClass.getFullName().startsWith("java")) { - superTypes = Collections.singleton(getType(supertype, deep)); + if (supertype instanceof DeclaredType + && ((DeclaredType)supertype).asElement().getAnnotation(QueryExclude.class) != null) { + return Collections.emptySet(); + } else { + Type superClass = getType(supertype, deep); + if (superClass == null) { + System.err.println("Got no type for " + supertype); + } else if (!superClass.getFullName().startsWith("java")) { + superTypes = Collections.singleton(getType(supertype, deep)); + } } + } // interface } else { diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExcludeTest.java b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExcludeTest.java new file mode 100644 index 000000000..7d680ba64 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExcludeTest.java @@ -0,0 +1,30 @@ +package com.mysema.query.domain; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.annotations.QueryExclude; +import com.mysema.query.types.path.EntityPathBase; + +public class QueryExcludeTest { + + @QueryExclude + @QueryEntity + public class Entity { + + } + + @QueryEntity + public class SubEntity extends Entity { + + } + + @Test + public void SubEntity() { + assertEquals(EntityPathBase.class, QQueryExcludeTest_SubEntity.class.getSuperclass()); + } + + +}