Example usage for org.eclipse.jdt.core.dom TagElement TAG_EXCEPTION

List of usage examples for org.eclipse.jdt.core.dom TagElement TAG_EXCEPTION

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom TagElement TAG_EXCEPTION.

Prototype

String TAG_EXCEPTION

To view the source code for org.eclipse.jdt.core.dom TagElement TAG_EXCEPTION.

Click Source Link

Document

Standard doc tag name (value ).

Usage

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavaDoc2HTMLTextReader.java

License:Open Source License

private void handleTag(String tag, String tagContent) {

    tagContent = tagContent.trim();// ww w .ja v  a2s  .co m

    if (TagElement.TAG_PARAM.equals(tag))
        fParameters.add(tagContent);
    else if (TagElement.TAG_RETURN.equals(tag))
        fReturn = tagContent;
    else if (TagElement.TAG_EXCEPTION.equals(tag))
        fExceptions.add(tagContent);
    else if (TagElement.TAG_THROWS.equals(tag))
        fExceptions.add(tagContent);
    else if (TagElement.TAG_AUTHOR.equals(tag))
        fAuthors.add(substituteQualification(tagContent));
    else if (TagElement.TAG_SEE.equals(tag))
        fSees.add(substituteQualification(tagContent));
    else if (TagElement.TAG_SINCE.equals(tag))
        fSince.add(substituteQualification(tagContent));
    else if (tagContent != null)
        fRest.add(new Pair(tag, tagContent));
}

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

