From 0dcf66b79c8fb336b37f633dd5e2c37d319370ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 1 Jun 2009 08:57:54 +0000 Subject: [PATCH] --- ....sun.mirror.apt.AnnotationProcessorFactory | 1 + .../java/com/mysema/query/apt/APTUtils.java | 30 ------ .../query/apt/general/package-info.java | 11 --- .../query/apt/{ => jdk5}/APTFactory.java | 31 +++--- .../query/apt/{ => jdk5}/Constants.java | 2 +- .../apt/{general => jdk5}/DTOVisitor.java | 4 +- .../apt/{general => jdk5}/EntityVisitor.java | 2 +- .../apt/{general => jdk5}/JPAProcessor.java | 10 +- .../{general => jdk5}/MirrorAPITypeModel.java | 95 ++++++++++--------- .../apt/{general => jdk5}/Processor.java | 5 +- .../com/mysema/query/apt/package-info.java | 11 --- ....sun.mirror.apt.AnnotationProcessorFactory | 1 - 12 files changed, 82 insertions(+), 121 deletions(-) create mode 100644 querydsl-apt-jdk5/etc/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory delete mode 100644 querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTUtils.java delete mode 100644 querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/package-info.java rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{ => jdk5}/APTFactory.java (71%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{ => jdk5}/Constants.java (92%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{general => jdk5}/DTOVisitor.java (93%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{general => jdk5}/EntityVisitor.java (96%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{general => jdk5}/JPAProcessor.java (84%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{general => jdk5}/MirrorAPITypeModel.java (79%) rename querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/{general => jdk5}/Processor.java (93%) delete mode 100644 querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/package-info.java delete mode 100644 querydsl-apt-jdk5/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory diff --git a/querydsl-apt-jdk5/etc/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory b/querydsl-apt-jdk5/etc/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory new file mode 100644 index 000000000..0b6c90195 --- /dev/null +++ b/querydsl-apt-jdk5/etc/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory @@ -0,0 +1 @@ +com.mysema.query.apt.jdk5.APTFactory \ No newline at end of file diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTUtils.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTUtils.java deleted file mode 100644 index 27f131499..000000000 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTUtils.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2008 Mysema Ltd. - * All rights reserved. - * - */ -package com.mysema.query.apt; - -import java.util.Map; - -/** - * APUtils provides utilities for APT code generation in Querydsl - * - * @author tiwe - * @version $Id$ - */ -public class APTUtils { - - public static String getString(Map options, String key, String defaultValue) { - String prefix = "-A" + key + "="; - for (Map.Entry entry : options.entrySet()) { - if (entry.getKey().startsWith(prefix)) { - return entry.getKey().substring(prefix.length()); - } else if (entry.getKey().equals(key)) { - return entry.getValue(); - } - } - return defaultValue; - } - -} diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/package-info.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/package-info.java deleted file mode 100644 index ca2b195f1..000000000 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/package-info.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) 2009 Mysema Ltd. - * All rights reserved. - * - */ - -/** - * APT (JDK5 Mirror API) implementation classes - */ -package com.mysema.query.apt.general; - diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTFactory.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/APTFactory.java similarity index 71% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTFactory.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/APTFactory.java index 31533bc4a..adaf760f8 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/APTFactory.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/APTFactory.java @@ -3,24 +3,21 @@ * All rights reserved. * */ -package com.mysema.query.apt; +package com.mysema.query.apt.jdk5; -import static com.mysema.query.apt.APTUtils.getString; -import static com.mysema.query.apt.Constants.JDO_ENTITY; -import static com.mysema.query.apt.Constants.JPA_EMBEDDABLE; -import static com.mysema.query.apt.Constants.JPA_ENTITY; -import static com.mysema.query.apt.Constants.JPA_SUPERCLASS; -import static com.mysema.query.apt.Constants.QD_DTO; -import static com.mysema.query.apt.Constants.QD_ENTITY; +import static com.mysema.query.apt.jdk5.Constants.JDO_ENTITY; +import static com.mysema.query.apt.jdk5.Constants.JPA_EMBEDDABLE; +import static com.mysema.query.apt.jdk5.Constants.JPA_ENTITY; +import static com.mysema.query.apt.jdk5.Constants.JPA_SUPERCLASS; +import static com.mysema.query.apt.jdk5.Constants.QD_DTO; +import static com.mysema.query.apt.jdk5.Constants.QD_ENTITY; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.Map; import java.util.Set; -import com.mysema.query.apt.general.EntityVisitor; -import com.mysema.query.apt.general.JPAProcessor; -import com.mysema.query.apt.general.Processor; import com.sun.mirror.apt.AnnotationProcessor; import com.sun.mirror.apt.AnnotationProcessorEnvironment; import com.sun.mirror.apt.AnnotationProcessorFactory; @@ -87,5 +84,17 @@ public class APTFactory implements AnnotationProcessorFactory { throw new IllegalArgumentException("Unknown profile " + profile); } } + + public static String getString(Map options, String key, String defaultValue) { + String prefix = "-A" + key + "="; + for (Map.Entry entry : options.entrySet()) { + if (entry.getKey().startsWith(prefix)) { + return entry.getKey().substring(prefix.length()); + } else if (entry.getKey().equals(key)) { + return entry.getValue(); + } + } + return defaultValue; + } } \ No newline at end of file diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/Constants.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Constants.java similarity index 92% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/Constants.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Constants.java index 40a098a45..86fd6ae25 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/Constants.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Constants.java @@ -3,7 +3,7 @@ * All rights reserved. * */ -package com.mysema.query.apt; +package com.mysema.query.apt.jdk5; import com.mysema.query.annotations.DTO; import com.mysema.query.annotations.Entity; diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DTOVisitor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/DTOVisitor.java similarity index 93% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DTOVisitor.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/DTOVisitor.java index 767b531ec..75d8f70f8 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/DTOVisitor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/DTOVisitor.java @@ -3,7 +3,7 @@ * All rights reserved. * */ -package com.mysema.query.apt.general; +package com.mysema.query.apt.jdk5; import java.util.ArrayList; import java.util.List; @@ -46,7 +46,7 @@ public class DTOVisitor extends SimpleDeclarationVisitor { .size()); for (ParameterDeclaration pa : d.getParameters()) { String name = pa.getSimpleName(); - String typeName = MirrorAPITypeModel.get(pa.getType()).getFullName(); + String typeName = MirrorAPITypeModel.get(pa.getType()).getName(); parameters.add(new ParameterModel(name, typeName)); } last.addConstructor(new ConstructorModel(parameters)); diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/EntityVisitor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/EntityVisitor.java similarity index 96% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/EntityVisitor.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/EntityVisitor.java index f59226d3c..574c7d04d 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/EntityVisitor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/EntityVisitor.java @@ -3,7 +3,7 @@ * All rights reserved. * */ -package com.mysema.query.apt.general; +package com.mysema.query.apt.jdk5; import java.util.HashMap; import java.util.Map; diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/JPAProcessor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/JPAProcessor.java similarity index 84% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/JPAProcessor.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/JPAProcessor.java index 767080b85..052e56e4e 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/JPAProcessor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/JPAProcessor.java @@ -3,12 +3,12 @@ * All rights reserved. * */ -package com.mysema.query.apt.general; +package com.mysema.query.apt.jdk5; -import static com.mysema.query.apt.Constants.JPA_EMBEDDABLE; -import static com.mysema.query.apt.Constants.JPA_ENTITY; -import static com.mysema.query.apt.Constants.JPA_SUPERCLASS; -import static com.mysema.query.apt.Constants.QD_DTO; +import static com.mysema.query.apt.jdk5.Constants.JPA_EMBEDDABLE; +import static com.mysema.query.apt.jdk5.Constants.JPA_ENTITY; +import static com.mysema.query.apt.jdk5.Constants.JPA_SUPERCLASS; +import static com.mysema.query.apt.jdk5.Constants.QD_DTO; import static com.sun.mirror.util.DeclarationVisitors.NO_OP; import static com.sun.mirror.util.DeclarationVisitors.getDeclarationScanner; diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/MirrorAPITypeModel.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/MirrorAPITypeModel.java similarity index 79% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/MirrorAPITypeModel.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/MirrorAPITypeModel.java index 57736cd10..530b2243b 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/MirrorAPITypeModel.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/MirrorAPITypeModel.java @@ -3,7 +3,7 @@ * All rights reserved. * */ -package com.mysema.query.apt.general; +package com.mysema.query.apt.jdk5; import java.util.HashMap; import java.util.Iterator; @@ -13,6 +13,7 @@ import java.util.Map; import com.mysema.query.annotations.Literal; import com.mysema.query.codegen.FieldType; import com.mysema.query.codegen.TypeModel; +import com.mysema.query.util.TypeUtil; import com.sun.mirror.type.AnnotationType; import com.sun.mirror.type.ArrayType; import com.sun.mirror.type.ClassType; @@ -56,26 +57,32 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { setDefaults(); } + @Override public FieldType getFieldType() { return fieldType; } - public String getFullName() { + @Override + public String getName() { return fullName; } + @Override public String getKeyTypeName() { return keyTypeName; } + @Override public String getPackageName() { return packageName; } + @Override public String getSimpleName() { return simpleName; } + @Override public String getValueTypeName() { return fullName; } @@ -86,7 +93,7 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { } private void handleCollection(MirrorAPITypeModel valueInfo) { - fullName = valueInfo.getFullName(); + fullName = valueInfo.getName(); packageName = valueInfo.getPackageName(); if (valueInfo.fieldType == FieldType.ENTITY) { fieldType = FieldType.ENTITYCOLLECTION; @@ -101,7 +108,7 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { } private void handleList(MirrorAPITypeModel valueInfo) { - fullName = valueInfo.getFullName(); + fullName = valueInfo.getName(); packageName = valueInfo.getPackageName(); if (valueInfo.fieldType == FieldType.ENTITY) { fieldType = FieldType.ENTITYLIST; @@ -117,8 +124,8 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { } private void handleMapInterface(TypeModel keyInfo, MirrorAPITypeModel valueInfo) { - keyTypeName = keyInfo.getFullName(); - fullName = valueInfo.getFullName(); + keyTypeName = keyInfo.getName(); + fullName = valueInfo.getName(); packageName = valueInfo.getPackageName(); if (valueInfo.fieldType == FieldType.ENTITY) { fieldType = FieldType.ENTITYMAP; @@ -146,7 +153,7 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { } private void visitArrayComponentType(MirrorAPITypeModel valueInfo) { - fullName = valueInfo.getFullName(); + fullName = valueInfo.getName(); packageName = valueInfo.getPackageName(); if (valueInfo.fieldType == FieldType.ENTITY) { fieldType = FieldType.ENTITYCOLLECTION; @@ -166,53 +173,52 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { try { fullName = arg0.getDeclaration().getQualifiedName(); packageName = arg0.getDeclaration().getPackage().getQualifiedName(); - - if (fullName.equals(String.class.getName())) { - fieldType = FieldType.STRING; - - } else if (fullName.equals(Boolean.class.getName())) { - fieldType = FieldType.BOOLEAN; - - } else if (fullName.equals(Locale.class.getName()) - || fullName.equals(Class.class.getName()) - || fullName.equals(Object.class.getName())) { - fieldType = FieldType.SIMPLE; - - } else if (isNumericSupported(fullName) - && Number.class.isAssignableFrom(Class.forName(fullName))) { - fieldType = FieldType.NUMERIC; - - } else if (arg0.getDeclaration().getAnnotation(Literal.class) != null) { + + if (arg0.getDeclaration().getAnnotation(Literal.class) != null) { if (Comparable.class.isAssignableFrom(Class.forName(fullName))) { fieldType = FieldType.COMPARABLE; } else { fieldType = FieldType.SIMPLE; } - - } else if (isComparableSupported(fullName) - && Comparable.class.isAssignableFrom(Class - .forName(fullName))) { - fieldType = FieldType.COMPARABLE; - - } else if (asSimpleType(fullName)) { - fieldType = FieldType.SIMPLE; - + }else{ + fieldType = getFieldType(fullName); } + } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } } + + protected FieldType getFieldType(String fullName){ + if (fullName.equals(String.class.getName())) { + return FieldType.STRING; - private boolean isNumericSupported(String fullName) { - return isComparableSupported(fullName); + } else if (fullName.equals(Boolean.class.getName())) { + return FieldType.BOOLEAN; + + } else if (fullName.equals(Locale.class.getName()) + || fullName.equals(Class.class.getName()) + || fullName.equals(Object.class.getName())) { + return FieldType.SIMPLE; + + } else if (isComparableSupported(fullName) + && Number.class.isAssignableFrom(TypeUtil.safeForName(fullName))) { + return FieldType.NUMERIC; + + } else if (isComparableSupported(fullName) + && Comparable.class.isAssignableFrom(TypeUtil.safeForName(fullName))) { + return FieldType.COMPARABLE; + + }else{ + return FieldType.ENTITY; + } + } - + private boolean isComparableSupported(String fullName) { - return fullName.startsWith("java.") || fullName.startsWith("javax.") || fullName.startsWith("org.joda.time"); - } - - private boolean asSimpleType(String fullName) { - return false; + return fullName.startsWith("java.") + || fullName.startsWith("javax.") + || fullName.startsWith("org.joda.time"); } public void visitEnumType(Class type) { @@ -292,9 +298,8 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { @Override public void visitTypeVariable(TypeVariable arg0) { if (!arg0.getDeclaration().getBounds().isEmpty()) { - TypeModel lb = new MirrorAPITypeModel(arg0.getDeclaration().getBounds() - .iterator().next()); - fullName = lb.getFullName(); + TypeModel lb = new MirrorAPITypeModel(arg0.getDeclaration().getBounds().iterator().next()); + fullName = lb.getName(); packageName = lb.getPackageName(); simpleName = lb.getSimpleName(); fieldType = lb.getFieldType(); @@ -305,7 +310,7 @@ class MirrorAPITypeModel extends SimpleTypeVisitor implements TypeModel { public void visitWildcardType(WildcardType arg0) { if (!arg0.getUpperBounds().isEmpty()) { TypeModel lb = new MirrorAPITypeModel(arg0.getUpperBounds().iterator().next()); - fullName = lb.getFullName(); + fullName = lb.getName(); packageName = lb.getPackageName(); simpleName = lb.getSimpleName(); fieldType = lb.getFieldType(); diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/Processor.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Processor.java similarity index 93% rename from querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/Processor.java rename to querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Processor.java index e721e6ad2..32d38d3e8 100644 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/general/Processor.java +++ b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/jdk5/Processor.java @@ -3,9 +3,8 @@ * All rights reserved. * */ -package com.mysema.query.apt.general; +package com.mysema.query.apt.jdk5; -import static com.mysema.query.apt.APTUtils.getString; import static com.sun.mirror.util.DeclarationVisitors.NO_OP; import static com.sun.mirror.util.DeclarationVisitors.getDeclarationScanner; @@ -38,7 +37,7 @@ public abstract class Processor implements AnnotationProcessor { String dtoAnnotation) { this.env = env; this.targetFolder = env.getOptions().get("-s"); - this.namePrefix = getString(env.getOptions(), "namePrefix", "Q"); + this.namePrefix = APTFactory.getString(env.getOptions(), "namePrefix", "Q"); this.superClassAnnotation = superClassAnnotation; this.domainAnnotation = domainAnnotation; this.dtoAnnotation = dtoAnnotation; diff --git a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/package-info.java b/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/package-info.java deleted file mode 100644 index c1a48ac2e..000000000 --- a/querydsl-apt-jdk5/src/main/java/com/mysema/query/apt/package-info.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright (c) 2008 Mysema Ltd. - * All rights reserved. - * - */ - -/** - * APTFactory and related classes - */ -package com.mysema.query.apt; - diff --git a/querydsl-apt-jdk5/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory b/querydsl-apt-jdk5/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory deleted file mode 100644 index d39d5ee7f..000000000 --- a/querydsl-apt-jdk5/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory +++ /dev/null @@ -1 +0,0 @@ -com.mysema.query.apt.APTFactory \ No newline at end of file