#820371 : improved handling of parametrized types

This commit is contained in:
Timo Westkämper 2011-08-08 10:02:58 +03:00
parent e5550a55ff
commit 9300f59f7e
2 changed files with 16 additions and 1 deletions

View File

@ -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<String> 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<? extends Annotation> entityAnn : entityAnnotations){

View File

@ -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");