private void elementToHTML() {
    // After first loop, non-null entries in the following two lists are missing and need to be inherited:
    List<String> typeParameterNames = initTypeParameterNames();
    List<String> parameterNames = initParameterNames();
    List<String> exceptionNames = initExceptionNames();

    TagElement deprecatedTag = null;
    TagElement start = null;/*from w w w  .j  a  v  a 2s  .c  o m*/
    List<TagElement> typeParameters = new ArrayList<>();
    List<TagElement> parameters = new ArrayList<>();
    TagElement returnTag = null;
    List<TagElement> exceptions = new ArrayList<>();
    List<TagElement> versions = new ArrayList<>();
    List<TagElement> authors = new ArrayList<>();
    List<TagElement> sees = new ArrayList<>();
    List<TagElement> since = new ArrayList<>();
    List<TagElement> rest = new ArrayList<>();

    List<TagElement> tags = fJavadoc.tags();
    for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
        TagElement tag = iter.next();
        String tagName = tag.getTagName();
        if (tagName == null) {
            start = tag;

        } else if (TagElement.TAG_PARAM.equals(tagName)) {
            List<? extends ASTNode> fragments = tag.fragments();
            int size = fragments.size();
            if (size > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    int paramIndex = parameterNames.indexOf(name);
                    if (paramIndex != -1) {
                        parameterNames.set(paramIndex, null);
                    }
                    parameters.add(tag);
                } else if (size > 2 && first instanceof TextElement) {
                    String firstText = ((TextElement) first).getText();
                    if ("<".equals(firstText)) { //$NON-NLS-1$
                        Object second = fragments.get(1);
                        Object third = fragments.get(2);
                        if (second instanceof SimpleName && third instanceof TextElement) {
                            String name = ((SimpleName) second).getIdentifier();
                            String thirdText = ((TextElement) third).getText();
                            if (">".equals(thirdText)) { //$NON-NLS-1$
                                int paramIndex = typeParameterNames.indexOf(name);
                                if (paramIndex != -1) {
                                    typeParameterNames.set(paramIndex, null);
                                }
                                typeParameters.add(tag);
                            }
                        }
                    }
                }
            }

        } else if (TagElement.TAG_RETURN.equals(tagName)) {
            if (returnTag == null)
                returnTag = tag; // the Javadoc tool only shows the first return tag

        } else if (TagElement.TAG_EXCEPTION.equals(tagName) || TagElement.TAG_THROWS.equals(tagName)) {
            exceptions.add(tag);
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                    int exceptionIndex = exceptionNames.indexOf(name);
                    if (exceptionIndex != -1) {
                        exceptionNames.set(exceptionIndex, null);
                    }
                }
            }

        } else if (TagElement.TAG_SINCE.equals(tagName)) {
            since.add(tag);
        } else if (TagElement.TAG_VERSION.equals(tagName)) {
            versions.add(tag);
        } else if (TagElement.TAG_AUTHOR.equals(tagName)) {
            authors.add(tag);
        } else if (TagElement.TAG_SEE.equals(tagName)) {
            sees.add(tag);
        } else if (TagElement.TAG_DEPRECATED.equals(tagName)) {
            if (deprecatedTag == null)
                deprecatedTag = tag; // the Javadoc tool only shows the first deprecated tag
        } else {
            rest.add(tag);
        }
    }

    //TODO: @Documented annotations before header
    if (deprecatedTag != null)
        handleDeprecatedTag(deprecatedTag);
    if (start != null)
        handleContentElements(start.fragments());
    else if (fMethod != null) {
        CharSequence inherited = fJavadocLookup.getInheritedMainDescription(fMethod);
        // The Javadoc tool adds "Description copied from class: ..." (only for the main description).
        // We don't bother doing that.
        handleInherited(inherited);
    }

    CharSequence[] typeParameterDescriptions = new CharSequence[typeParameterNames.size()];
    boolean hasInheritedTypeParameters = inheritTypeParameterDescriptions(typeParameterNames,
            typeParameterDescriptions);
    boolean hasTypeParameters = typeParameters.size() > 0 || hasInheritedTypeParameters;

    CharSequence[] parameterDescriptions = new CharSequence[parameterNames.size()];
    boolean hasInheritedParameters = inheritParameterDescriptions(parameterNames, parameterDescriptions);
    boolean hasParameters = parameters.size() > 0 || hasInheritedParameters;

    CharSequence returnDescription = null;
    if (returnTag == null && needsReturnTag())
        returnDescription = fJavadocLookup.getInheritedReturnDescription(fMethod);
    boolean hasReturnTag = returnTag != null || returnDescription != null;

    CharSequence[] exceptionDescriptions = new CharSequence[exceptionNames.size()];
    boolean hasInheritedExceptions = inheritExceptionDescriptions(exceptionNames, exceptionDescriptions);
    boolean hasExceptions = exceptions.size() > 0 || hasInheritedExceptions;

    if (hasParameters || hasTypeParameters || hasReturnTag || hasExceptions || versions.size() > 0
            || authors.size() > 0 || since.size() > 0 || sees.size() > 0 || rest.size() > 0
            || (fBuf.length() > 0 && (parameterDescriptions.length > 0 || exceptionDescriptions.length > 0))) {
        handleSuperMethodReferences();
        fBuf.append(BLOCK_TAG_START);
        handleParameterTags(typeParameters, typeParameterNames, typeParameterDescriptions, true);
        handleParameterTags(parameters, parameterNames, parameterDescriptions, false);
        handleReturnTag(returnTag, returnDescription);
        handleExceptionTags(exceptions, exceptionNames, exceptionDescriptions);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_since_section, since);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_version_section, versions);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_author_section, authors);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_see_section, sees);
        handleBlockTags(rest);
        fBuf.append(BLOCK_TAG_END);

    } else if (fBuf.length() > 0) {
        handleSuperMethodReferences();
    }
}

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

CharSequence getExceptionDescription(String simpleName) {
    if (fMethod != null) {
        if (fExceptionDescriptions == null) {
            fExceptionDescriptions = new HashMap<>();
        } else {/* ww  w. ja  v  a 2s .  c o  m*/
            StringBuffer description = fExceptionDescriptions.get(simpleName);
            if (description != null) {
                return description.length() > 0 ? description : null;
            }
        }

        StringBuffer description = new StringBuffer();
        fExceptionDescriptions.put(simpleName, description);
        fBuf = description;
        fLiteralContent = 0;

        List<TagElement> tags = fJavadoc.tags();
        for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
            TagElement tag = iter.next();
            String tagName = tag.getTagName();
            if (TagElement.TAG_THROWS.equals(tagName) || TagElement.TAG_EXCEPTION.equals(tagName)) {
                List<? extends ASTNode> fragments = tag.fragments();
                if (fragments.size() > 0) {
                    Object first = fragments.get(0);
                    if (first instanceof Name) {
                        String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                        if (name.equals(simpleName)) {
                            if (fragments.size() > 1)
                                handleContentElements(fragments.subList(1, fragments.size()));
                            break;
                        }
                    }
                }
            }
        }

        fBuf = null;
        return description.length() > 0 ? description : null;
    }
    return null;
}

