From 4b4e0d28a038dc268f76d48ed94e2d4f1dad0fd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Fri, 9 Mar 2012 22:48:19 +0200 Subject: [PATCH] #114 fixed get method handling --- .../mysema/query/apt/TypeElementHandler.java | 4 +- .../query/apt/jpa/JPAConfiguration.java | 3 +- .../mysema/query/domain/FileAttachment.java | 54 +++++++++++++++++++ .../mysema/query/codegen/GenericExporter.java | 10 ++-- 4 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 querydsl-apt/src/test/java/com/mysema/query/domain/FileAttachment.java diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/TypeElementHandler.java b/querydsl-apt/src/main/java/com/mysema/query/apt/TypeElementHandler.java index 302273d73..c5f129c5d 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/TypeElementHandler.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/TypeElementHandler.java @@ -99,9 +99,9 @@ public final class TypeElementHandler { if (config.visitMethodProperties()){ for (ExecutableElement method : ElementFilter.methodsIn(elements)) { String name = method.getSimpleName().toString(); - if (name.startsWith("get") && method.getParameters().isEmpty()) { + if (name.startsWith("get") && name.length() > 3 && method.getParameters().isEmpty()) { name = BeanUtils.uncapitalize(name.substring(3)); - } else if (name.startsWith("is") && method.getParameters().isEmpty()) { + } else if (name.startsWith("is") && name.length() > 2 && method.getParameters().isEmpty()) { name = BeanUtils.uncapitalize(name.substring(2)); } else { continue; diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAConfiguration.java b/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAConfiguration.java index c866e8fbb..b5de2ab00 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAConfiguration.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/jpa/JPAConfiguration.java @@ -31,6 +31,7 @@ import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.PrimaryKeyJoinColumn; +import javax.persistence.Transient; import javax.persistence.Version; import com.mysema.query.annotations.QueryTransient; @@ -64,7 +65,7 @@ public class JPAConfiguration extends DefaultConfiguration { protected List> getAnnotations() { return Arrays.asList(Column.class, Embedded.class, EmbeddedId.class, GeneratedValue.class, Id.class, Version.class, JoinColumn.class, ManyToOne.class, OneToMany.class, - PrimaryKeyJoinColumn.class, QueryType.class, QueryTransient.class); + PrimaryKeyJoinColumn.class, QueryType.class, QueryTransient.class, Transient.class); } @Override diff --git a/querydsl-apt/src/test/java/com/mysema/query/domain/FileAttachment.java b/querydsl-apt/src/test/java/com/mysema/query/domain/FileAttachment.java new file mode 100644 index 000000000..66d90e711 --- /dev/null +++ b/querydsl-apt/src/test/java/com/mysema/query/domain/FileAttachment.java @@ -0,0 +1,54 @@ +package com.mysema.query.domain; + +import java.io.File; + +import javax.persistence.Embeddable; +import javax.persistence.Transient; + +@Embeddable +@Deprecated +public class FileAttachment { + + @Transient + Object model; + @Transient + String name; + @Transient + File f; + public String filename; + + public FileAttachment() { + } + + FileAttachment(Object model, String name) { + this.model = model; + this.name = name; + } + + public File get() { + return f; + } + + public void set(File file) { + f = file; + } + + public boolean isSet() { + return f != null || get() != null; + } + + public static File getStore() { + return null; + } + + @Deprecated + public boolean exists() { + return isSet(); + } + + @Deprecated + public long length() { + return get().length(); + } + +} \ No newline at end of file diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/GenericExporter.java b/querydsl-core/src/main/java/com/mysema/query/codegen/GenericExporter.java index 7626d9ce4..8a517c016 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/GenericExporter.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/GenericExporter.java @@ -289,13 +289,15 @@ public class GenericExporter { // getters if (handleMethods) { for (Method method : cl.getDeclaredMethods()) { + String name = method.getName(); if (method.getParameterTypes().length == 0 - && (method.getName().startsWith("get") || method.getName().startsWith("is"))) { + && ((name.startsWith("get") && name.length() > 3) + || (name.startsWith("is") && name.length() > 2))) { String propertyName; - if (method.getName().startsWith("get")) { - propertyName = BeanUtils.uncapitalize(method.getName().substring(3)); + if (name.startsWith("get")) { + propertyName = BeanUtils.uncapitalize(name.substring(3)); } else { - propertyName = BeanUtils.uncapitalize(method.getName().substring(2)); + propertyName = BeanUtils.uncapitalize(name.substring(2)); } if (handled.contains(propertyName)) { continue;