1 22 package org.aspectj.tools.doclets.standard; 23 24 import org.aspectj.ajdoc.AdviceDoc; 25 import org.aspectj.ajdoc.AspectDoc; 26 27 import com.sun.javadoc.ClassDoc; 28 import com.sun.javadoc.ProgramElementDoc; 29 import com.sun.tools.doclets.Util; 30 31 import java.util.ArrayList ; 32 import java.util.Collections ; 33 import java.util.Iterator ; 34 import java.util.List ; 35 36 41 public class Statics { 42 43 49 public static String type(ClassDoc cd) { 50 return cd instanceof AspectDoc 51 ? "aspect" : cd.isInterface() 52 ? "interface" : "class"; 53 } 54 55 61 public static String where(ProgramElementDoc member) { 62 return member.name(); 63 } 64 65 71 public static String label(ProgramElementDoc member) { 72 return member.name(); 73 } 74 75 83 public static String where(ClassDoc cd, ProgramElementDoc member) { 84 if (member instanceof AdviceDoc) { 85 return name(cd, (AdviceDoc)member).replace(' ','_').replace('#','-'); 86 } 87 return member.name(); 88 } 89 90 98 public static String label(ClassDoc cd, ProgramElementDoc member) { 99 return name(cd, member); 100 } 101 102 111 public static String name(ClassDoc cd, ProgramElementDoc member) { 112 if (member instanceof AdviceDoc) { 113 return name(cd, (AdviceDoc)member); 114 } 115 return member.name(); 116 } 117 118 126 public static String name(ClassDoc cd, AdviceDoc advice) { 127 String name = advice.name(); 128 int num = 1; 129 for (Iterator i = advice(cd).iterator(); i.hasNext();) { 130 AdviceDoc ad = (AdviceDoc)i.next(); 131 if (ad.equals(advice)) { 132 break; 133 } 134 if (ad.name().equals(name)) { 135 num++; 136 } 137 } 138 return name + " #" + num; 139 } 140 141 148 public static List advice(ClassDoc classdoc) { 149 if (!(classdoc instanceof AspectDoc)) return Collections.EMPTY_LIST; 150 AdviceDoc[] advice = ((AspectDoc)classdoc).advice(); 151 return advice == null ? Collections.EMPTY_LIST : Util.asList(advice); 152 } 153 154 162 public static ClassDoc[] classes(ClassDoc[] arr) { 163 List list = new ArrayList (); 164 for (int i = 0; i < arr.length; i++) { 165 if (!(arr[i] instanceof AspectDoc)) { 166 list.add(arr[i]); 167 } 168 } 169 return (ClassDoc[])list.toArray(new ClassDoc[list.size()]); 170 } 171 172 181 public static List classes(List types) { 182 return types(types, false); 183 } 184 185 194 public static List aspects(List types) { 195 return types(types, true); 196 } 197 198 209 public static List types(List types, boolean wantAspects) { 210 List list = new ArrayList (); 211 for (Iterator i = types.iterator(); i.hasNext();) { 212 ClassDoc cd = (ClassDoc)i.next(); 213 if ((cd instanceof AspectDoc) == wantAspects) { 214 list.add(cd); 215 } 216 } 217 return list; 218 } 219 220 230 public static String getPreQualifiedClassLink 231 (com.sun.tools.doclets.standard.SubWriterHolderWriter writer, 232 ClassDoc cd, 233 String where) { 234 return writer.getPkgName(cd) + writer.getClassLink(cd, where, cd.name()); 235 } 236 237 247 public static void printPreQualifiedClassLink 248 (com.sun.tools.doclets.standard.SubWriterHolderWriter writer, 249 ClassDoc cd, 250 String where) { 251 writer.print(getPreQualifiedClassLink(writer, cd, where)); 252 } 253 } 254 | Popular Tags |