From source file:at.bestsolution.fxide.jdt.text.javadoc.JavadocContentAccess2.java

License:Open Source License

/**
 * Handle {&#64;inheritDoc}./*from  w  ww  . j  a  va2 s .  c om*/
 *
 * @param node the node
 * @return <code>true</code> iff the node was an {&#64;inheritDoc} node and has been handled
 */
private boolean handleInheritDoc(TagElement node) {
    if (!TagElement.TAG_INHERITDOC.equals(node.getTagName()))
        return false;
    try {
        if (fMethod == null)
            return false;

        TagElement blockTag = (TagElement) node.getParent();
        String blockTagName = blockTag.getTagName();

        if (blockTagName == null) {
            CharSequence inherited = fJavadocLookup.getInheritedMainDescription(fMethod);
            return handleInherited(inherited);

        } else if (TagElement.TAG_PARAM.equals(blockTagName)) {
            List<? extends ASTNode> fragments = blockTag.fragments();
            int size = fragments.size();
            if (size > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    String[] parameterNames = fMethod.getParameterNames();
                    for (int i = 0; i < parameterNames.length; i++) {
                        if (name.equals(parameterNames[i])) {
                            CharSequence inherited = fJavadocLookup.getInheritedParamDescription(fMethod, i);
                            return handleInherited(inherited);
                        }
                    }
                } else if (size > 2 && first instanceof TextElement) {
                    String firstText = ((TextElement) first).getText();
                    if ("<".equals(firstText)) { //$NON-NLS-1$
                        Object second = fragments.get(1);
                        Object third = fragments.get(2);
                        if (second instanceof SimpleName && third instanceof TextElement) {
                            String thirdText = ((TextElement) third).getText();
                            if (">".equals(thirdText)) { //$NON-NLS-1$
                                String name = ((SimpleName) second).getIdentifier();
                                ITypeParameter[] typeParameters = fMethod.getTypeParameters();
                                for (int i = 0; i < typeParameters.length; i++) {
                                    ITypeParameter typeParameter = typeParameters[i];
                                    if (name.equals(typeParameter.getElementName())) {
                                        CharSequence inherited = fJavadocLookup
                                                .getInheritedTypeParamDescription(fMethod, i);
                                        return handleInherited(inherited);
                                    }
                                }
                            }
                        }
                    }
                }
            }

        } else if (TagElement.TAG_RETURN.equals(blockTagName)) {
            CharSequence inherited = fJavadocLookup.getInheritedReturnDescription(fMethod);
            return handleInherited(inherited);

        } else if (TagElement.TAG_THROWS.equals(blockTagName)
                || TagElement.TAG_EXCEPTION.equals(blockTagName)) {
            List<? extends ASTNode> fragments = blockTag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                    CharSequence inherited = fJavadocLookup.getInheritedExceptionDescription(fMethod, name);
                    return handleInherited(inherited);
                }
            }
        }
    } catch (JavaModelException e) {
        //TODO
        e.printStackTrace();
    }
    return false;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavadocContentAccess2.java

License:Open Source License

