Search in sources :

Example 1 with ThrowsTag

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>");
        }
    }
}
Also used : ParamTag(com.sun.javadoc.ParamTag) ThrowsTag(com.sun.javadoc.ThrowsTag) Type(com.sun.javadoc.Type) StatementBuilder(org.h2.util.StatementBuilder) Parameter(com.sun.javadoc.Parameter) Tag(com.sun.javadoc.Tag) ParamTag(com.sun.javadoc.ParamTag) ThrowsTag(com.sun.javadoc.ThrowsTag) ClassDoc(com.sun.javadoc.ClassDoc)

Aggregations

ClassDoc (com.sun.javadoc.ClassDoc)1 ParamTag (com.sun.javadoc.ParamTag)1 Parameter (com.sun.javadoc.Parameter)1 Tag (com.sun.javadoc.Tag)1 ThrowsTag (com.sun.javadoc.ThrowsTag)1 Type (com.sun.javadoc.Type)1 StatementBuilder (org.h2.util.StatementBuilder)1