From 9300f59f7e325de0fe1af9bcf3d12850fa434ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 8 Aug 2011 10:02:58 +0300 Subject: [PATCH] #820371 : improved handling of parametrized types --- .../com/mysema/query/apt/ExtendedTypeFactory.java | 11 ++++++++++- .../query/apt/QuerydslAnnotationProcessorTest.java | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java index b3c52e7ab..85703966d 100644 --- a/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java +++ b/querydsl-apt/src/main/java/com/mysema/query/apt/ExtendedTypeFactory.java @@ -7,6 +7,7 @@ package com.mysema.query.apt; import java.lang.annotation.Annotation; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -30,6 +31,7 @@ import javax.lang.model.type.TypeMirror; import javax.lang.model.type.TypeVariable; import javax.lang.model.type.WildcardType; +import com.mysema.codegen.model.ClassType; import com.mysema.codegen.model.SimpleType; import com.mysema.codegen.model.Type; import com.mysema.codegen.model.TypeCategory; @@ -89,6 +91,8 @@ public final class ExtendedTypeFactory { this.comparableType = env.getElementUtils().getTypeElement(Comparable.class.getName()); this.typeMappings = typeMappings; this.queryTypeFactory = queryTypeFactory; + +// typeCache.put(Arrays.asList(Comparable.class.getName(), "?"), new ClassType(Comparable.class, (Type)null)); } private void appendToKey(List key, DeclaredType t, boolean deep) { @@ -204,7 +208,12 @@ public final class ExtendedTypeFactory { typeElement = (TypeElement)env.getTypeUtils().asElement(type); } - Type type = createType(typeElement, typeCategory, declaredType.getTypeArguments(), deep); + Type type; + if (typeElement.asType() instanceof DeclaredType && declaredType.getTypeArguments().isEmpty()) { + type = createType(typeElement, typeCategory, ((DeclaredType)typeElement.asType()).getTypeArguments(), deep); + } else { + type = createType(typeElement, typeCategory, declaredType.getTypeArguments(), deep); + } // entity type for (Class entityAnn : entityAnnotations){ diff --git a/querydsl-apt/src/test/java/com/mysema/query/apt/QuerydslAnnotationProcessorTest.java b/querydsl-apt/src/test/java/com/mysema/query/apt/QuerydslAnnotationProcessorTest.java index 55a32621e..87878fbf8 100644 --- a/querydsl-apt/src/test/java/com/mysema/query/apt/QuerydslAnnotationProcessorTest.java +++ b/querydsl-apt/src/test/java/com/mysema/query/apt/QuerydslAnnotationProcessorTest.java @@ -65,6 +65,12 @@ public class QuerydslAnnotationProcessorTest extends AbstractProcessorTest{ process(QuerydslAnnotationProcessor.class, Collections.singletonList(path),"genericSignature"); } + @Test + public void ProcessAbstractProperties2Test() throws IOException { + String path = new File("src/test/java/com/mysema/query/domain/AbstractProperties2Test.java").getPath(); + process(QuerydslAnnotationProcessor.class, Collections.singletonList(path),"abstractProperties"); + } + @Test public void QuerydslAnnotationProcessor() throws IOException { process(QuerydslAnnotationProcessor.class, CLASSES, "querydsl");