private String toHTML() {
    fBuf = new StringBuffer();
    fLiteralContent = 0;//from   w  w w  .  j a  v a 2 s .  c o  m

    // After first loop, non-null entries in the following two lists are missing and need to be inherited:
    List<String> parameterNames = initParameterNames();
    List<String> exceptionNames = initExceptionNames();

    TagElement deprecatedTag = null;
    TagElement start = null;
    List<TagElement> parameters = new ArrayList<TagElement>();
    TagElement returnTag = null;
    List<TagElement> exceptions = new ArrayList<TagElement>();
    List<TagElement> versions = new ArrayList<TagElement>();
    List<TagElement> authors = new ArrayList<TagElement>();
    List<TagElement> sees = new ArrayList<TagElement>();
    List<TagElement> since = new ArrayList<TagElement>();
    List<TagElement> rest = new ArrayList<TagElement>();

    List<TagElement> tags = fJavadoc.tags();
    for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
        TagElement tag = iter.next();
        String tagName = tag.getTagName();
        if (tagName == null) {
            start = tag;

        } else if (TagElement.TAG_PARAM.equals(tagName)) {
            parameters.add(tag);
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    int paramIndex = parameterNames.indexOf(name);
                    if (paramIndex != -1) {
                        parameterNames.set(paramIndex, null);
                    }
                }
            }

        } else if (TagElement.TAG_RETURN.equals(tagName)) {
            if (returnTag == null)
                returnTag = tag; // the Javadoc tool only shows the first return tag

        } else if (TagElement.TAG_EXCEPTION.equals(tagName) || TagElement.TAG_THROWS.equals(tagName)) {
            exceptions.add(tag);
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                    int exceptionIndex = exceptionNames.indexOf(name);
                    if (exceptionIndex != -1) {
                        exceptionNames.set(exceptionIndex, null);
                    }
                }
            }

        } else if (TagElement.TAG_SINCE.equals(tagName)) {
            since.add(tag);
        } else if (TagElement.TAG_VERSION.equals(tagName)) {
            versions.add(tag);
        } else if (TagElement.TAG_AUTHOR.equals(tagName)) {
            authors.add(tag);
        } else if (TagElement.TAG_SEE.equals(tagName)) {
            sees.add(tag);
        } else if (TagElement.TAG_DEPRECATED.equals(tagName)) {
            if (deprecatedTag == null)
                deprecatedTag = tag; // the Javadoc tool only shows the first deprecated tag
        } else {
            rest.add(tag);
        }
    }

    //TODO: @Documented annotations before header
    if (deprecatedTag != null)
        handleDeprecatedTag(deprecatedTag);
    if (start != null)
        handleContentElements(start.fragments());
    else if (fMethod != null) {
        CharSequence inherited = fJavadocLookup.getInheritedMainDescription(fMethod);
        // The Javadoc tool adds "Description copied from class: ..." (only for the main description).
        // We don't bother doing that.
        handleInherited(inherited);
    }

    CharSequence[] parameterDescriptions = new CharSequence[parameterNames.size()];
    boolean hasInheritedParameters = inheritParameterDescriptions(parameterNames, parameterDescriptions);
    boolean hasParameters = parameters.size() > 0 || hasInheritedParameters;

    CharSequence returnDescription = null;
    if (returnTag == null && needsReturnTag())
        returnDescription = fJavadocLookup.getInheritedReturnDescription(fMethod);
    boolean hasReturnTag = returnTag != null || returnDescription != null;

    CharSequence[] exceptionDescriptions = new CharSequence[exceptionNames.size()];
    boolean hasInheritedExceptions = inheritExceptionDescriptions(exceptionNames, exceptionDescriptions);
    boolean hasExceptions = exceptions.size() > 0 || hasInheritedExceptions;

    if (hasParameters || hasReturnTag || hasExceptions || versions.size() > 0 || authors.size() > 0
            || since.size() > 0 || sees.size() > 0 || rest.size() > 0
            || (fBuf.length() > 0 && (parameterDescriptions.length > 0 || exceptionDescriptions.length > 0))) {
        handleSuperMethodReferences();
        fBuf.append(BLOCK_TAG_START);
        handleParameterTags(parameters, parameterNames, parameterDescriptions);
        handleReturnTag(returnTag, returnDescription);
        handleExceptionTags(exceptions, exceptionNames, exceptionDescriptions);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_since_section, since);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_version_section, versions);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_author_section, authors);
        handleBlockTags(JavaDocMessages.JavaDoc2HTMLTextReader_see_section, sees);
        handleBlockTags(rest);
        fBuf.append(BLOCK_TAG_END);

    } else if (fBuf.length() > 0) {
        handleSuperMethodReferences();
    }

    String result = fBuf.toString();
    fBuf = null;
    return result;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavadocContentAccess2.java

