Docs for read filters, the engine, and the UserExceptions.
This commit is contained in:
parent
f0be7348be
commit
28b9432d26
|
|
@ -0,0 +1,52 @@
|
|||
package org.broadinstitute.sting.utils.help;
|
||||
|
||||
import com.sun.javadoc.FieldDoc;
|
||||
import com.sun.javadoc.PackageDoc;
|
||||
import com.sun.javadoc.ProgramElementDoc;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class HelpUtils {
|
||||
protected static boolean implementsInterface(ProgramElementDoc classDoc, Class... interfaceClasses) {
|
||||
for (Class interfaceClass : interfaceClasses)
|
||||
if (assignableToClass(classDoc, interfaceClass, false))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
protected static boolean assignableToClass(ProgramElementDoc classDoc, Class lhsClass, boolean requireConcrete) {
|
||||
try {
|
||||
Class type = getClassForDoc(classDoc);
|
||||
return lhsClass.isAssignableFrom(type) && (!requireConcrete || JVMUtils.isConcrete(type));
|
||||
} catch (Throwable t) {
|
||||
// Ignore errors.
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
protected static Class getClassForDoc(ProgramElementDoc doc) throws ClassNotFoundException {
|
||||
return Class.forName(getClassName(doc));
|
||||
}
|
||||
|
||||
protected static Field getFieldForFieldDoc(FieldDoc fieldDoc) {
|
||||
try {
|
||||
Class clazz = getClassForDoc(fieldDoc.containingClass());
|
||||
return JVMUtils.findField(clazz, fieldDoc.name());
|
||||
} catch (ClassNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reconstitute the class name from the given class JavaDoc object.
|
||||
*
|
||||
* @param doc the Javadoc model for the given class.
|
||||
* @return The (string) class name of the given class.
|
||||
*/
|
||||
protected static String getClassName(ProgramElementDoc doc) {
|
||||
PackageDoc containingPackage = doc.containingPackage();
|
||||
return containingPackage.name().length() > 0 ?
|
||||
String.format("%s.%s", containingPackage.name(), doc.name()) :
|
||||
String.format("%s", doc.name());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue