From 0660b865539fc1eeba1d9aad4340f7dfad9fa4af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Wed, 20 Nov 2013 21:14:52 +0200 Subject: [PATCH] Better support for QuerySupertype #565 --- .../query/apt/jdo/JDOAnnotationProcessor.java | 13 +++++--- .../query/apt/jpa/JPAAnnotationProcessor.java | 12 +++---- .../morphia/MorphiaAnnotationProcessor.java | 7 +++-- .../query/apt/roo/RooAnnotationProcessor.java | 4 +-- .../query/domain/QuerySuperTypeTest.java | 31 +++++++++++++++++++ 5 files changed, 52 insertions(+), 15 deletions(-) create mode 100644 querydsl-apt/src/test/java/com/mysema/query/domain/QuerySuperTypeTest.java diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/jdo/JDOAnnotationProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/jdo/JDOAnnotationProcessor.java index 323d1ddc13..3e6674a6d6 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/jdo/JDOAnnotationProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/jdo/JDOAnnotationProcessor.java @@ -1,6 +1,6 @@ /* * Copyright 2011, Mysema Ltd - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -23,15 +23,16 @@ import javax.persistence.Embedded; import com.mysema.query.annotations.QueryEntities; +import com.mysema.query.annotations.QuerySupertype; import com.mysema.query.apt.AbstractQuerydslProcessor; import com.mysema.query.apt.Configuration; import com.mysema.query.apt.DefaultConfiguration; import com.mysema.query.codegen.Keywords; /** - * AnnotationProcessor for JDO which takes {@link PersistenceCapable}, {@link EmbeddedOnly} and + * AnnotationProcessor for JDO which takes {@link PersistenceCapable}, {@link EmbeddedOnly} and * {@link NotPersistent} into account - * + * * @author tiwe * */ @@ -40,11 +41,13 @@ public class JDOAnnotationProcessor extends AbstractQuerydslProcessor { @Override protected Configuration createConfiguration(RoundEnvironment roundEnv) { + Class entities = QueryEntities.class; Class entity = PersistenceCapable.class; + Class superType = QuerySupertype.class; Class embeddable = EmbeddedOnly.class; Class embedded = Embedded.class; Class skip = NotPersistent.class; - return new DefaultConfiguration(roundEnv, processingEnv.getOptions(), Keywords.JDO, - QueryEntities.class, entity, null, embeddable, embedded, skip); + return new DefaultConfiguration(roundEnv, processingEnv.getOptions(), Keywords.JDO, + entities, entity, superType, embeddable, embedded, skip); } } diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAAnnotationProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAAnnotationProcessor.java index 00ac89651d..bfd3e44514 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAAnnotationProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAAnnotationProcessor.java @@ -1,6 +1,6 @@ /* * Copyright 2011, Mysema Ltd - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -27,15 +27,15 @@ import com.mysema.query.apt.Configuration; /** - * AnnotationProcessor for JPA which takes {@link Entity}, {@link MappedSuperclass}, {@link Embeddable} + * AnnotationProcessor for JPA which takes {@link Entity}, {@link MappedSuperclass}, {@link Embeddable} * and {@link Transient} into account - * + * * @author tiwe * */ @SupportedAnnotationTypes({"com.mysema.query.annotations.*","javax.persistence.*"}) public class JPAAnnotationProcessor extends AbstractQuerydslProcessor { - + @Override protected Configuration createConfiguration(RoundEnvironment roundEnv) { Class entity = Entity.class; @@ -43,8 +43,8 @@ protected Configuration createConfiguration(RoundEnvironment roundEnv) { Class embeddable = Embeddable.class; Class embedded = Embedded.class; Class skip = Transient.class; - return new JPAConfiguration(roundEnv, processingEnv.getOptions(), entity, superType, - embeddable, embedded, skip); + return new JPAConfiguration(roundEnv, processingEnv.getOptions(), + entity, superType, embeddable, embedded, skip); } } diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/morphia/MorphiaAnnotationProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/morphia/MorphiaAnnotationProcessor.java index f4e2d8a5db..a53c20ac49 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/morphia/MorphiaAnnotationProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/morphia/MorphiaAnnotationProcessor.java @@ -24,6 +24,7 @@ import org.mongodb.morphia.annotations.Transient; import com.mysema.query.annotations.QueryEntities; +import com.mysema.query.annotations.QuerySupertype; import com.mysema.query.apt.AbstractQuerydslProcessor; import com.mysema.query.apt.Configuration; import com.mysema.query.apt.DefaultConfiguration; @@ -41,10 +42,12 @@ public class MorphiaAnnotationProcessor extends AbstractQuerydslProcessor { protected Configuration createConfiguration(RoundEnvironment roundEnv) { Class entities = QueryEntities.class; Class entity = Entity.class; + Class superType = QuerySupertype.class; Class embedded = Embedded.class; Class skip = Transient.class; - DefaultConfiguration conf = new DefaultConfiguration(roundEnv, processingEnv.getOptions(), Collections.emptySet(), - entities, entity, null, null, embedded, skip); + DefaultConfiguration conf = new DefaultConfiguration(roundEnv, + processingEnv.getOptions(), Collections.emptySet(), + entities, entity, superType, null, embedded, skip); try { Class cl = Class.forName("com.mysema.query.mongodb.Point"); conf.addCustomType(Double[].class, cl); diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/roo/RooAnnotationProcessor.java b/querydsl-apt/src/main/java/com/mysema/query/apt/roo/RooAnnotationProcessor.java index bcc9dd0348..6c75dd3576 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/roo/RooAnnotationProcessor.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/roo/RooAnnotationProcessor.java @@ -47,8 +47,8 @@ protected Configuration createConfiguration(RoundEnvironment roundEnv) { Class embeddable = Embeddable.class; Class embedded = Embedded.class; Class skip = Transient.class; - DefaultConfiguration conf = new JPAConfiguration(roundEnv, processingEnv.getOptions(), entity, superType, - embeddable, embedded, skip); + DefaultConfiguration conf = new JPAConfiguration(roundEnv, processingEnv.getOptions(), + entity, superType, embeddable, embedded, skip); conf.setAlternativeEntityAnnotation(RooJpaActiveRecord.class); return conf; } diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/QuerySuperTypeTest.java b/querydsl-apt/src/test/java/com/mysema/query/domain/QuerySuperTypeTest.java new file mode 100644 index 0000000000..fa670125af --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/QuerySuperTypeTest.java @@ -0,0 +1,31 @@ +package com.mysema.query.domain; + +import static org.junit.Assert.assertEquals; + +import java.util.Set; + +import javax.jdo.annotations.PersistenceCapable; + +import org.junit.Test; + +import com.mysema.query.annotations.QuerySupertype; + +public class QuerySuperTypeTest { + + @QuerySupertype + public static class Supertype { + + } + + @PersistenceCapable + public static class JdoEntity { + Set references; + } + + @Test + public void JdoEntity() { + assertEquals(QQuerySuperTypeTest_Supertype.class, + QQuerySuperTypeTest_JdoEntity.jdoEntity.references.any().getClass()); + } + +}