From fbe6845cd905651481c4dc58a86750fde00f4f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Mon, 8 Aug 2011 11:20:59 +0300 Subject: [PATCH] improved import handling for code generation --- .../query/codegen/EmbeddableSerializer.java | 11 +++++--- .../query/codegen/EntitySerializer.java | 25 +++++++++++++++++-- .../mysema/query/codegen/TypeMappings.java | 2 +- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java index d6151b2d2..be27abb57 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EmbeddableSerializer.java @@ -114,11 +114,16 @@ public final class EmbeddableSerializer extends EntitySerializer { List packages = new ArrayList(); packages.add(PathMetadata.class.getPackage()); packages.add(SimplePath.class.getPackage()); - if ((model.hasLists() && config.useListAccessors()) - || !model.getDelegates().isEmpty() - || (model.hasMaps() && config.useMapAccessors())){ +// if ((model.hasLists() && config.useListAccessors()) +// || !model.getDelegates().isEmpty() +// || (model.hasMaps() && config.useMapAccessors())){ +// packages.add(ComparableExpression.class.getPackage()); +// } + + if (isImportExprPackage(model)) { packages.add(ComparableExpression.class.getPackage()); } + writer.imports(packages.toArray(new Package[packages.size()])); writer.imports(Generated.class); diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java index bc1915902..1bde45138 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/EntitySerializer.java @@ -363,7 +363,8 @@ public class EntitySerializer implements Serializer{ List packages = new ArrayList(); packages.add(PathMetadata.class.getPackage()); packages.add(SimplePath.class.getPackage()); - if (!model.getConstructors().isEmpty() || !model.getDelegates().isEmpty()){ + + if (isImportExprPackage(model)) { packages.add(ComparableExpression.class.getPackage()); } @@ -371,7 +372,27 @@ public class EntitySerializer implements Serializer{ writer.imports(Generated.class); } - + + protected boolean isImportExprPackage(EntityType model) { + if (!model.getConstructors().isEmpty() || !model.getDelegates().isEmpty()){ + boolean importExprPackage = false; + for (Constructor c : model.getConstructors()) { + for (Parameter cp : c.getParameters()) { + importExprPackage |= cp.getType().getPackageName().equals(ComparableExpression.class.getPackage().getName()); + } + } + for (Delegate d : model.getDelegates()) { + for (Parameter dp : d.getParameters()) { + importExprPackage |= dp.getType().getPackageName().equals(ComparableExpression.class.getPackage().getName()); + } + } + return importExprPackage; + + } else { + return false; + } + } + protected void introDelegatePackages(CodeWriter writer, EntityType model) throws IOException { Set packages = new HashSet(); for (Delegate delegate : model.getDelegates()){ diff --git a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java index 9297b5fee..f449ea1b1 100644 --- a/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java +++ b/querydsl-core/src/main/java/com/mysema/query/codegen/TypeMappings.java @@ -139,7 +139,7 @@ public final class TypeMappings { } } - + @SuppressWarnings("unchecked") public void register(TypeCategory category, @Nullable Class expr,