/* gnu.classpath.tools.gjdoc.ThrowsTagImpl
Copyright (C) 2001 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
package gnu.classpath.tools.gjdoc;
import com.sun.javadoc.*;
import java.util.*;
import java.text.*;
public class ThrowsTagImpl extends AbstractTagImpl implements ThrowsTag {
private ClassDoc exception;
private String exceptionName;
private String exceptionComment;
public ThrowsTagImpl(String text,
ClassDocImpl contextClass,
MemberDocImpl contextMember) {
super(text);
char[] textarr=text.toCharArray();
int i=0;
for (; i<textarr.length; ++i) {
if (!Parser.isWhitespace(textarr[i])) break;
}
for (; i<textarr.length; ++i) {
if (Parser.isWhitespace(textarr[i])) {
this.exceptionName=new String(textarr,0,i).trim();
this.exceptionComment=new String(textarr,i,textarr.length-i).trim();
break;
}
}
if (null != exceptionName) {
if (contextClass==null) {
this.exception=Main.getRootDoc().classNamed(exceptionName);
}
else {
this.exception=contextClass.findClass(exceptionName);
}
if (exception!=null)
this.exceptionName=exception.qualifiedName();
else {
if (text.trim().startsWith("<")) {
Main.getRootDoc().printWarning("Expected exception name but got '"+text+"' in class "+contextClass.getClassName());
}
}
}
else {
Main.getRootDoc().printWarning("@throws tag in comment for " + contextClass.qualifiedName() + "." + contextMember.name() + " doesn't specify an exception.");
}
if (this.exceptionComment!=null) {
setBody(this.exceptionComment, contextClass, contextMember);
}
}
public ClassDoc exception() {
return exception;
}
public String exceptionName() {
return exceptionName;
}
public String exceptionComment() {
return exceptionComment;
}
public String kind() {
return "@throws";
}
}