License:Open Source License

CharSequence getExceptionDescription(String simpleName) {
    if (fMethod != null) {
        if (fExceptionDescriptions == null) {
            fExceptionDescriptions = new HashMap<String, StringBuffer>();
        } else {//from  w w  w  .  j a v a2s . c  o m
            StringBuffer description = fExceptionDescriptions.get(simpleName);
            if (description != null) {
                return description.length() > 0 ? description : null;
            }
        }

        StringBuffer description = new StringBuffer();
        fExceptionDescriptions.put(simpleName, description);
        fBuf = description;
        fLiteralContent = 0;

        List<TagElement> tags = fJavadoc.tags();
        for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
            TagElement tag = iter.next();
            String tagName = tag.getTagName();
            if (TagElement.TAG_THROWS.equals(tagName) || TagElement.TAG_EXCEPTION.equals(tagName)) {
                List<? extends ASTNode> fragments = tag.fragments();
                if (fragments.size() > 0) {
                    Object first = fragments.get(0);
                    if (first instanceof Name) {
                        String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                        if (name.equals(simpleName)) {
                            if (fragments.size() > 1)
                                handleContentElements(fragments.subList(1, fragments.size()));
                            break;
                        }
                    }
                }
            }
        }

        fBuf = null;
        return description.length() > 0 ? description : null;
    }
    return null;
}

From source file:com.codenvy.ide.ext.java.server.javadoc.JavadocContentAccess2.java

License:Open Source License

/**
 * Handle {&#64;inheritDoc}./* www  .  j  a va2 s.c  o  m*/
 *
 * @param node
 *         the node
 * @return <code>true</code> iff the node was an {&#64;inheritDoc} node and has been handled
 */
private boolean handleInheritDoc(TagElement node) {
    if (!TagElement.TAG_INHERITDOC.equals(node.getTagName()))
        return false;
    try {
        if (fMethod == null)
            return false;

        TagElement blockTag = (TagElement) node.getParent();
        String blockTagName = blockTag.getTagName();

        if (blockTagName == null) {
            CharSequence inherited = fJavadocLookup.getInheritedMainDescription(fMethod);
            return handleInherited(inherited);

        } else if (TagElement.TAG_PARAM.equals(blockTagName)) {
            List<? extends ASTNode> fragments = blockTag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    String[] parameterNames = fMethod.getParameterNames();
                    for (int i = 0; i < parameterNames.length; i++) {
                        if (name.equals(parameterNames[i])) {
                            CharSequence inherited = fJavadocLookup.getInheritedParamDescription(fMethod, i);
                            return handleInherited(inherited);
                        }
                    }
                }
            }

        } else if (TagElement.TAG_RETURN.equals(blockTagName)) {
            CharSequence inherited = fJavadocLookup.getInheritedReturnDescription(fMethod);
            return handleInherited(inherited);

        } else if (TagElement.TAG_THROWS.equals(blockTagName)
                || TagElement.TAG_EXCEPTION.equals(blockTagName)) {
            List<? extends ASTNode> fragments = blockTag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                    CharSequence inherited = fJavadocLookup.getInheritedExceptionDescription(fMethod, name);
                    return handleInherited(inherited);
                }
            }
        }
    } catch (JavaModelException e) {
        LOG.error(e.getMessage(), e);
    }
    return false;
}

From source file:org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider.java

License:Open Source License

