package org.jvnet.jaxb2_commons.plugin.jaxbindex;
import org.jvnet.jaxb2_commons.util.CodeModelUtils;
import org.xml.sax.ErrorHandler;
import com.sun.codemodel.fmt.JTextFile;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.outline.ClassOutline;
import com.sun.tools.xjc.outline.Outline;
import com.sun.tools.xjc.outline.PackageOutline;
public class JaxbIndexPlugin extends com.sun.tools.xjc.Plugin {
public String getOptionName() {
return "Xjaxbindex";
}
public String getUsage() {
return "-Xjaxbindex: generate per-package jaxb.index file";
}
@Override
public boolean run(Outline outline, Options opt, ErrorHandler errorHandler) {
for (final PackageOutline packageOutline : outline
.getAllPackageContexts()) {
final StringBuilder sb = new StringBuilder();
for (final ClassOutline classOutline : packageOutline.getClasses()) {
sb.append(CodeModelUtils.getLocalClassName(classOutline.ref));
sb.append("\n");
}
final JTextFile indexFile = new JTextFile("jaxb.index");
indexFile.setContents(sb.toString());
packageOutline._package().addResourceFile(indexFile);
}
return true;
}
}