0N/A/*
1041N/A * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
553N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
553N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
553N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
553N/A * or visit www.oracle.com if you need additional information or have any
553N/A * questions.
0N/A */
0N/A
0N/Apackage com.sun.tools.javadoc;
0N/A
0N/Aimport com.sun.javadoc.*;
0N/A
0N/A/**
0N/A * Represents a @throws or @exception documentation tag.
0N/A * Parses and holds the exception name and exception comment.
0N/A * The exception name my be the name of a type variable.
0N/A * Note: @exception is a backwards compatible synonymy for @throws.
0N/A *
0N/A * @author Robert Field
0N/A * @author Atul M Dambalkar
0N/A * @see ExecutableMemberDocImpl#throwsTags()
0N/A *
0N/A */
0N/Aclass ThrowsTagImpl extends TagImpl implements ThrowsTag {
0N/A
0N/A private final String exceptionName;
0N/A private final String exceptionComment;
0N/A
1041N/A /**
1041N/A * Cached inline tags.
1041N/A */
1041N/A private Tag[] inlineTags;
1041N/A
0N/A ThrowsTagImpl(DocImpl holder, String name, String text) {
0N/A super(holder, name, text);
0N/A String[] sa = divideAtWhite();
0N/A exceptionName = sa[0];
0N/A exceptionComment = sa[1];
0N/A }
0N/A
0N/A /**
0N/A * Return the exception name.
0N/A */
0N/A public String exceptionName() {
0N/A return exceptionName;
0N/A }
0N/A
0N/A /**
0N/A * Return the exception comment.
0N/A */
0N/A public String exceptionComment() {
0N/A return exceptionComment;
0N/A }
0N/A
0N/A /**
0N/A * Return the exception as a ClassDocImpl.
0N/A */
0N/A public ClassDoc exception() {
0N/A ClassDocImpl exceptionClass;
0N/A if (!(holder instanceof ExecutableMemberDoc)) {
0N/A exceptionClass = null;
0N/A } else {
0N/A ExecutableMemberDocImpl emd = (ExecutableMemberDocImpl)holder;
0N/A ClassDocImpl con = (ClassDocImpl)emd.containingClass();
0N/A exceptionClass = (ClassDocImpl)con.findClass(exceptionName);
0N/A }
0N/A return exceptionClass;
0N/A }
0N/A
0N/A /**
0N/A * Return the type that represents the exception.
0N/A * This may be a <code>ClassDoc</code> or a <code>TypeVariable</code>.
0N/A */
0N/A public Type exceptionType() {
0N/A //###(gj) TypeVariable not yet supported.
0N/A return exception();
0N/A }
0N/A
0N/A
0N/A /**
0N/A * Return the kind of this tag. Always "@throws" for instances
0N/A * of ThrowsTagImpl.
0N/A */
1041N/A @Override
0N/A public String kind() {
0N/A return "@throws";
0N/A }
0N/A
0N/A /**
0N/A * For the exception comment with embedded @link tags return the array of
0N/A * TagImpls consisting of SeeTagImpl(s) and text containing TagImpl(s).
0N/A *
0N/A * @return TagImpl[] Array of tags with inline SeeTagImpls.
0N/A * @see TagImpl#inlineTagImpls()
0N/A * @see ParamTagImpl#inlineTagImpls()
0N/A */
1041N/A @Override
0N/A public Tag[] inlineTags() {
1041N/A if (inlineTags == null) {
1041N/A inlineTags = Comment.getInlineTags(holder, exceptionComment());
1041N/A }
1041N/A return inlineTags;
0N/A }
0N/A}