From 2e92db39d5a64ea6bb876f67dbaad994378f98b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Thu, 28 May 2009 14:09:20 +0000 Subject: [PATCH] --- .../query/apt/general/DefaultDTOVisitor.java | 12 +- .../apt/general/DefaultEntityVisitor.java | 14 +-- .../query/apt/general/GeneralProcessor.java | 23 ++-- .../mysema/query/apt/general/TypeFactory.java | 64 ---------- .../mysema/query/apt/general/TypeHelper.java | 112 +----------------- .../mysema/query/apt/jpa/JPAProcessor.java | 4 +- .../apt/general/GeneralProcessorTest.java | 14 +-- .../query/apt/general/TypeHelperTest.java | 5 +- 8 files changed, 39 insertions(+), 209 deletions(-) delete mode 100644 querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeFactory.java diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultDTOVisitor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultDTOVisitor.java index 590bf02dd..40f4d0c6f 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultDTOVisitor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultDTOVisitor.java @@ -10,9 +10,9 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; -import com.mysema.query.codegen.Constructor; +import com.mysema.query.codegen.ConstructorModel; import com.mysema.query.codegen.Parameter; -import com.mysema.query.codegen.Type; +import com.mysema.query.codegen.ClassModel; import com.sun.mirror.declaration.ClassDeclaration; import com.sun.mirror.declaration.ConstructorDeclaration; import com.sun.mirror.declaration.ParameterDeclaration; @@ -25,9 +25,9 @@ import com.sun.mirror.util.SimpleDeclarationVisitor; * @version $Id$ */ public class DefaultDTOVisitor extends SimpleDeclarationVisitor { - final Set types = new TreeSet(); + final Set types = new TreeSet(); - private Type last; + private ClassModel last; @Override public void visitClassDeclaration(ClassDeclaration d) { @@ -36,7 +36,7 @@ public class DefaultDTOVisitor extends SimpleDeclarationVisitor { String packageName = d.getPackage().getQualifiedName(); String superType = d.getSuperclass().getDeclaration() .getQualifiedName(); - last = new Type(superType, packageName, name, simpleName); + last = new ClassModel(superType, packageName, name, simpleName); types.add(last); } @@ -49,7 +49,7 @@ public class DefaultDTOVisitor extends SimpleDeclarationVisitor { String typeName = new TypeHelper(pa.getType()).getFullName(); parameters.add(new Parameter(name, typeName)); } - last.addConstructor(new Constructor(parameters)); + last.addConstructor(new ConstructorModel(parameters)); } } diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultEntityVisitor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultEntityVisitor.java index 1bbb7f7fe..6fee5e502 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultEntityVisitor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DefaultEntityVisitor.java @@ -10,9 +10,9 @@ import java.util.Map; import org.apache.commons.lang.StringUtils; -import com.mysema.query.codegen.Field; +import com.mysema.query.codegen.FieldModel; import com.mysema.query.codegen.FieldType; -import com.mysema.query.codegen.Type; +import com.mysema.query.codegen.ClassModel; import com.sun.mirror.declaration.ClassDeclaration; import com.sun.mirror.declaration.FieldDeclaration; import com.sun.mirror.declaration.InterfaceDeclaration; @@ -27,9 +27,9 @@ import com.sun.mirror.util.SimpleDeclarationVisitor; * @version $Id$ */ public class DefaultEntityVisitor extends SimpleDeclarationVisitor { - private Type last; + private ClassModel last; - public final Map types = new HashMap(); + public final Map types = new HashMap(); private void addField(String name, TypeHelper typeInfo) { String keyTypeName = typeInfo.getKeyTypeName(); @@ -37,7 +37,7 @@ public class DefaultEntityVisitor extends SimpleDeclarationVisitor { String typePackage = typeInfo.getPackageName(); String simpleTypeName = typeInfo.getSimpleName(); FieldType fieldType = typeInfo.getFieldType(); - last.addField(new Field(name, keyTypeName, typePackage, + last.addField(new FieldModel(name, keyTypeName, typePackage, typeName, simpleTypeName, fieldType)); } @@ -48,7 +48,7 @@ public class DefaultEntityVisitor extends SimpleDeclarationVisitor { String packageName = d.getPackage().getQualifiedName(); String superType = d.getSuperclass().getDeclaration() .getQualifiedName(); - last = new Type(superType, packageName, name, simpleName); + last = new ClassModel(superType, packageName, name, simpleName); types.put(d.getQualifiedName(), last); } @@ -70,7 +70,7 @@ public class DefaultEntityVisitor extends SimpleDeclarationVisitor { superType = d.getSuperinterfaces().iterator().next() .getDeclaration().getQualifiedName(); } - last = new Type(superType, packageName, name, simpleName); + last = new ClassModel(superType, packageName, name, simpleName); types.put(d.getQualifiedName(), last); } diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java index c81cb4ce0..4dc519aaf 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/GeneralProcessor.java @@ -14,9 +14,10 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +import com.mysema.query.codegen.ClassModelFactory; +import com.mysema.query.codegen.ClassModel; import com.mysema.query.codegen.Serializer; import com.mysema.query.codegen.Serializers; -import com.mysema.query.codegen.Type; import com.mysema.query.util.FileUtils; import com.sun.mirror.apt.AnnotationProcessor; import com.sun.mirror.apt.AnnotationProcessorEnvironment; @@ -50,14 +51,14 @@ public abstract class GeneralProcessor implements AnnotationProcessor { this.dtoAnnotation = dtoAnnotation; } - private void addSupertypeFields(Type typeDecl, - Map entityTypes, Map mappedSupertypes) { + private void addSupertypeFields(ClassModel typeDecl, + Map entityTypes, Map mappedSupertypes) { String stype = typeDecl.getSupertypeName(); Class superClass = safeClassForName(stype); if (entityTypes.containsKey(stype) || mappedSupertypes.containsKey(stype)) { while (true) { - Type sdecl; + ClassModel sdecl; if (entityTypes.containsKey(stype)) { sdecl = entityTypes.get(stype); } else if (mappedSupertypes.containsKey(stype)) { @@ -71,7 +72,7 @@ public abstract class GeneralProcessor implements AnnotationProcessor { } else if (superClass != null && !superClass.equals(Object.class)) { // TODO : recursively up ? - Type type = TypeFactory.createType(superClass); + ClassModel type = ClassModelFactory.createType(superClass); // include fields of supertype typeDecl.include(type); } @@ -98,7 +99,7 @@ public abstract class GeneralProcessor implements AnnotationProcessor { // mapped superclass AnnotationTypeDeclaration a; - Map mappedSupertypes; + Map mappedSupertypes; if (superClassAnnotation != null) { a = (AnnotationTypeDeclaration) env .getTypeDeclaration(superClassAnnotation); @@ -108,7 +109,7 @@ public abstract class GeneralProcessor implements AnnotationProcessor { } mappedSupertypes = superclassVisitor.types; } else { - mappedSupertypes = new HashMap(); + mappedSupertypes = new HashMap(); } // domain types @@ -118,9 +119,9 @@ public abstract class GeneralProcessor implements AnnotationProcessor { for (Declaration typeDecl : env.getDeclarationsAnnotatedWith(a)) { typeDecl.accept(getDeclarationScanner(entityVisitor, NO_OP)); } - Map entityTypes = entityVisitor.types; + Map entityTypes = entityVisitor.types; - for (Type typeDecl : entityTypes.values()) { + for (ClassModel typeDecl : entityTypes.values()) { addSupertypeFields(typeDecl, entityTypes, mappedSupertypes); } @@ -157,12 +158,12 @@ public abstract class GeneralProcessor implements AnnotationProcessor { } } - protected void serializeAsOuterClasses(Collection entityTypes, Serializer serializer) { + protected void serializeAsOuterClasses(Collection entityTypes, Serializer serializer) { // populate model Map model = new HashMap(); model.put("pre", namePrefix); - for (Type type : entityTypes) { + for (ClassModel type : entityTypes) { String packageName = type.getPackageName(); model.put("package", packageName); model.put("type", type); diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeFactory.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeFactory.java deleted file mode 100644 index a9306b7aa..000000000 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.apt.general; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.TypeVariable; -import java.lang.reflect.WildcardType; - -import com.mysema.query.codegen.Field; -import com.mysema.query.codegen.Type; - -/** - * TypeFactory provides - * - * @author tiwe - * @version $Id$ - */ -public class TypeFactory { - - public static Type createType(Class clazz) { - Type type = new Type(clazz.getSuperclass().getName(), clazz - .getPackage().getName(), clazz.getName(), clazz.getSimpleName()); - for (java.lang.reflect.Field f : clazz.getDeclaredFields()) { - TypeHelper typeHelper = new TypeHelper(f.getType(), f - .getGenericType()); - Field field = new Field( - f.getName(), - typeHelper.getKeyTypeName(), typeHelper.getPackageName(), - typeHelper.getFullName(), typeHelper.getSimpleName(), - typeHelper.getFieldType()); - type.addField(field); - } - return type; - } - - // TODO : move this to common place - public static Class getTypeParameter(java.lang.reflect.Type type, - int index) { - if (type instanceof ParameterizedType) { - ParameterizedType ptype = (ParameterizedType) type; - java.lang.reflect.Type[] targs = ptype.getActualTypeArguments(); - if (targs[index] instanceof WildcardType) { - WildcardType wildcardType = (WildcardType) targs[index]; - return (Class) wildcardType.getUpperBounds()[0]; - } else if (targs[index] instanceof TypeVariable) { - return (Class) ((TypeVariable) targs[index]) - .getGenericDeclaration(); - } else if (targs[index] instanceof ParameterizedType) { - return (Class) ((ParameterizedType) targs[index]) - .getRawType(); - } else { - try { - return (Class) targs[index]; - } catch (Exception e) { - e.printStackTrace(); - } - } - } - return null; - } -} diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeHelper.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeHelper.java index 29cb58a6e..90baf7ca3 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeHelper.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/TypeHelper.java @@ -5,12 +5,9 @@ */ package com.mysema.query.apt.general; -import java.lang.reflect.Type; import java.util.Iterator; import java.util.Locale; -import org.apache.commons.lang.ClassUtils; - import com.mysema.query.annotations.Literal; import com.mysema.query.codegen.FieldType; import com.sun.mirror.type.AnnotationType; @@ -30,38 +27,12 @@ import com.sun.mirror.util.SimpleTypeVisitor; * @author tiwe * @version $Id$ */ -// TODO : clean this up public class TypeHelper extends SimpleTypeVisitor { private FieldType fieldType; private String simpleName, fullName, packageName = "", keyTypeName; - public TypeHelper(Class cl) { - this(cl, cl); - } - - public TypeHelper(Class cl, Type genericType) { - if (cl == null) { - throw new IllegalArgumentException("cl was null"); - } else if (cl.isArray()) { - visitArrayType(cl); - } else if (cl.isEnum()) { - visitEnumType(cl); - } else if (cl.isPrimitive()) { - visitPrimitiveType(cl); - } else if (cl.isInterface()) { - visitInterfaceType(cl, genericType); - } else { - visitClassType(cl); - } - if (fullName == null) { - fullName = cl.getName(); - } - - setDefaults(); - } - public TypeHelper(TypeMirror type) { type.accept(this); if (fullName == null) { @@ -94,12 +65,6 @@ public class TypeHelper extends SimpleTypeVisitor { return fullName; } - private void handleCollectionInterface(Class type, Type genericType) { - TypeHelper valueInfo = new TypeHelper(TypeFactory.getTypeParameter( - genericType, 0)); - handleCollection(valueInfo); - } - private void handleCollectionInterface(Iterator i) { TypeHelper valueInfo = new TypeHelper(i.next()); handleCollection(valueInfo); @@ -130,20 +95,6 @@ public class TypeHelper extends SimpleTypeVisitor { } } - private void handleListInterface(Class type, Type genericType) { - TypeHelper valueInfo = new TypeHelper(TypeFactory.getTypeParameter( - genericType, 0)); - handleList(valueInfo); - } - - private void handleMapInterface(Class type, Type genericType) { - TypeHelper keyInfo = new TypeHelper(TypeFactory.getTypeParameter( - genericType, 0)); - TypeHelper valueInfo = new TypeHelper(TypeFactory.getTypeParameter( - genericType, 1)); - handleMapInterface(keyInfo, valueInfo); - } - private void handleMapInterface(Iterator i) { TypeHelper keyInfo = new TypeHelper(i.next()); TypeHelper valueInfo = new TypeHelper(i.next()); @@ -195,46 +146,6 @@ public class TypeHelper extends SimpleTypeVisitor { visitArrayComponentType(valueInfo); } - public void visitArrayType(Class clazz) { - TypeHelper valueInfo = new TypeHelper(clazz.getComponentType()); - visitArrayComponentType(valueInfo); - } - - public void visitClassType(Class type) { - fullName = type.getName(); - packageName = type.getPackage().getName(); - - if (type.equals(String.class)) { - fieldType = FieldType.STRING; - - } else if (type.equals(Boolean.class)) { - fieldType = FieldType.BOOLEAN; - - } else if (type.equals(Locale.class) || type.equals(Class.class) - || type.equals(Object.class)) { - fieldType = FieldType.SIMPLE; - - } else if (isNumericSupported(fullName) - && Number.class.isAssignableFrom(type)) { - fieldType = FieldType.NUMERIC; - - } else if (type.getAnnotation(Literal.class) != null) { - if (Comparable.class.isAssignableFrom(type)) { - fieldType = FieldType.COMPARABLE; - } else { - fieldType = FieldType.SIMPLE; - } - - } else if (isComparableSupported(fullName) - && Comparable.class.isAssignableFrom(type)) { - fieldType = FieldType.COMPARABLE; - - } else if (asSimpleType(fullName)) { - fieldType = FieldType.SIMPLE; - - } - } - @Override public void visitClassType(ClassType arg0) { try { @@ -282,8 +193,7 @@ public class TypeHelper extends SimpleTypeVisitor { } private boolean isComparableSupported(String fullName) { - return fullName.startsWith("java.") || fullName.startsWith("javax.") - || fullName.startsWith("org.joda.time"); + return fullName.startsWith("java.") || fullName.startsWith("javax.") || fullName.startsWith("org.joda.time"); } private boolean asSimpleType(String fullName) { @@ -299,19 +209,6 @@ public class TypeHelper extends SimpleTypeVisitor { fieldType = FieldType.SIMPLE; } - public void visitInterfaceType(Class type, Type genericType) { - if (java.util.Map.class.isAssignableFrom(type)) { - handleMapInterface(type, genericType); - - } else if (java.util.List.class.isAssignableFrom(type)) { - handleListInterface(type, genericType); - - } else if (java.util.Collection.class.isAssignableFrom(type)) { - handleCollectionInterface(type, genericType); - } - - } - @Override public void visitInterfaceType(InterfaceType arg0) { Iterator i = arg0.getActualTypeArguments().iterator(); @@ -330,10 +227,6 @@ public class TypeHelper extends SimpleTypeVisitor { } } - public void visitPrimitiveType(Class cl) { - visitPrimitiveWrapperType(ClassUtils.primitiveToWrapper(cl)); - } - @Override public void visitPrimitiveType(PrimitiveType arg0) { Class cl = null; @@ -396,8 +289,7 @@ public class TypeHelper extends SimpleTypeVisitor { @Override public void visitWildcardType(WildcardType arg0) { if (!arg0.getUpperBounds().isEmpty()) { - TypeHelper lb = new TypeHelper(arg0.getUpperBounds().iterator() - .next()); + TypeHelper lb = new TypeHelper(arg0.getUpperBounds().iterator().next()); fullName = lb.getFullName(); packageName = lb.getPackageName(); simpleName = lb.getSimpleName(); diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jpa/JPAProcessor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jpa/JPAProcessor.java index 315e33536..a94564ac6 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jpa/JPAProcessor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jpa/JPAProcessor.java @@ -17,7 +17,7 @@ import java.util.Map; import com.mysema.query.apt.general.DefaultEntityVisitor; import com.mysema.query.apt.general.GeneralProcessor; import com.mysema.query.codegen.Serializers; -import com.mysema.query.codegen.Type; +import com.mysema.query.codegen.ClassModel; import com.sun.mirror.apt.AnnotationProcessorEnvironment; import com.sun.mirror.declaration.AnnotationTypeDeclaration; import com.sun.mirror.declaration.Declaration; @@ -43,7 +43,7 @@ public class JPAProcessor extends GeneralProcessor { typeDecl.accept(getDeclarationScanner(entityVisitor, NO_OP)); } - Map entityTypes = entityVisitor.types; + Map entityTypes = entityVisitor.types; if (entityTypes.isEmpty()) { env.getMessager().printNotice( "No class generation for embeddable types"); diff --git a/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/GeneralProcessorTest.java b/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/GeneralProcessorTest.java index 079cb5b9b..30d8288a9 100644 --- a/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/GeneralProcessorTest.java +++ b/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/GeneralProcessorTest.java @@ -13,12 +13,12 @@ import java.util.Map; import org.junit.Test; -import com.mysema.query.codegen.Constructor; -import com.mysema.query.codegen.Field; +import com.mysema.query.codegen.ConstructorModel; +import com.mysema.query.codegen.FieldModel; import com.mysema.query.codegen.FieldType; import com.mysema.query.codegen.Parameter; import com.mysema.query.codegen.Serializers; -import com.mysema.query.codegen.Type; +import com.mysema.query.codegen.ClassModel; /** * HibernateProcessorTest provides. @@ -28,22 +28,22 @@ import com.mysema.query.codegen.Type; */ public class GeneralProcessorTest { - private Type type; + private ClassModel type; private Writer writer = new StringWriter(); private Map model = new HashMap(); public GeneralProcessorTest() { - type = new Type("com.mysema.query.DomainSuperClass", + type = new ClassModel("com.mysema.query.DomainSuperClass", "com.mysema.query", "com.mysema.query.DomainClass", "DomainClass"); - Field field = new Field("field", null, "java.lang", + FieldModel field = new FieldModel("field", null, "java.lang", "java.lang.String", "String", FieldType.STRING); type.addField(field); Parameter param = new Parameter("name", "java.lang.String"); - type.addConstructor(new Constructor(Collections.singleton(param))); + type.addConstructor(new ConstructorModel(Collections.singleton(param))); } @Test diff --git a/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/TypeHelperTest.java b/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/TypeHelperTest.java index df20dabfb..98ebe1c1a 100644 --- a/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/TypeHelperTest.java +++ b/querydsl-apt-jdk5/src/test/java/com/mysema/query/apt/general/TypeHelperTest.java @@ -15,7 +15,8 @@ import java.util.Set; import org.junit.Test; -import com.mysema.query.codegen.Type; +import com.mysema.query.codegen.ClassModel; +import com.mysema.query.codegen.ClassModelFactory; /** * TypeHelperTest provides @@ -27,7 +28,7 @@ public class TypeHelperTest { @Test public void test() { - Type type = TypeFactory.createType(TestType.class); + ClassModel type = ClassModelFactory.createType(TestType.class); assertEquals(1, type.getEntityMaps().size()); assertEquals(1, type.getSimpleMaps().size()); assertEquals(2, type.getEntityCollections().size());