use of com.sun.javadoc.ProgramElementDoc in project abstools by abstools.
the class SequenceTaglet method getPathToJavadocDestination.
private String getPathToJavadocDestination(Tag tag) throws SequenceTagletException {
PackageDoc pdoc = null;
if (tag.holder() instanceof PackageDoc) {
pdoc = (PackageDoc) tag.holder();
} else {
ProgramElementDoc pedoc = (ProgramElementDoc) tag.holder();
pdoc = pedoc.containingPackage();
}
if (pdoc.allClasses() == null || pdoc.allClasses().length == 0) {
throw new SequenceTagletException("Cowardly refusing to generate a sequence diagram for an empty package", null);
}
String qualifiedName = pdoc.allClasses()[0].qualifiedName();
String path = "";
for (int i = 0; i < qualifiedName.length(); i++) {
if (qualifiedName.charAt(i) == '.') {
path += "../";
}
}
return path;
}
use of com.sun.javadoc.ProgramElementDoc in project markdown-doclet by Abnaxos.
the class UmlTagRenderer method render.
@Override
public void render(Tag tag, StringBuilder target, MarkdownDoclet doclet) {
if (config == null) {
if (doclet.getOptions().getPlantUmlConfigFile() != null) {
try {
config = Collections.singletonList(Files.toString(doclet.getOptions().getPlantUmlConfigFile(), doclet.getOptions().getEncoding()));
} catch (IOException e) {
doclet.printError("Error loading PlantUML configuration file " + doclet.getOptions().getPlantUmlConfigFile() + ": " + e.getLocalizedMessage());
}
} else {
config = Collections.emptyList();
}
}
String packageName;
if (tag.holder() instanceof ProgramElementDoc) {
packageName = ((ProgramElementDoc) tag.holder()).containingPackage().name();
} else if (tag.holder() instanceof PackageDoc) {
packageName = ((PackageDoc) (tag.holder())).name();
} else if (tag.holder() instanceof RootDoc) {
packageName = null;
} else {
doclet.printError(tag.position(), "Cannot handle tag for holder " + tag.holder());
return;
}
String source = tag.text().trim();
int pos = CharMatcher.WHITESPACE.indexIn(source);
if (pos < 0) {
doclet.printError(tag.position(), "Invalid @startuml tag: Expected filename and PlantUML source");
return;
}
String fileName = source.substring(0, pos);
source = "@startuml " + fileName + "\n" + source.substring(pos).trim() + "\n@enduml";
File outputFile;
if (packageName == null) {
outputFile = doclet.getOptions().getDestinationDir();
} else {
outputFile = new File(doclet.getOptions().getDestinationDir(), packageName.replace(".", File.separator));
}
outputFile.mkdirs();
outputFile = new File(outputFile, fileName.replace("/", File.separator));
doclet.printNotice("Generating UML diagram " + outputFile);
// render
SourceStringReader reader = new SourceStringReader(new Defines(), source, config);
try {
reader.generateImage(outputFile);
} catch (IOException e) {
doclet.printError(tag.position(), "Error generating UML image " + outputFile + ": " + e.getLocalizedMessage());
}
}
Aggregations