diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions2Test.java b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions2Test.java index 5d5070ae2..2c1abdfcd 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions2Test.java +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions2Test.java @@ -26,8 +26,8 @@ public class QueryExtensions2Test { @QueryMethod("geo_distance({0}, {1})") int geoDistance(Point otherPoint); - @QueryMethod("") - Point getPoint(); +// @QueryMethod("") +// Point getPoint(); } diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions8Test.java b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions8Test.java index 968c2b047..06d37da57 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions8Test.java +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions8Test.java @@ -1,6 +1,6 @@ package com.mysema.query.domain; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import java.sql.Date; @@ -9,6 +9,7 @@ import org.junit.Test; import com.mysema.commons.lang.Pair; import com.mysema.query.annotations.QueryDelegate; import com.mysema.query.annotations.QueryEntity; +import com.mysema.query.annotations.QuerydslConfig; import com.mysema.query.types.expr.EBoolean; import com.mysema.query.types.path.PBoolean; import com.mysema.query.types.path.PDate; @@ -48,8 +49,11 @@ public class QueryExtensions8Test { @QueryEntity + @QuerydslConfig(entityAccessors=true) public static class Entity { + Entity superior; + Date dateVal; Boolean booleanVal; diff --git a/querydsl-core/pom.xml b/querydsl-core/pom.xml index 82d0f2a91..a529a5bd5 100644 --- a/querydsl-core/pom.xml +++ b/querydsl-core/pom.xml @@ -33,7 +33,7 @@ com.mysema.codegen codegen - 0.1.5 + 0.1.6 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 e0bab63b0..3f972a957 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 @@ -579,7 +579,19 @@ public class EntitySerializer implements Serializer{ writer.publicFinal(type, field.getEscapedName()); } } - + + private void customField(EntityType model, Property field, SerializerConfig config, CodeWriter writer) throws IOException { + String queryType = typeMappings.getPathType(field.getType(), model, false); + writer.line("// custom"); + if (field.isInherited()){ + writer.line("// inherited"); + writer.publicFinal(queryType, field.getEscapedName(),"_super." + field.getEscapedName()); + }else{ + String value = NEW + queryType + "(forProperty(\"" + field.getName() + "\"))"; + writer.publicFinal(queryType, field.getEscapedName(), value); + } + } + protected void serializeProperties(EntityType model, SerializerConfig config, CodeWriter writer) throws IOException { for (Property property : model.getProperties()){ String queryType = typeMappings.getPathType(property.getType(), model, false); @@ -611,6 +623,9 @@ public class EntitySerializer implements Serializer{ case NUMERIC: serialize(model, property, queryType, writer, "createNumber", localRawName +DOT_CLASS); break; + case CUSTOM: + customField(model, property, config, writer); + break; case ARRAY: localGenericName = property.getParameter(0).getLocalGenericName(model, true); serialize(model, property, "PArray<" + localGenericName + ">", writer, "createArray",localRawName+DOT_CLASS); @@ -646,7 +661,7 @@ public class EntitySerializer implements Serializer{ queryType = typeMappings.getPathType(property.getParameter(0), model, true); serialize(model, property, "PList<" + localGenericName+ COMMA + genericQueryType + ">", writer, "createList", localRawName+DOT_CLASS, queryType +DOT_CLASS); - break; + break; case ENTITY: entityField(model, property, config, writer); break; @@ -654,4 +669,6 @@ public class EntitySerializer implements Serializer{ } } + + } diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EntityType.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EntityType.java index 192a2687f..7489e1917 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EntityType.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EntityType.java @@ -104,8 +104,12 @@ public final class EntityType extends TypeAdapter implements Comparable getConstructors() { diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeCategory.java b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeCategory.java index fec453334..559ae5ac5 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeCategory.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeCategory.java @@ -69,6 +69,11 @@ public enum TypeCategory { "org.joda.time.Instant", "org.joda.time.DateTime", "org.joda.time.DateMidnight"), + /** + * + */ + CUSTOM(null), + /** * */ diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java index f7178211e..aa79514db 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java @@ -66,6 +66,7 @@ public class TypeMappings { register(TypeCategory.MAP, Expr.class, PSimple.class, CSimple.class); register(TypeCategory.SIMPLE, Expr.class, PSimple.class, CSimple.class); + register(TypeCategory.CUSTOM, Expr.class, Path.class, CSimple.class); register(TypeCategory.ENTITY, Expr.class, Path.class, CSimple.class); } @@ -102,7 +103,7 @@ public class TypeMappings { String localName = null; TypeCategory category = type.getCategory(); - if (raw && category != TypeCategory.ENTITY){ + if (raw && category != TypeCategory.ENTITY && category != TypeCategory.CUSTOM){ return typeName; } @@ -118,7 +119,7 @@ public class TypeMappings { if (category == TypeCategory.STRING || category == TypeCategory.BOOLEAN){ return typeName; - }else if (category == TypeCategory.ENTITY){ + }else if (category == TypeCategory.ENTITY || category == TypeCategory.CUSTOM){ String suffix; if (!type.getPackageName().isEmpty()){ suffix = type.getFullName().substring(type.getPackageName().length()+1).replace('.', '_');