extended import signature

This commit is contained in:
Timo Westkämper 2010-06-13 15:46:00 +00:00
parent 94f4b51ac7
commit 16d8fe0e1f
5 changed files with 35 additions and 29 deletions

View File

@ -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.<Class<?>>emptySet());
return getName(cl, Collections.singleton("java.lang"), Collections.<String>emptySet());
}
public static String getName(Class<?> cl, Set<Package> packages, Set<Class<?>> classes) {
public static String getName(Class<?> cl, Set<String> packages, Set<String> 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.<Class<?>>emptySet());
return getName(cl, Collections.singleton("java.lang"), Collections.<String>emptySet());
}
public static String getName(Type<?> type, Set<Package> packages, Set<Class<?>> classes){
public static String getName(Type<?> type, Set<String> packages, Set<String> classes){
if (type.getParameters().isEmpty()){
return getName(type.getJavaClass(), packages, classes);
}else{

View File

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

View File

@ -65,9 +65,9 @@ public final class JavaWriter implements Appendable, CodeWriter{
private final Appendable appendable;
private final Set<Class<?>> importedClasses = new HashSet<Class<?>>();
private final Set<String> importedClasses = new HashSet<String>();
private final Set<Package> importedPackages = new HashSet<Package>();
private final Set<String> importedPackages = new HashSet<String>();
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();
}

View File

@ -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());
}

View File

@ -1,3 +1,2 @@
import java.lang.reflect;
import java.util;
import java.lang.reflect.*;
import java.util.*;