public String computeDocumentation(EObject object) {
    buffer = new StringBuffer();
    context = object;/*from  www  . j a  v  a2s .c o  m*/
    fLiteralContent = 0;
    List<String> parameterNames = initParameterNames();
    Map<String, URI> exceptionNamesToURI = initExceptionNamesToURI();
    addAnnotations(object);
    getDocumentationWithPrefix(object);
    Javadoc javadoc = getJavaDoc();
    if (javadoc == null)
        return buffer.toString();
    TagElement deprecatedTag = null;
    TagElement start = null;
    List<TagElement> parameters = new ArrayList<TagElement>();
    TagElement returnTag = null;
    List<TagElement> exceptions = new ArrayList<TagElement>();
    List<TagElement> versions = new ArrayList<TagElement>();
    List<TagElement> authors = new ArrayList<TagElement>();
    List<TagElement> sees = new ArrayList<TagElement>();
    List<TagElement> since = new ArrayList<TagElement>();
    List<TagElement> rest = new ArrayList<TagElement>();
    @SuppressWarnings("unchecked")
    List<TagElement> tags = javadoc.tags();
    for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
        TagElement tag = iter.next();
        String tagName = tag.getTagName();
        if (tagName == null) {
            start = tag;
        } else if (TagElement.TAG_PARAM.equals(tagName)) {
            parameters.add(tag);
            @SuppressWarnings("unchecked")
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    int paramIndex = parameterNames.indexOf(name);
                    if (paramIndex != -1) {
                        parameterNames.set(paramIndex, null);
                    }
                }
            }
        } else if (TagElement.TAG_RETURN.equals(tagName)) {
            if (returnTag == null)
                returnTag = tag; // the Javadoc tool only shows the first return tag
        } else if (TagElement.TAG_EXCEPTION.equals(tagName) || TagElement.TAG_THROWS.equals(tagName)) {
            exceptions.add(tag);
            @SuppressWarnings("unchecked")
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    @SuppressWarnings("restriction")
                    String name = org.eclipse.jdt.internal.corext.dom.ASTNodes
                            .getSimpleNameIdentifier((Name) first);
                    if (exceptionNamesToURI.containsKey(name)) {
                        exceptionNamesToURI.put(name, null);
                    }
                }
            }
        } else if (TagElement.TAG_SINCE.equals(tagName)) {
            since.add(tag);
        } else if (TagElement.TAG_VERSION.equals(tagName)) {
            versions.add(tag);
        } else if (TagElement.TAG_AUTHOR.equals(tagName)) {
            authors.add(tag);
        } else if (TagElement.TAG_SEE.equals(tagName)) {
            sees.add(tag);
        } else if (TagElement.TAG_DEPRECATED.equals(tagName)) {
            if (deprecatedTag == null)
                deprecatedTag = tag; // the Javadoc tool only shows the first deprecated tag
        } else {
            rest.add(tag);
        }
    }

    boolean hasParameters = parameters.size() > 0;
    boolean hasReturnTag = returnTag != null;
    boolean hasExceptions = exceptions.size() > 0;
    if (deprecatedTag != null)
        handleDeprecatedTag(deprecatedTag);
    if (start != null) {
        @SuppressWarnings("unchecked")
        List<ASTNode> fragments = start.fragments();
        handleContentElements(fragments);
    }

    if (hasParameters || hasReturnTag || hasExceptions || versions.size() > 0 || authors.size() > 0
            || since.size() > 0 || sees.size() > 0 || rest.size() > 0
            || (buffer.length() > 0) && (parameterNames.size() > 0 || exceptionNamesToURI.size() > 0)) {
        handleSuperMethodReferences(object);
        buffer.append(BLOCK_TAG_START);
        handleParameters(object, parameters, parameterNames);
        handleReturnTag(returnTag);
        handleExceptionTags(exceptions, exceptionNamesToURI);
        handleBlockTags("Since:", since);
        handleBlockTags("Version:", versions);
        handleBlockTags("Author:", authors);
        handleBlockTags("See Also:", sees);
        handleBlockTags(rest);
        buffer.append(BLOCK_TAG_END);
    } else if (buffer.length() > 0) {
        handleSuperMethodReferences(object);
    }
    String result = buffer.toString();
    buffer = null;
    rawJavaDoc = null;
    context = null;
    return result;
}

From source file:org.summer.dsl.xbase.ui.hover.XbaseHoverDocumentationProvider.java

License:Open Source License

