diff --git a/src/main/java/com/mysema/codegen/ClassUtils.java b/src/main/java/com/mysema/codegen/ClassUtils.java index b5581dae3..271ee6547 100644 --- a/src/main/java/com/mysema/codegen/ClassUtils.java +++ b/src/main/java/com/mysema/codegen/ClassUtils.java @@ -18,13 +18,13 @@ import java.util.Set; public final class ClassUtils { public static String getName(Class cl){ - return getName(cl, Collections.singleton(Object.class.getPackage()), Collections.>emptySet()); + return getName(cl, Collections.singleton("java.lang"), Collections.emptySet()); } - public static String getName(Class cl, Set packages, Set> classes) { + public static String getName(Class cl, Set packages, Set classes) { if (cl.isArray()) { return getName(cl.getComponentType(), packages, classes) + "[]"; - } else if (cl.getPackage() == null || packages.contains(cl.getPackage()) || classes.contains(cl)) { + } else if (cl.getPackage() == null || packages.contains(cl.getPackage().getName()) || classes.contains(cl.getName())) { return cl.getSimpleName().replace('$', '.'); } else { return cl.getName().replace('$', '.'); @@ -32,10 +32,10 @@ public final class ClassUtils { } public static String getName(Type cl){ - return getName(cl, Collections.singleton(Object.class.getPackage()), Collections.>emptySet()); + return getName(cl, Collections.singleton("java.lang"), Collections.emptySet()); } - public static String getName(Type type, Set packages, Set> classes){ + public static String getName(Type type, Set packages, Set classes){ if (type.getParameters().isEmpty()){ return getName(type.getJavaClass(), packages, classes); }else{ diff --git a/src/main/java/com/mysema/codegen/CodeWriter.java b/src/main/java/com/mysema/codegen/CodeWriter.java index 7557e55f9..71a5ab63e 100644 --- a/src/main/java/com/mysema/codegen/CodeWriter.java +++ b/src/main/java/com/mysema/codegen/CodeWriter.java @@ -51,7 +51,9 @@ public interface CodeWriter extends Appendable{ CodeWriter imports(Package... imports) throws IOException; - CodeWriter imports(Collection imports) throws IOException; + CodeWriter importClasses(String... classes) throws IOException; + + CodeWriter importPackages(String... packages) throws IOException; CodeWriter javadoc(String... lines) throws IOException; diff --git a/src/main/java/com/mysema/codegen/JavaWriter.java b/src/main/java/com/mysema/codegen/JavaWriter.java index 1db6d214a..cd14817f9 100644 --- a/src/main/java/com/mysema/codegen/JavaWriter.java +++ b/src/main/java/com/mysema/codegen/JavaWriter.java @@ -65,9 +65,9 @@ public final class JavaWriter implements Appendable, CodeWriter{ private final Appendable appendable; - private final Set> importedClasses = new HashSet>(); + private final Set importedClasses = new HashSet(); - private final Set importedPackages = new HashSet(); + private final Set importedPackages = new HashSet(); private String indent = ""; @@ -78,7 +78,7 @@ public final class JavaWriter implements Appendable, CodeWriter{ throw new IllegalArgumentException("appendable is null"); } this.appendable = appendable; - this.importedPackages.add(Object.class.getPackage()); + this.importedPackages.add("java.lang"); } @Override @@ -149,7 +149,7 @@ public final class JavaWriter implements Appendable, CodeWriter{ } private JavaWriter appendType(Class type) throws IOException{ - if (importedClasses.contains(type) || importedPackages.contains(type.getPackage())){ + if (importedClasses.contains(type.getName()) || importedPackages.contains(type.getPackage().getName())){ append(type.getSimpleName()); }else{ append(type.getName()); @@ -279,7 +279,7 @@ public final class JavaWriter implements Appendable, CodeWriter{ @Override public JavaWriter imports(Class... imports) throws IOException{ for (Class cl : imports){ - importedClasses.add(cl); + importedClasses.add(cl.getName()); line(IMPORT + cl.getName() + SEMICOLON); } nl(); @@ -287,25 +287,30 @@ public final class JavaWriter implements Appendable, CodeWriter{ } @Override - public CodeWriter imports(Collection imports) throws IOException { - for (Object o : imports){ - if (o instanceof Class){ - imports((Class)o); - }else if (o instanceof Package){ - imports((Package)o); - }else{ - line(IMPORT + o + SEMICOLON); - nl(); - } + public JavaWriter imports(Package... imports) throws IOException { + for (Package p : imports){ + importedPackages.add(p.getName()); + line(IMPORT + p.getName() + ".*;"); } + nl(); + return this; + } + + @Override + public JavaWriter importClasses(String... imports) throws IOException{ + for (String cl : imports){ + importedClasses.add(cl); + line(IMPORT + cl + SEMICOLON); + } + nl(); return this; } @Override - public JavaWriter imports(Package... imports) throws IOException { - for (Package p : imports){ + public JavaWriter importPackages(String... imports) throws IOException { + for (String p : imports){ importedPackages.add(p); - line(IMPORT + p.getName() + ".*;"); + line(IMPORT + p + ".*;"); } nl(); return this; @@ -336,7 +341,7 @@ public final class JavaWriter implements Appendable, CodeWriter{ @Override public JavaWriter packageDecl(String packageName) throws IOException{ - importedPackages.add(Package.getPackage(packageName)); + importedPackages.add(packageName); return line(PACKAGE + packageName + SEMICOLON).nl(); } diff --git a/src/test/java/com/mysema/codegen/JavaWriterTest.java b/src/test/java/com/mysema/codegen/JavaWriterTest.java index 9939e7f78..4d8156779 100644 --- a/src/test/java/com/mysema/codegen/JavaWriterTest.java +++ b/src/test/java/com/mysema/codegen/JavaWriterTest.java @@ -216,7 +216,7 @@ public class JavaWriterTest { @Test public void testImports2() throws IOException{ - writer.imports(Arrays.asList("java.lang.reflect","java.util")); + writer.importPackages("java.lang.reflect","java.util"); match("/testImports2", w.toString()); } diff --git a/src/test/resources/testImports2 b/src/test/resources/testImports2 index 745057cb9..9779566dd 100644 --- a/src/test/resources/testImports2 +++ b/src/test/resources/testImports2 @@ -1,3 +1,2 @@ -import java.lang.reflect; - -import java.util; \ No newline at end of file +import java.lang.reflect.*; +import java.util.*; \ No newline at end of file