From 6ce5316f1fcc1cefe300a045d6ef7a3117e16944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Sat, 10 Oct 2009 17:17:18 +0000 Subject: [PATCH] updated version to 0.6.4-SNAPSHOT --- querydsl-apt/pom.xml | 2 +- .../java/com/mysema/query/apt/Processor.java | 7 ++-- querydsl-collections/pom.xml | 2 +- .../query/domain/hierarchy/s1/SEntity1.java | 9 +++++ .../query/domain/hierarchy/s2/SEntity2.java | 11 ++++++ .../query/domain/hierarchy/s3/SEntity3.java | 10 ++++++ .../query/domain/hierarchy/s4/SSupertype.java | 10 ++++++ querydsl-core/pom.xml | 2 +- .../com/mysema/query/codegen/BeanModel.java | 10 ++++++ .../query/codegen/EmbeddableSerializer.java | 3 +- .../query/codegen/EntitySerializer.java | 36 ++++++++++++++----- .../query/codegen/SupertypeSerializer.java | 26 +++++++++++--- querydsl-hql/pom.xml | 2 +- .../com/mysema/query/hql/TypeCastTest.java | 2 +- querydsl-jdoql/pom.xml | 2 +- querydsl-root/pom.xml | 2 +- 16 files changed, 111 insertions(+), 25 deletions(-) create mode 100644 querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java create mode 100644 querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java create mode 100644 querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java create mode 100644 querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java diff --git a/querydsl-apt/pom.xml b/querydsl-apt/pom.xml index 1d2c27774..36e47b376 100644 --- a/querydsl-apt/pom.xml +++ b/querydsl-apt/pom.xml @@ -5,7 +5,7 @@ com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT com.mysema.querydsl 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 50331d9e6..e3b7d7295 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 @@ -77,6 +77,7 @@ public class Processor { if (conf.getSuperTypeAnn() != null) { for (Element element : roundEnv.getElementsAnnotatedWith(conf.getSuperTypeAnn())) { BeanModel model = element.accept(entityVisitor, null); + model.setEntityModel(false); superTypes.put(model.getName(), model); } // add supertype fields @@ -158,8 +159,10 @@ public class Processor { } if (stype.equals(model.getSupertypeName())){ model.setSuperModel(sdecl); - } - model.include(sdecl); + } + if (sdecl.isEntityModel()){ + model.include(sdecl); + } stype = sdecl.getSupertypeName(); } } diff --git a/querydsl-collections/pom.xml b/querydsl-collections/pom.xml index 2bbad1a5b..dca931668 100644 --- a/querydsl-collections/pom.xml +++ b/querydsl-collections/pom.xml @@ -5,7 +5,7 @@ com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT com.mysema.querydsl diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java new file mode 100644 index 000000000..b0dccbcc8 --- /dev/null +++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s1/SEntity1.java @@ -0,0 +1,9 @@ +package com.mysema.query.domain.hierarchy.s1; + +import com.mysema.query.annotations.QueryEntity; + +@QueryEntity +public class SEntity1 { + + String entity1Field; +} diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java new file mode 100644 index 000000000..5755a983d --- /dev/null +++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s2/SEntity2.java @@ -0,0 +1,11 @@ +package com.mysema.query.domain.hierarchy.s2; + +import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.domain.hierarchy.s4.SSupertype; + +@QueryEntity +public class SEntity2 extends SSupertype{ + + String entity2Field; + +} diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java new file mode 100644 index 000000000..b2cd8ddb5 --- /dev/null +++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s3/SEntity3.java @@ -0,0 +1,10 @@ +package com.mysema.query.domain.hierarchy.s3; + +import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.domain.hierarchy.s2.SEntity2; + +@QueryEntity +public class SEntity3 extends SEntity2{ + + String entity3Field; +} diff --git a/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java new file mode 100644 index 000000000..969da7a4d --- /dev/null +++ b/querydsl-collections/src/test/java/com/mysema/query/domain/hierarchy/s4/SSupertype.java @@ -0,0 +1,10 @@ +package com.mysema.query.domain.hierarchy.s4; + +import com.mysema.query.annotations.QuerySupertype; + +@QuerySupertype +public class SSupertype { + + String supertypeField; + +} diff --git a/querydsl-core/pom.xml b/querydsl-core/pom.xml index 4b4fe65c2..c88d57399 100644 --- a/querydsl-core/pom.xml +++ b/querydsl-core/pom.xml @@ -5,7 +5,7 @@ com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT com.mysema.querydsl diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java b/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java index bb4d98803..eab5b262b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/BeanModel.java @@ -35,6 +35,8 @@ public final class BeanModel implements Comparable { // mutable private int escapeSuffix = 1; + private boolean entityModel = true; + private final String simpleName, name, packageName, localName; private final String prefix; @@ -203,5 +205,13 @@ public final class BeanModel implements Comparable { public void setSuperModel(BeanModel superModel) { this.superModel = superModel; } + + public boolean isEntityModel() { + return entityModel; + } + + public void setEntityModel(boolean entityModel) { + this.entityModel = entityModel; + } } \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java index 6f87ba261..ed6c58771 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java @@ -21,8 +21,7 @@ public class EmbeddableSerializer extends EntitySerializer{ } @Override - protected void introImports(StringBuilder builder) { - builder.append("import com.mysema.query.util.*;\n"); + protected void introImports(StringBuilder builder, BeanModel model) { builder.append("import com.mysema.query.types.path.*;\n\n"); } diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java index 724dc5142..e7a565f8b 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java @@ -221,7 +221,7 @@ public class EntitySerializer implements Serializer{ protected void intro(BeanModel model, Writer writer) throws IOException { StringBuilder builder = new StringBuilder(); introPackage(builder, model); - introImports(builder); + introImports(builder, model); introJavadoc(builder, model); introClassHeader(builder, model); introDefaultInstance(builder, model); @@ -231,18 +231,34 @@ public class EntitySerializer implements Serializer{ private void introSuper(StringBuilder builder, BeanModel model) { if (model.getSuperModel() != null){ - BeanModel _super = model.getSuperModel(); - final String simpleName = _super.getSimpleName(); - final String queryType = _super.getPrefix() + simpleName; - builder.append(" public final "+queryType+" _super = new " + queryType + "(this);\n\n"); + BeanModel superModel = model.getSuperModel(); + String superQueryType = superModel.getPrefix() + superModel.getSimpleName(); + if (!superModel.getPackageName().equals(model.getPackageName())){ + superQueryType = superModel.getPackageName() + "." + superQueryType; + } + + if (superModel.isEntityModel()){ + builder.append(" public final "+superQueryType+" _super = new " + superQueryType + "(this);\n\n"); + }else{ + builder.append(" public final "+superQueryType+"<"+model.getLocalName()+"> _super = this;\n\n"); + } } } protected void introClassHeader(StringBuilder builder, BeanModel model) { final String queryType = model.getPrefix() + model.getSimpleName(); final String localName = model.getLocalName(); - builder.append("@SuppressWarnings(\"all\")\n"); - builder.append("public class " + queryType + " extends PEntity<" + localName + "> {\n\n"); + builder.append("@SuppressWarnings(\"serial\")\n"); + if (model.getSuperModel() != null && !model.getSuperModel().isEntityModel()){ + BeanModel superModel = model.getSuperModel(); + String superQueryType = superModel.getPrefix() + superModel.getSimpleName(); + if (!superModel.getPackageName().equals(model.getPackageName())){ + superQueryType = superModel.getPackageName() + "." + superQueryType; + } + builder.append("public class " + queryType + " extends "+superQueryType+"<" + localName + "> {\n\n"); + }else{ + builder.append("public class " + queryType + " extends PEntity<" + localName + "> {\n\n"); + } } protected void introDefaultInstance(StringBuilder builder, BeanModel model) { @@ -252,10 +268,12 @@ public class EntitySerializer implements Serializer{ builder.append(" public static final " + queryType + " " + unscapSimpleName + " = new " + queryType + "(\"" + unscapSimpleName + "\");\n\n"); } - protected void introImports(StringBuilder builder) { + protected void introImports(StringBuilder builder, BeanModel model) { builder.append("import com.mysema.query.util.*;\n"); builder.append("import com.mysema.query.types.path.*;\n"); - builder.append("import com.mysema.query.types.expr.*;\n"); + if (!model.getConstructors().isEmpty()){ + builder.append("import com.mysema.query.types.expr.*;\n"); + } } protected void introJavadoc(StringBuilder builder, BeanModel model) { diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java index 8a58cb262..1baf2b4d9 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/SupertypeSerializer.java @@ -28,21 +28,37 @@ public class SupertypeSerializer extends EntitySerializer{ } @Override - protected void introImports(StringBuilder builder) { + protected void introImports(StringBuilder builder, BeanModel model) { builder.append("import com.mysema.query.util.*;\n"); builder.append("import com.mysema.query.types.path.*;\n\n"); } + @Override + protected void introClassHeader(StringBuilder builder, BeanModel model) { + final String queryType = model.getPrefix() + model.getSimpleName(); + final String localName = model.getLocalName(); + builder.append("@SuppressWarnings(\"serial\")\n"); + if (model.getSuperModel() != null){ + BeanModel superModel = model.getSuperModel(); + String superQueryType = superModel.getPrefix() + superModel.getSimpleName(); + if (!superModel.getPackageName().equals(model.getPackageName())){ + superQueryType = superModel.getPackageName() + "." + superQueryType; + } + builder.append("public abstract class " + queryType + " extends "+superQueryType+"<" + localName + "> {\n\n"); + }else{ + builder.append("public abstract class " + queryType + " extends PEntity {\n\n"); + } + } + @Override protected void constructors(BeanModel model, Writer writer) throws IOException { final String simpleName = model.getSimpleName(); final String queryType = model.getPrefix() + simpleName; - final String localName = model.getLocalName(); StringBuilder builder = new StringBuilder(); - builder.append(" public " + queryType + "(PEntity entity) {\n"); - builder.append(" super(entity.getType(), entity.getEntityName(), entity.getMetadata());\n"); - builder.append(" }\n\n"); + builder.append(" public "+queryType+"(Class type, @NotEmpty String entityName, PathMetadata metadata) {\n"); + builder.append(" super(type, entityName, metadata);\n"); + builder.append(" }\n"); writer.append(builder.toString()); } diff --git a/querydsl-hql/pom.xml b/querydsl-hql/pom.xml index f80c92e99..2ee12c11b 100644 --- a/querydsl-hql/pom.xml +++ b/querydsl-hql/pom.xml @@ -5,7 +5,7 @@ com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT com.mysema.querydsl diff --git a/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java index e67dd97d4..857b6b1c2 100644 --- a/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java +++ b/querydsl-hql/src/test/java/com/mysema/query/hql/TypeCastTest.java @@ -22,7 +22,7 @@ public class TypeCastTest { @Test public void mappedSuperclass(){ QInheritedProperties subClass = QInheritedProperties.inheritedProperties; - QSuperclass superClass = new QSuperclass(subClass); + QSuperclass superClass = subClass; assertEquals(InheritedProperties.class, superClass.getType()); assertEquals(InheritedProperties.class.getSimpleName(), superClass.getEntityName()); diff --git a/querydsl-jdoql/pom.xml b/querydsl-jdoql/pom.xml index ffad9b4ba..5050eeab5 100644 --- a/querydsl-jdoql/pom.xml +++ b/querydsl-jdoql/pom.xml @@ -5,7 +5,7 @@ com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT com.mysema.querydsl diff --git a/querydsl-root/pom.xml b/querydsl-root/pom.xml index 99624cf7d..2ee013cba 100644 --- a/querydsl-root/pom.xml +++ b/querydsl-root/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.mysema.querydsl querydsl-root - 0.6.4 + 0.6.4-SNAPSHOT Querydsl parent project for querydsl modules http://source.mysema.com/display/querydsl