FileDocCategorySizeDatePackage
MethodFinder.javaAPI DocExample1802Wed Apr 19 11:17:18 BST 2000com.sun.tools.doclets

MethodFinder.java

/*
 * @(#)MethodFinder.java	1.3 00/02/02
 *
 * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * This software is the proprietary information of Sun Microsystems, Inc.  
 * Use is subject to license terms.
 * 
 */

package com.sun.tools.doclets;  

import com.sun.javadoc.*;
import java.lang.*;
import java.util.*;
import java.io.*;

/**
 * This class is useful for searching a method which has documentation 
 * comment and documentation tags. The method is searched in all the 
 * superclasses and interfaces(subsequently super-interfaces also) 
 * recursively.
 */
public abstract class MethodFinder {     

    abstract boolean isCorrectMethod(MethodDoc method);
    
    public MethodDoc search(ClassDoc cd, MethodDoc method) {
        MethodDoc meth = searchInterfaces(cd, method);
        if (meth != null) {
            return meth;
        }
        ClassDoc icd = cd.superclass();        
        if (icd != null) {
            meth = Util.findMethod(icd, method);
            if (meth != null) {
  	        if (isCorrectMethod(meth)) {
                    return meth;
                }
            }
            return search(icd, method);
        }
        return null;
    }

    public MethodDoc searchInterfaces(ClassDoc cd, MethodDoc method) {
        ClassDoc[] iin = cd.interfaces();
        for (int i = 0; i < iin.length; i++) {
            MethodDoc meth = Util.findMethod(iin[i], method);
            if (meth != null) {
	        if (isCorrectMethod(meth)) {
                    return meth;
                }
            }
        }
        for (int i = 0; i < iin.length; i++) {
            MethodDoc meth = searchInterfaces(iin[i], method);
            if (meth != null) {
                return meth;
            }
        }
        return null;
    }
}