1 22 package org.aspectj.tools.ajdoc; 23 24 import org.aspectj.compiler.base.ast.ConstructorDec; 25 import org.aspectj.compiler.base.ast.Dec; 26 import org.aspectj.compiler.base.ast.FieldDec; 27 import org.aspectj.compiler.base.ast.MethodDec; 28 import org.aspectj.compiler.base.ast.Type; 29 import org.aspectj.compiler.base.ast.TypeDec; 30 import org.aspectj.compiler.crosscuts.ast.PointcutDec; 31 32 import java.util.ArrayList ; 33 34 41 public class FilteredDecList extends ArrayList { 42 final protected AccessChecker filter ; 43 final protected ClassDocImpl classDocImpl ; 44 final protected Type declaringType ; 45 46 58 FilteredDecList(AccessChecker filter, ClassDocImpl classDocImpl) { 59 this.filter = (null != filter ? filter 60 : AccessChecker.PUBLIC); 61 this.classDocImpl = classDocImpl; 62 TypeDec td = (null == classDocImpl? null 63 : classDocImpl.typeDec()); 64 this.declaringType = (null == td? null : td.getType()); 65 } 66 67 72 protected final boolean sameType(Dec dec) { 73 Type other = (null == dec ? null : dec.getDeclaringType()); 74 boolean result = ((null != dec) 75 && ((declaringType == null) 76 || declaringType.equals(other))) ; 77 85 return result; 86 } 87 88 93 protected void checkDec(Dec dec) { 94 if (null == dec) throw new IllegalArgumentException ("null dec"); 95 } 96 97 105 public boolean add(ClassDocImpl outer, TypeDec dec) { 106 checkDec(dec); 107 if (null == outer) throw new IllegalArgumentException ("null outer"); 108 if ((filter.canAccess(outer.typeDec()) && filter.canAccess(dec))) { 109 ClassDocImpl doc = ClassDocImpl.getInstance(outer, dec); 110 if (null != doc) { 111 doc.setIncluded(true); 112 return add((Object ) doc); 113 } 114 } 115 denied(outer, dec); 116 return false; 117 } 118 119 127 public boolean add(TypeDec dec) { 128 checkDec(dec); 129 if (filter.canAccess(dec)) { 130 ClassDocImpl doc = ClassDocImpl.getInstance(dec); 131 if (null != doc) { 132 doc.setIncluded(true); 133 return add((Object ) doc); 134 } 135 } 136 denied(dec); 137 return false; 138 } 139 140 146 public boolean add(MethodDec dec) { 147 checkDec(dec); 148 if (sameType(dec) && filter.canAccess(dec)) { 149 return add((Object ) new MethodDocImpl(classDocImpl, dec)); 150 } 151 denied(dec); 152 return false; 153 } 154 155 161 public boolean add(ConstructorDec dec) { 162 checkDec(dec); 163 if (sameType(dec) && filter.canAccess(dec)) { 164 return add((Object ) new ConstructorDocImpl(classDocImpl, dec)); 165 } 166 denied(dec); 167 return false; 168 } 169 170 176 public boolean add(FieldDec dec) { 177 checkDec(dec); 178 if (sameType(dec) && filter.canAccess(dec)) { 179 return add((Object ) new FieldDocImpl(classDocImpl, dec)); 180 } 181 denied(dec); 182 return false; 183 } 184 185 191 public boolean add(PointcutDec dec) { 192 checkDec(dec); 193 if (sameType(dec) && filter.canAccess(dec)) { 194 return add((Object ) new PointcutDocImpl(classDocImpl, dec)); 195 } 196 denied(dec); 197 return false; 198 } 199 200 206 protected void denied(ClassDocImpl outer, TypeDec dec) { 207 } 209 210 215 protected void denied(Dec dec) { 216 } 218 } 220 | Popular Tags |