diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions6Test.java b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions6Test.java index dd3d0b2a9..ffe01a5eb 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions6Test.java +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/QueryExtensions6Test.java @@ -39,6 +39,8 @@ public class QueryExtensions6Test { QQueryExtensions6Test_User user = QQueryExtensions6Test_User.user; QQueryExtensions6Test_User other = new QQueryExtensions6Test_User("other"); assertEquals("user.managedBy = other", user.isManagedBy(other).toString()); + + System.out.println(user.isManagedBy(new User())); } 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 e279e8159..e0e2f2bde 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 @@ -387,18 +387,25 @@ public class EntitySerializer implements Serializer{ } protected void method(final EntityType model, Method method, SerializerConfig config, CodeWriter writer) throws IOException { - // header - String type = typeMappings.getExprType(method.getReturnType(), model, false, true, false); - writer.beginPublicMethod(type, method.getName(), method.getParameters(), new Transformer(){ + String exprType = typeMappings.getExprType(method.getReturnType(), model, false, true, false); + String custType = typeMappings.getCustomType(method.getReturnType(), model, true); + + exprArgsMethod(model, method, writer, exprType, custType); + if (!method.getParameters().isEmpty()){ + normalArgsMethod(model, method, writer, exprType, custType); + } + } + + private void exprArgsMethod(final EntityType model, Method method, CodeWriter writer, String exprType, String custType) throws IOException { + writer.beginPublicMethod(exprType, method.getName(), method.getParameters(), new Transformer(){ @Override public String transform(Parameter p) { return typeMappings.getExprType(p.getType(), model, false, false, true) + SPACE + p.getName(); } }); - // body start - String customClass = typeMappings.getCustomType(method.getReturnType(), model, true); - writer.beginLine(RETURN + customClass + ".create("); + // body start + writer.beginLine(RETURN + custType + ".create("); String fullName = method.getReturnType().getFullName(); if (!fullName.equals(String.class.getName()) && !fullName.equals(Boolean.class.getName())){ method.getReturnType().appendLocalRawName(model, writer); @@ -414,6 +421,33 @@ public class EntitySerializer implements Serializer{ // body end writer.end(); } + + private void normalArgsMethod(final EntityType model, Method method, CodeWriter writer, String exprType, String custType) throws IOException { + writer.beginPublicMethod(exprType, method.getName(), method.getParameters(), new Transformer(){ + @Override + public String transform(Parameter p) { + return p.getType().getLocalGenericName(model, true) + SPACE + p.getName(); + + } + }); + + // body start + writer.beginLine(RETURN + custType + ".create("); + String fullName = method.getReturnType().getFullName(); + if (!fullName.equals(String.class.getName()) && !fullName.equals(Boolean.class.getName())){ + method.getReturnType().appendLocalRawName(model, writer); + writer.append(".class, "); + } + writer.append(QUOTE + StringEscapeUtils.escapeJava(method.getTemplate()) + QUOTE); + writer.append(", this"); + for (Parameter p : method.getParameters()){ + writer.append(COMMA + "ExprConst.create(" + p.getName() + ")"); + } + writer.append(");\n"); + + // body end + writer.end(); + } protected void outro(EntityType model, CodeWriter writer) throws IOException { writer.end();