alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

package org.netbeans.modules.tasklist.javadoc;

import org.openide.src.ElementFormat;
import org.openide.src.JavaDoc;
import org.openide.src.JavaDocSupport;
import org.openide.src.JavaDocTag;
import org.openide.src.MethodElement;
import org.openide.src.SourceException;
import org.openide.src.Type;
import org.openide.util.NbBundle;
import org.netbeans.modules.tasklist.javadoc.ext.JavaTagNames;

public class AutoCommenterMethod extends AutoCommenterConstructor {
    private static final ElementFormat nameFormat = new ElementFormat( "{m} {r} {n} ( {p} )" ); // NOI18N

    private static final String[] NOT_PERMITTED_TAGS = {
        JavaTagNames.TAG_AUTHOR,
        JavaTagNames.TAG_SERIAL,
        JavaTagNames.TAG_SERIALFIELD,
        JavaTagNames.TAG_VERSION
    };

    public AutoCommenterMethod( MethodElement element ) {
        super( element );
    }

    JavaDoc getJavaDoc() {
        return ((MethodElement)srcElement).getJavaDoc();
    }

    String typeToString() {
        return "method"; // NOI18N
    }

    String[] getNotPermittedTags() {
        return NOT_PERMITTED_TAGS;
    }

    boolean elementTagsOk() {
        boolean superOk = super.elementTagsOk();
        boolean retOk = checkReturnType( false );
        return !superOk ? false : retOk;
    }

    private boolean checkReturnType( boolean checkOnly ) {

        boolean retOk = true;

        Type ret = ((MethodElement)srcElement).getReturn();
        JavaDocTag[] retTags = ((MethodElement)srcElement).getJavaDoc().getTags( JavaTagNames.TAG_RETURN );

        if ( ret == Type.VOID && retTags.length > 0 ) {
            if ( checkOnly ) {
                return false;
            }
            errorList.add(NbBundle.getMessage(AutoCommenter.class, "ERR_ReturnForVoid" ) );  //NOI18N
            resolutionList.add(NbBundle.getMessage(AutoCommenter.class, "FIX_ReturnForVoid" ) );  //NOI18N
            retOk = false;
        }
        else if ( ret != Type.VOID && retTags.length <= 0 ) {
            if ( checkOnly ) {
                return false;
            }
            errorList.add(  NbBundle.getMessage(AutoCommenter.class, "ERR_NoReturn") );  //NOI18N
            resolutionList.add(NbBundle.getMessage(AutoCommenter.class, "FIX_NoReturn") );  //NOI18N
            retOk = false;
        } else if ( ret != Type.VOID && retTags.length > 1 ) {
            if ( checkOnly) {
                return false;
            }
            errorList.add( NbBundle.getMessage(AutoCommenter.class, "ERR_DuplicatedReturn") );   //NOI18N
            resolutionList.add(NbBundle.getMessage(AutoCommenter.class, "FIX_DuplicatedReturn") );   //NOI18N
            retOk = false;
        }

        return retOk;
    }


    boolean isCorrectable() {

        if ( super.isCorrectable() )
            return true;

        return !checkReturnType( true );
    }

    void autoCorrect() throws SourceException {
        JavaDoc jdTemp = JavaDocSupport.createMethodJavaDoc( getJavaDoc().getRawText() );
        super.autoCorrect( jdTemp );

        if (!checkReturnType( true ) ) {
            if ( ((MethodElement)srcElement).getReturn() != Type.VOID ) {
                jdTemp.changeTags(
                    new JavaDocTag[] { JavaDocSupport.createTag( JavaTagNames.TAG_RETURN, "" ) }, // NOI18N
                    JavaDoc.ADD );
            }
            else {
                JavaDocTag toRemove[] = jdTemp.getTags( JavaTagNames.TAG_RETURN );

                jdTemp.changeTags( toRemove, JavaDoc.REMOVE );
            }
        }

        getJavaDoc().setRawText( jdTemp.getRawText() );

    }

    ElementFormat getNameFormat () {
        return nameFormat;
    }
}

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.