From 95487c975113ba2ee4fe4ca0acfd5ebc5ae9c14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 14 Nov 2009 08:50:17 +0000 Subject: [PATCH] fixed Embeddable handing issue --- .../java/com/mysema/query/apt/Processor.java | 12 ++++-- .../apt/QuerydslAnnotationProcessor.java | 1 - .../mysema/query/domain/EmbeddableTest.java | 13 +++++++ .../mysema/query/domain/InheritanceTest.java | 37 +++++++++++++++++++ 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java index b277cdf70..fe7619503 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/Processor.java @@ -75,8 +75,10 @@ public class Processor { // populate super type mappings if (conf.getSuperTypeAnn() != null) { for (Element element : roundEnv.getElementsAnnotatedWith(conf.getSuperTypeAnn())) { - BeanModel model = element.accept(entityVisitor, null); - superTypes.put(model.getName(), model); + if (conf.getEmbeddableAnn() == null || element.getAnnotation(conf.getEmbeddableAnn()) == null){ + BeanModel model = element.accept(entityVisitor, null); + superTypes.put(model.getName(), model); + } } // add supertype fields for (BeanModel superType : superTypes.values()) { @@ -93,8 +95,10 @@ public class Processor { // populate entity type mappings Map entityTypes = new HashMap(); for (Element element : roundEnv.getElementsAnnotatedWith(conf.getEntityAnn())) { - BeanModel model = element.accept(entityVisitor, null); - entityTypes.put(model.getName(), model); + if (conf.getEmbeddableAnn() == null || element.getAnnotation(conf.getEmbeddableAnn()) == null){ + BeanModel model = element.accept(entityVisitor, null); + entityTypes.put(model.getName(), model); + } } superTypes.putAll(entityTypes); diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/QuerydslAnnotationProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/QuerydslAnnotationProcessor.java index bc57b8ea9..cd1406117 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/QuerydslAnnotationProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/QuerydslAnnotationProcessor.java @@ -38,7 +38,6 @@ public class QuerydslAnnotationProcessor extends AbstractProcessor{ entity = QueryEntity.class; superType = QuerySupertype.class; embeddable = QueryEmbeddable.class; -// dto = QueryProjection.class; skip = QueryTransient.class; SimpleConfiguration configuration = new SimpleConfiguration(entity, superType, embeddable, skip); diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/EmbeddableTest.java b/querydsl-apt/src/test/java/com/mysema/query/domain/EmbeddableTest.java index b728b145b..7700d2491 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/domain/EmbeddableTest.java +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/EmbeddableTest.java @@ -6,6 +6,7 @@ import org.junit.Test; import com.mysema.query.annotations.QueryEmbeddable; import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.annotations.QuerySupertype; import com.mysema.query.domain.AnimalTest.Cat; public class EmbeddableTest { @@ -51,6 +52,18 @@ public class EmbeddableTest { } + @QueryEntity + @QueryEmbeddable + public static class EntityAndEmbeddable{ + + } + + @QuerySupertype + @QueryEmbeddable + public static class SuperclassAndEmbeddable{ + + } + @Test public void test(){ diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/InheritanceTest.java b/querydsl-apt/src/test/java/com/mysema/query/domain/InheritanceTest.java index dd81a2bc4..b0a9041b7 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/domain/InheritanceTest.java +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/InheritanceTest.java @@ -29,6 +29,43 @@ public class InheritanceTest { } + @QueryEntity + public abstract class BobbinGenOperation extends Operation{ + + } + + @QueryEntity + public abstract class Operation extends Entity{ + + } + + @QueryEntity + public abstract class FlexPlasticFilm extends FlexPlastic implements Rimmable{ + + } + + @QueryEntity + public abstract class FlexPlastic extends Storable{ + + } + + public abstract class Storable extends Merchandise{ + + } + + @QueryEntity + public abstract class Merchandise extends Entity implements UnitConversionSupporter{ + + } + + public interface Rimmable{ + + } + + public interface UnitConversionSupporter{ + + } + @Test public void test(){ // TODO