GSA-483: Bug in GATKdocs for Enums

-- Fixed to no long show constants in enums as constant values in the gatkdocs
This commit is contained in:
Mark DePristo 2012-08-16 16:23:45 -04:00
parent 3253fc216b
commit 6a2862e8bc
1 changed files with 29 additions and 10 deletions

View File

@ -584,20 +584,39 @@ public class GenericDocumentationHandler extends DocumentedGATKFeatureHandler {
* @return
*/
@Requires("enumClass.isEnum()")
private List<Map<String, Object>> docForEnumArgument(Class enumClass) {
ClassDoc doc = this.getDoclet().getClassDocForClass(enumClass);
if (doc == null) // || ! doc.isEnum() )
private List<Map<String, Object>> docForEnumArgument(final Class enumClass) {
final ClassDoc doc = this.getDoclet().getClassDocForClass(enumClass);
if ( doc == null )
throw new RuntimeException("Tried to get docs for enum " + enumClass + " but got null instead");
List<Map<String, Object>> bindings = new ArrayList<Map<String, Object>>();
for (final FieldDoc field : doc.fields(false)) {
bindings.add(
new HashMap<String, Object>() {{
put("name", field.name());
put("summary", field.commentText());
}});
final Set<String> enumConstantFieldNames = enumConstantsNames(enumClass);
final List<Map<String, Object>> bindings = new ArrayList<Map<String, Object>>();
for (final FieldDoc fieldDoc : doc.fields(false)) {
if (enumConstantFieldNames.contains(fieldDoc.name()) )
bindings.add(
new HashMap<String, Object>() {{
put("name", fieldDoc.name());
put("summary", fieldDoc.commentText());
}});
}
return bindings;
}
/**
* Returns the name of the fields that are enum constants according to reflection
*
* @return a non-null set of fields that are enum constants
*/
private Set<String> enumConstantsNames(final Class enumClass) {
final Set<String> enumConstantFieldNames = new HashSet<String>();
for ( final Field field : enumClass.getFields() ) {
if ( field.isEnumConstant() )
enumConstantFieldNames.add(field.getName());
}
return enumConstantFieldNames;
}
}