123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336 |
- /* -*- Mode: JDE; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- *
- * This file is part of the debugger and core tools for the AspectJ(tm)
- * programming language; see http://aspectj.org
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is AspectJ.
- *
- * The Initial Developer of the Original Code is Xerox Corporation. Portions
- * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
- * All Rights Reserved.
- */
- package org.aspectj.tools.ajdoc;
-
- import com.sun.javadoc.Doc;
- import com.sun.javadoc.ParamTag;
- import com.sun.javadoc.SeeTag;
- import com.sun.javadoc.SerialFieldTag;
- import com.sun.javadoc.Tag;
- import com.sun.javadoc.ThrowsTag;
-
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Locale;
-
- public class Comment {
-
- /** The parsed comment text. */
- private String commentText;
-
- /** The raw comment text. */
- private String rawCommentText;
-
- /** The list of tags. */
- private List tags;
-
- /** The Doc to which the Comment belongs. */
- private Doc doc;
-
- /** The Locale in which this comment resides. */
- private Locale loc;
-
- /** The ErrPrinter used by this Comment to output messages. */
- private ErrPrinter err;
-
- public Comment(Doc doc, String formalComment) {
- this(doc, formalComment, ErrPrinter.instance);
- }
-
- public Comment(Doc doc, String formalComment, ErrPrinter err) {
- this(doc, formalComment, err, Locale.US);
- }
-
- public Comment(Doc doc, String formalComment, ErrPrinter err, Locale loc) {
- this.rawCommentText = Util.rawCommentText(formalComment);
- this.commentText = Util.commentText(rawCommentText);
- this.doc = doc;
- this.err = err;
- this.loc = loc;
- }
-
- /**
- * Returns the parsed comment text.
- *
- * @return the parsed comment text.
- */
- public String commentText() {
- return commentText;
- }
-
- /**
- * Returns the full unprocessed text of the comment.
- *
- * @return the full unprocessed text of the comment.
- */
- public String getRawCommentText() {
- return rawCommentText;
- }
-
- /**
- * Sets the comment text.
- *
- * @param commentText the new comment text.
- */
- public void setCommentText(String commentText) {
- this.commentText = commentText;
- }
-
- /**
- * Returns the raw comment text.
- *
- * @return the raw comment text.
- */
- public String rawCommentText() {
- return rawCommentText;
- }
-
- /**
- * Sets the raw comment text.
- *
- * @param rawCommentText the new raw comment text.
- */
- public void setRawCommentText(String rawCommentText) {
- this.rawCommentText = rawCommentText;
- }
-
- /**
- * Returns all this comment's tags.
- *
- * @return a List of tags whose elements are Comment instances
- */
- public List getTags() {
- if (tags == null) {
- tags = findTags();
- }
- return tags;
- }
-
- /**
- * Sets the Doc for this comment.
- *
- * @param doc the new Doc.
- */
- public void setDoc(Doc doc) {
- this.doc = doc;
- }
-
- /**
- * Returns the Doc for this comment.
- *
- * @return the Doc for this comment.
- */
- public Doc doc() {
- return doc;
- }
-
- /**
- * Sets the locale for this comment.
- *
- * @param loc the new locale for this comment.
- */
- public void setLocale(Locale loc) {
- this.loc = loc;
- }
-
- /**
- * Returns the Locale for this comment.
- *
- * @return the Locale for this comment.
- */
- public Locale locale() {
- return loc;
- }
-
- /**
- * Sets the ErrPrinter for this comment.
- *
- * @param err the new ErrPrinter for this comment.
- */
- public void setErr(ErrPrinter err) {
- this.err = err;
- }
-
- /**
- * Returns the ErrPrinter for this comment.
- *
- * @return the ErrPrinter for this comment.
- */
- public ErrPrinter err() {
- return err;
- }
-
- /**
- * Initializes the Doc, Locale, and ErrPrinter.
- *
- * @param doc the new Doc.
- * @param loc the new Locale.
- * @param err the new ErrPrinter.
- */
- public void init(Doc doc, Locale loc, ErrPrinter err) {
- setDoc(doc);
- setLocale(loc);
- setErr(err);
- }
-
- /**
- * Returns the comment as an array of Tag.
- *
- * @return an array of Tag representing the comment.
- */
- public Tag[] inlineTags() {
- return Util.inlineTags(doc(),
- commentText(),
- locale(),
- err());
- }
-
- /**
- * Returns all tags of the comment whose name equals
- * <code>tagname</code>.
- *
- * @return an array of Tag representing all tags of the
- * comment whose name equals <code>tagname</code>.
- */
- public Tag[] tags(String type) {
- type = type.startsWith("@") ? type : "@"+type;
- List result = new ArrayList();
- Tag tag;
- for (Iterator i = getTags().iterator(); i.hasNext();) {
- if ((tag = (Tag)i.next()).kind().equals(type)) {
- result.add(tag);
- }
- }
- return (Tag[])result.toArray(new Tag[result.size()]);
- }
-
- /**
- * Returns the param tags describing parameters taken
- * by this code.
- *
- * @return an array of ParamTag representing the
- * parameters taken by this code.
- */
- public ParamTag[] paramTags() {
- List result = new ArrayList();
- Tag tag;
- for (Iterator i = getTags().iterator(); i.hasNext();) {
- if ((tag = (Tag)i.next()) instanceof ParamTag) {
- result.add((ParamTag)tag);
- }
- }
- return (ParamTag[])result.toArray(new ParamTag[result.size()]);
- }
-
- /**
- * Returns the see tags of the comment.
- *
- * @return an array of SeeTag representing the
- * see tags of the comment.
- */
- public SeeTag[] seeTags() {
- List result = new ArrayList();
- Tag tag;
- for (Iterator i = getTags().iterator(); i.hasNext();) {
- if ((tag = (Tag)i.next()) instanceof SeeTag) {
- result.add((SeeTag)tag);
- }
- }
- return (SeeTag[])result.toArray(new SeeTag[result.size()]);
- }
-
- /**
- * Returns the serial field tags for this field.
- *
- * @return an array of SerialFieldTag representing the
- * serial field tags for this field.
- */
- public SerialFieldTag[] serialFieldTags() {
- List result = new ArrayList();
- Tag tag;
- for (Iterator i = getTags().iterator(); i.hasNext();) {
- if ((tag = (Tag)i.next()) instanceof SerialFieldTag) {
- result.add((SerialFieldTag)tag);
- }
- }
- return (SerialFieldTag[])result.toArray
- (new SerialFieldTag[result.size()]);
- }
-
- /**
- * Returns the throw tags describing exceptions thrown
- * declared by this code.
- *
- * @return an array of ThrowsTag representing the exception
- * this code declares to throw.
- */
- public ThrowsTag[] throwsTags() {
- List result = new ArrayList();
- Tag tag;
- for (Iterator i = getTags().iterator(); i.hasNext();) {
- if ((tag = (Tag)i.next()) instanceof ThrowsTag) {
- result.add((ThrowsTag)tag);
- }
- }
- return (ThrowsTag[])result.toArray
- (new ThrowsTag[result.size()]);
- }
-
- /**
- * Returns all tags of the comment.
- *
- * @return an array of Tag representing all
- * tags of the comment.
- */
- public Tag[] tags() {
- return (Tag[])getTags().toArray
- (new Tag[getTags().size()]);
- }
-
- /**
- * Returns the Tags that comprise the first
- * sentence of the comment.
- *
- * @return an array of Tag representing the first
- * sentence of the comment.
- */
- public Tag[] firstSentenceTags() {
- return Util.firstSentenceTags(doc(),
- commentText(),
- locale(),
- err());
- }
-
- /**
- * Used to lazily initialize the tags of this comment.
- *
- * @return a List of tags whose elements of Tag instances
- * and each represent a tag in this comment.
- */
- private List findTags() {
- return Util.findTags(doc(),
- rawCommentText(),
- locale(),
- err());
- }
- }
|