private void findReferenced ( ClassDocImpl containingClass ) { if ( where . length ( ) > 0 ) { if ( containingClass != null ) { referencedClass = containingClass . findClass ( where ) ; } else { referencedClass = docenv ( ) . lookupClass ( where ) ; } if ( referencedClass == null && holder ( ) instanceof ProgramElementDoc ) { referencedClass = docenv ( ) . lookupClass ( ( ( ProgramElementDoc ) holder ( ) ) . containingPackage ( ) . name ( ) + "." + where ) ; } if ( referencedClass == null ) { /* may just not be in this run */ // check if it's a package name referencedPackage = docenv ( ) . lookupPackage ( where ) ; return ; } } else { if ( containingClass == null ) { docenv ( ) . warning ( holder , "tag.see.class_not_specified" , name , text ) ; return ; } else { referencedClass = containingClass ; } } where = referencedClass . qualifiedName ( ) ; if ( what == null ) { return ; } else { int paren = what . indexOf ( ' ' ) ; String memName = ( paren >= 0 ? what . substring ( 0 , paren ) : what ) ; String [ ] paramarr ; if ( paren > 0 ) { // has parameter list -- should be method or constructor paramarr = new ParameterParseMachine ( what . substring ( paren , what . length ( ) ) ) . parseParameters ( ) ; if ( paramarr != null ) { referencedMember = findExecutableMember ( memName , paramarr , referencedClass ) ; } else { referencedMember = null ; } } else { // no parameter list -- should be field referencedMember = findExecutableMember ( memName , null , referencedClass ) ; FieldDoc fd = ( ( ClassDocImpl ) referencedClass ) . findField ( memName ) ; // when no args given, prefer fields over methods if ( referencedMember == null || ( fd != null && fd . containingClass ( ) . subclassOf ( referencedMember . containingClass ( ) ) ) ) { referencedMember = fd ; } } if ( referencedMember == null ) { docenv ( ) . warning ( holder , "tag.see.can_not_find_member" , name , what , where ) ; } } }
Find what is referenced by the see also . If possible sets referencedClass and referencedMember .