use of com.sun.javadoc.ThrowsTag in project h2database by h2database.
the class Doclet method writeMethodDetails.
private void writeMethodDetails(PrintWriter writer, ClassDoc clazz, ExecutableMemberDoc method, String signature) {
String name = method.name();
if (skipMethod(method)) {
return;
}
Parameter[] params = method.parameters();
StatementBuilder buff = new StatementBuilder();
buff.append('(');
int i = 0;
for (Parameter p : params) {
boolean isVarArgs = method.isVarArgs() && i++ == params.length - 1;
buff.appendExceptFirst(", ");
buff.append(getTypeName(false, isVarArgs, p.type()));
buff.append(' ');
buff.append(p.name());
}
buff.append(')');
ClassDoc[] exceptions = method.thrownExceptions();
if (exceptions.length > 0) {
buff.append(" throws ");
buff.resetCount();
for (ClassDoc ex : exceptions) {
buff.appendExceptFirst(", ");
buff.append(ex.typeName());
}
}
if (isDeprecated(method)) {
name = "<span class=\"deprecated\">" + name + "</span>";
}
writer.println("<a id=\"" + signature + "\" href=\"#" + signature + "\">" + name + "</a>" + buff.toString());
boolean hasComment = method.commentText() != null && method.commentText().trim().length() != 0;
writer.println("<div class=\"methodText\">" + formatText(method.commentText()) + "</div>");
ParamTag[] paramTags = method.paramTags();
ThrowsTag[] throwsTags = method.throwsTags();
boolean hasThrowsTag = throwsTags != null && throwsTags.length > 0;
if (paramTags.length != params.length) {
if (hasComment && !method.commentText().startsWith("[")) {
// [Not supported] and such are not problematic
addError("Undocumented parameter(s) (" + getLink(clazz, method.position().line()) + ") " + name + " documented: " + paramTags.length + " params: " + params.length);
}
}
for (int j = 0; j < paramTags.length; j++) {
String paramName = paramTags[j].parameterName();
String comment = paramTags[j].parameterComment();
if (comment.trim().length() == 0) {
addError("Undocumented parameter (" + getLink(clazz, method.position().line()) + ") " + name + " " + paramName);
}
String p = paramName + " - " + comment;
if (j == 0) {
writer.println("<div class=\"itemTitle\">Parameters:</div>");
}
writer.println("<div class=\"item\">" + p + "</div>");
}
Tag[] returnTags = method.tags("return");
Type returnType = getReturnType(method);
if (returnTags != null && returnTags.length > 0) {
writer.println("<div class=\"itemTitle\">Returns:</div>");
String returnComment = returnTags[0].text();
if (returnComment.trim().length() == 0) {
addError("Undocumented return value (" + getLink(clazz, method.position().line()) + ") " + name);
}
writer.println("<div class=\"item\">" + returnComment + "</div>");
} else if (returnType != null && !returnType.toString().equals("void")) {
if (hasComment && !method.commentText().startsWith("[") && !hasThrowsTag) {
// [Not supported] and such are not problematic
// also not problematic are methods that always throw an
// exception
addError("Undocumented return value (" + getLink(clazz, method.position().line()) + ") " + name + " " + getReturnType(method));
}
}
if (hasThrowsTag) {
writer.println("<div class=\"itemTitle\">Throws:</div>");
for (ThrowsTag tag : throwsTags) {
String p = tag.exceptionName();
String c = tag.exceptionComment();
if (c.length() > 0) {
p += " - " + c;
}
writer.println("<div class=\"item\">" + p + "</div>");
}
}
}