public String computeDocumentation(EObject object) {
    buffer = new StringBuffer();
    context = object;// w ww.  j a v a2s  .c om
    fLiteralContent = 0;
    List<String> parameterNames = initParameterNames();
    Map<String, URI> exceptionNamesToURI = initExceptionNamesToURI();
    addAnnotations(object);
    getDocumentationWithPrefix(object);
    Javadoc javadoc = getJavaDoc();
    if (javadoc == null)
        return "";
    TagElement deprecatedTag = null;
    TagElement start = null;
    List<TagElement> parameters = new ArrayList<TagElement>();
    TagElement returnTag = null;
    List<TagElement> exceptions = new ArrayList<TagElement>();
    List<TagElement> versions = new ArrayList<TagElement>();
    List<TagElement> authors = new ArrayList<TagElement>();
    List<TagElement> sees = new ArrayList<TagElement>();
    List<TagElement> since = new ArrayList<TagElement>();
    List<TagElement> rest = new ArrayList<TagElement>();
    @SuppressWarnings("unchecked")
    List<TagElement> tags = javadoc.tags();
    for (Iterator<TagElement> iter = tags.iterator(); iter.hasNext();) {
        TagElement tag = iter.next();
        String tagName = tag.getTagName();
        if (tagName == null) {
            start = tag;
        } else if (TagElement.TAG_PARAM.equals(tagName)) {
            parameters.add(tag);
            @SuppressWarnings("unchecked")
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof SimpleName) {
                    String name = ((SimpleName) first).getIdentifier();
                    int paramIndex = parameterNames.indexOf(name);
                    if (paramIndex != -1) {
                        parameterNames.set(paramIndex, null);
                    }
                }
            }
        } else if (TagElement.TAG_RETURN.equals(tagName)) {
            if (returnTag == null)
                returnTag = tag; // the Javadoc tool only shows the first return tag
        } else if (TagElement.TAG_EXCEPTION.equals(tagName) || TagElement.TAG_THROWS.equals(tagName)) {
            exceptions.add(tag);
            @SuppressWarnings("unchecked")
            List<? extends ASTNode> fragments = tag.fragments();
            if (fragments.size() > 0) {
                Object first = fragments.get(0);
                if (first instanceof Name) {
                    String name = ASTNodes.getSimpleNameIdentifier((Name) first);
                    if (exceptionNamesToURI.containsKey(name)) {
                        exceptionNamesToURI.put(name, null);
                    }
                }
            }
        } else if (TagElement.TAG_SINCE.equals(tagName)) {
            since.add(tag);
        } else if (TagElement.TAG_VERSION.equals(tagName)) {
            versions.add(tag);
        } else if (TagElement.TAG_AUTHOR.equals(tagName)) {
            authors.add(tag);
        } else if (TagElement.TAG_SEE.equals(tagName)) {
            sees.add(tag);
        } else if (TagElement.TAG_DEPRECATED.equals(tagName)) {
            if (deprecatedTag == null)
                deprecatedTag = tag; // the Javadoc tool only shows the first deprecated tag
        } else {
            rest.add(tag);
        }
    }

    boolean hasParameters = parameters.size() > 0;
    boolean hasReturnTag = returnTag != null;
    boolean hasExceptions = exceptions.size() > 0;
    if (deprecatedTag != null)
        handleDeprecatedTag(deprecatedTag);
    if (start != null) {
        @SuppressWarnings("unchecked")
        List<ASTNode> fragments = start.fragments();
        handleContentElements(fragments);
    }

    if (hasParameters || hasReturnTag || hasExceptions || versions.size() > 0 || authors.size() > 0
            || since.size() > 0 || sees.size() > 0 || rest.size() > 0
            || (buffer.length() > 0) && (parameterNames.size() > 0 || exceptionNamesToURI.size() > 0)) {
        handleSuperMethodReferences(object);
        buffer.append(BLOCK_TAG_START);
        handleParameters(object, parameters, parameterNames);
        handleReturnTag(returnTag);
        handleExceptionTags(exceptions, exceptionNamesToURI);
        handleBlockTags("Since:", since);
        handleBlockTags("Version:", versions);
        handleBlockTags("Author:", authors);
        handleBlockTags("See Also:", sees);
        handleBlockTags(rest);
        buffer.append(BLOCK_TAG_END);
    } else if (buffer.length() > 0) {
        handleSuperMethodReferences(object);
    }
    String result = buffer.toString();
    buffer = null;
    rawJavaDoc = null;
    context = null;
    return result;
}