Merge "Include class interfaces in jar scanning result"

This commit is contained in:
Shawn Pearce
2014-01-25 00:47:27 +00:00
committed by Gerrit Code Review

View File

@@ -57,17 +57,26 @@ public class JarScanner {
@Override
public ExtensionMetaData apply(ClassData classData) {
return new ExtensionMetaData(classData.className,
classData.annotationValue);
classData.annotationValue, classData.interfaces);
}
};
private static final Function<String, String> TO_JAVA_QUALIFIED_CLASS_NAME =
new Function<String, String>() {
@Override
public String apply(String in) {
return in.replace("/", ".");
}
};
public static class ExtensionMetaData {
private final String className;
private final String annotationValue;
private final Iterable<String> interfaces;
private ExtensionMetaData(String className, String annotationValue) {
private ExtensionMetaData(String className, String annotationValue, Iterable<String> interfaces) {
this.className = className;
this.annotationValue = annotationValue;
this.interfaces = interfaces;
}
public String getAnnotationValue() {
@@ -77,6 +86,10 @@ public class JarScanner {
public String getClassName() {
return className;
}
public Iterable<String> getInterfaces() {
return interfaces;
}
}
public static Map<Class<? extends Annotation>, Iterable<ExtensionMetaData>> scan(
@@ -170,6 +183,7 @@ public class JarScanner {
String className;
String annotationName;
String annotationValue;
Iterable<String> interfaces;
Iterable<String> exports;
private ClassData(Iterable<String> exports) {
@@ -185,6 +199,9 @@ public class JarScanner {
@Override
public void visit(int version, int access, String name, String signature,
String superName, String[] interfaces) {
this.interfaces =
Iterables.transform(Sets.newHashSet(interfaces),
TO_JAVA_QUALIFIED_CLASS_NAME);
this.className = Type.getObjectType(name).getClassName();
this.access = access;
}