blob: 735a2cda0ab4cff7a32873ecad11ceba96d01397 [file] [log] [blame]
package org.kohsuke.args4j.apt;
import java.util.*;
/**
* Reorders the annotation according to their canonical name
*/
public class AnnotationVisitorReorderer implements AnnotationVisitor {
private AnnotationVisitor target;
private List<OptionWithUsage> arguments = new ArrayList<OptionWithUsage>();
public AnnotationVisitorReorderer(AnnotationVisitor target) {
this.target = target;
}
public void onOption(String name, String usage) {
throw new UnsupportedOperationException("method not used");
}
public void onOption(OptionWithUsage optionWithUsage) {
arguments.add(optionWithUsage);
}
public void done() {
reorderArguments();
for (OptionWithUsage argument : arguments) {
target.onOption(argument);
}
target.done();
}
private void reorderArguments() {
Collections.sort(arguments, new NaturalOrderOptionsComparator());
}
private static class NaturalOrderOptionsComparator implements Comparator<OptionWithUsage> {
public int compare(OptionWithUsage o1, OptionWithUsage o2) {
return o1.option.name().compareTo(o2.option.name());
}
}
}