123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /* -*- 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.doclets.standard;
-
- import org.aspectj.ajdoc.AdviceDoc;
- import org.aspectj.ajdoc.IntroducedDoc;
-
- import com.sun.javadoc.ClassDoc;
- import com.sun.javadoc.ExecutableMemberDoc;
- import com.sun.javadoc.ProgramElementDoc;
-
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Set;
-
- public abstract class ExecutableMemberSubWriter extends AbstractSubWriter {
- public ExecutableMemberSubWriter
- (com.sun.tools.doclets.standard.SubWriterHolderWriter writer,
- ClassDoc classdoc)
- {
- super(writer, classdoc);
- }
-
- public ExecutableMemberSubWriter
- (com.sun.tools.doclets.standard.SubWriterHolderWriter writer)
- {
- super(writer);
- }
-
- protected String where(ProgramElementDoc member) {
- ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
- return emd.name() + emd.signature();
- }
-
- protected String label(ExecutableMemberDoc emd) {
- return emd.qualifiedName() + emd.flatSignature();
- }
-
- public void printIntroducedSummaryLink(ClassDoc cd,
- ProgramElementDoc member) {
- ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
- writer.printClassLink(cd, where(emd), emd.name(), false);
- }
-
- public void printCrosscuts(ClassDoc cd, ProgramElementDoc member) {
- org.aspectj.ajdoc.ExecutableMemberDoc emd =
- (org.aspectj.ajdoc.ExecutableMemberDoc)member;
-
- IntroducedDoc intro = emd.introduced();
- if (intro != null) {
- writer.dt();
- writer.boldText("doclet.Introduced_from");
- writer.dd();
- org.aspectj.ajdoc.MemberDoc otherMember =
- (org.aspectj.ajdoc.MemberDoc)intro.member();
- String name = where(otherMember);
- ClassDoc containing = intro.containingClass();
- writer.printClassLink(containing, name,
- containing.typeName(), false);
- }
-
- AdviceDoc[] advice = emd.advice();
- if (advice.length > 0) {
- writer.boldText("doclet.Crosscut_by");
- Set set = new HashSet();
- for (int i = 0; i < advice.length; i++) {
- set.add(advice[i]);
- }
- List list = new ArrayList(set);
- Collections.sort(list);
- for (Iterator i = list.iterator(); i.hasNext();) {
- writer.dd();
- writer.code();
- AdviceDoc ad = (AdviceDoc)i.next();
- writer.printClassLink(ad.containingClass(),
- AdviceSubWriter.getWhere
- (ad.containingClass(), ad),
- label(ad));
- print(" in ");
- writer.printClassLink(ad.containingClass());
- writer.codeEnd();
- print('.');
- }
- }
- }
-
- public void printSummaryCrosscuts(ClassDoc cd,
- ProgramElementDoc member) {
- Set cds = new HashSet();
- org.aspectj.ajdoc.ExecutableMemberDoc emd =
- (org.aspectj.ajdoc.ExecutableMemberDoc)member;
- AdviceDoc[] advice = emd.advice();
- for (int i = 0; i < advice.length; i++) {
- cds.add(advice[i].containingClass());
- }
- if (cds.size() > 0) {
- writer.boldText("doclet.Advised_by");
- List list = new ArrayList(cds);
- Collections.sort(list);
- for (Iterator i = list.iterator(); i.hasNext();) {
- print(' ');
- ClassDoc cdoc = (ClassDoc)i.next();
- writer.printClassLink(cdoc, "advice_detail", cdoc.name());
- if (i.hasNext()) print(",");
- }
- }
- }
-
- public boolean hasCrosscuts(ClassDoc classDoc,
- ProgramElementDoc member) {
- org.aspectj.ajdoc.ExecutableMemberDoc emd =
- (org.aspectj.ajdoc.ExecutableMemberDoc)member;
- return emd.introduced() != null || emd.advice().length > 0;
- }
- }
-
-
|